@@ -11,112 +11,151 @@ STRIP_COMMENTS="sed s/#.*//;"
11
11
shopt -s extglob
12
12
13
13
DEVELOP_SPKG_PATTERN=" @(_develop$( for a in $( head -n 1 build/pkgs/_develop/dependencies) ; do echo -n " |" $a ; done) )"
14
- BOOTSTRAP_PACKAGES=$( echo $( ${STRIP_COMMENTS} build/pkgs/_bootstrap/distros/conda.txt) )
15
- SYSTEM_PACKAGES=
16
- OPTIONAL_SYSTEM_PACKAGES=
17
- SAGELIB_SYSTEM_PACKAGES=
18
- SAGELIB_OPTIONAL_SYSTEM_PACKAGES=
19
- DEVELOP_SYSTEM_PACKAGES=
14
+ BOOTSTRAP_PACKAGES=_bootstrap
15
+ PACKAGES=
16
+ OPTIONAL_PACKAGES=
17
+ SAGELIB_PACKAGES=
18
+ SAGELIB_OPTIONAL_PACKAGES=
19
+ DEVELOP_PACKAGES=
20
+
20
21
for PKG_BASE in $( sage-package list --has-file distros/conda.txt --exclude _sagemath) ; do
21
22
PKG_SCRIPTS=build/pkgs/$PKG_BASE
22
23
SYSTEM_PACKAGES_FILE=$PKG_SCRIPTS /distros/conda.txt
23
24
PKG_TYPE=$( cat $PKG_SCRIPTS /type)
24
25
PKG_SYSTEM_PACKAGES=$( echo $( ${STRIP_COMMENTS} $SYSTEM_PACKAGES_FILE ) )
25
- if [ -n " PKG_SYSTEM_PACKAGES" ]; then
26
+ if [ -n " $ PKG_SYSTEM_PACKAGES" ]; then
26
27
if [ -f $PKG_SCRIPTS /spkg-configure.m4 ]; then
28
+ if grep -q SAGE_PYTHON_PACKAGE_CHECK $PKG_SCRIPTS /spkg-configure.m4; then
29
+ # Python package that would need --enable-system-site-packages to be used
30
+ # with the Sage distribution, but we do not recommend that for conda.
31
+ PKG_SAGELIB_ONLY=yes
32
+ else
33
+ PKG_SAGELIB_ONLY=no
34
+ fi
35
+ else
36
+ # No spkg-configure, so the Sage distribution is not able to make use of this package.
37
+ PKG_SAGELIB_ONLY=yes
38
+ fi
39
+ [ -n " $BOOTSTRAP_VERBOSE " ] && echo " $PKG_BASE :$PKG_TYPE :$PKG_SAGELIB_ONLY "
40
+ if [ $PKG_SAGELIB_ONLY = no ]; then
27
41
case " $PKG_BASE :$PKG_TYPE " in
28
42
* :standard)
29
- SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
43
+ PACKAGES +=" $PKG_BASE "
30
44
;;
31
45
$DEVELOP_SPKG_PATTERN :* )
32
- DEVELOP_SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
46
+ DEVELOP_PACKAGES +=" $PKG_BASE "
33
47
;;
34
48
* )
35
- OPTIONAL_SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
49
+ OPTIONAL_PACKAGES +=" $PKG_BASE "
36
50
;;
37
51
esac
38
52
else
39
53
case " $PKG_BASE :$PKG_TYPE " in
40
54
* :standard)
41
- SAGELIB_SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
55
+ SAGELIB_PACKAGES +=" $PKG_BASE "
42
56
;;
43
57
$DEVELOP_SPKG_PATTERN :* )
44
- DEVELOP_SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
58
+ DEVELOP_PACKAGES +=" $PKG_BASE "
45
59
;;
46
60
* )
47
- SAGELIB_OPTIONAL_SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
61
+ SAGELIB_OPTIONAL_PACKAGES +=" $PKG_BASE "
48
62
;;
49
63
esac
50
64
fi
51
65
fi
52
66
done
67
+ unset PKG_SYSTEM_PACKAGES
68
+
69
+ [ -n " $BOOTSTRAP_VERBOSE " ] && echo " ## Collected:" && set | grep PACKAGES=
70
+
71
+ # Translate to system packages
72
+ export ENABLE_SYSTEM_SITE_PACKAGES=yes # Disable filtering in sage-get-system-packages
73
+ SYSTEM_PACKAGES=$( sage-get-system-packages conda $PACKAGES )
74
+ BOOTSTRAP_SYSTEM_PACKAGES=$( sage-get-system-packages conda $BOOTSTRAP_PACKAGES )
75
+ OPTIONAL_SYSTEM_PACKAGES=$( sage-get-system-packages conda $OPTIONAL_PACKAGES )
76
+ SAGELIB_SYSTEM_PACKAGES=$( sage-get-system-packages conda $SAGELIB_PACKAGES )
77
+ SAGELIB_OPTIONAL_SYSTEM_PACKAGES=$( sage-get-system-packages conda $SAGELIB_OPTIONAL_PACKAGES )
78
+ DEVELOP_SYSTEM_PACKAGES=$( sage-get-system-packages conda $DEVELOP_PACKAGES )
79
+ unset ENABLE_SYSTEM_SITE_PACKAGES
80
+
81
+ [ -n " $BOOTSTRAP_VERBOSE " ] && echo " ## Translated to system:" && set | grep SYSTEM_PACKAGES=
82
+
53
83
echo >&2 $0 :$LINENO : generate conda environment files
54
- (
55
- echo " name: sage-build"
56
- echo " channels:"
57
- echo " - conda-forge"
58
- echo " - nodefaults"
59
- echo " dependencies:"
60
- for pkg in $SYSTEM_PACKAGES ; do
61
- echo " - $pkg "
62
- done
63
- echo " # Packages needed for ./bootstrap"
64
- for pkg in $BOOTSTRAP_PACKAGES ; do
65
- echo " - $pkg "
66
- done
67
- ) > environment.yml
68
84
69
- (
70
- sed ' s/name: sage-build/name: sage/' environment.yml
71
- echo " # Additional packages providing all dependencies for the Sage library"
72
- for pkg in $SAGELIB_SYSTEM_PACKAGES ; do
73
- echo " - $pkg "
74
- done
75
- ) > src/environment.yml
85
+ (
86
+ echo " name: sage-build"
87
+ echo " channels:"
88
+ echo " - conda-forge"
89
+ echo " - nodefaults"
90
+ echo " dependencies:"
91
+ for pkg in $SYSTEM_PACKAGES ; do
92
+ echo " - $pkg "
93
+ done
94
+ echo " # Packages needed for ./bootstrap"
95
+ for pkg in $BOOTSTRAP_SYSTEM_PACKAGES ; do
96
+ echo " - $pkg "
97
+ done
98
+ ) > environment-template.yml
99
+ (
100
+ sed ' s/name: sage-build/name: sage/' environment-template.yml
101
+ echo " # Additional packages providing all dependencies for the Sage library"
102
+ for pkg in $SAGELIB_SYSTEM_PACKAGES ; do
103
+ echo " - $pkg "
104
+ done
105
+ ) > src/environment-template.yml
76
106
77
- (
78
- sed ' s/name: sage/name: sage-dev/ ' src/ environment.yml
79
- echo " # Additional dev tools "
80
- for pkg in $DEVELOP_SYSTEM_PACKAGES ; do
81
- echo " - $pkg "
82
- done
83
- ) > src/ environment-dev .yml
107
+ (
108
+ cat environment-template .yml
109
+ echo " # optional packages "
110
+ for pkg in $OPTIONAL_SYSTEM_PACKAGES ; do
111
+ echo " - $pkg "
112
+ done
113
+ ) > environment-optional-template .yml
84
114
85
- (
86
- cat environment.yml
87
- echo " # optional packages "
88
- for pkg in $OPTIONAL_SYSTEM_PACKAGES ; do
89
- echo " - $pkg "
90
- done
91
- ) > environment-optional .yml
115
+ (
116
+ sed ' s/name: sage/name: sage-dev/ ' src/ environment-template .yml
117
+ echo " # Additional dev tools "
118
+ for pkg in $DEVELOP_SYSTEM_PACKAGES ; do
119
+ echo " - $pkg "
120
+ done
121
+ ) > src/ environment-dev-template .yml
92
122
93
- (
94
- cat src/environment.yml
95
- echo " # optional packages"
96
- for pkg in $OPTIONAL_SYSTEM_PACKAGES $SAGELIB_OPTIONAL_SYSTEM_PACKAGES ; do
97
- echo " - $pkg "
98
- done
99
- ) > src/environment-optional.yml
100
- (
101
- echo >&4 " - pip:"
102
- echo >&5 " - pip:"
103
- for PKG_BASE in $(( sage- package list : standard: : optional: -- has- file requirements.txt -- no- file distros/ conda.txt -- no- file src; sage- package list : standard: : optional: -- has- file install- requires.txt -- no- file requirements.txt -- no- file distros/ conda.txt -- no- file src) | sort); do
104
- PKG_SCRIPTS=build/pkgs/$PKG_BASE
105
- SYSTEM_PACKAGES_FILE=$PKG_SCRIPTS /requirements.txt
106
- if [ ! -f $SYSTEM_PACKAGES_FILE ]; then
107
- SYSTEM_PACKAGES_FILE=$PKG_SCRIPTS /install-requires.txt
108
- fi
109
- PKG_TYPE=$(cat $PKG_SCRIPTS /type)
110
- if grep -q SAGERUNTIME $PKG_SCRIPTS /dependencies $PKG_SCRIPTS /dependencies_order_only 2 >/dev/null; then
111
- : # cannot install packages that depend on the Sage library
112
- else
113
- case "$PKG_BASE :$PKG_TYPE " in
114
- $DEVELOP_SPKG_PATTERN :*) FD=4 ;;
115
- *) FD=5 ;;
116
- esac
117
- ${STRIP_COMMENTS} $SYSTEM_PACKAGES_FILE | while read - r line; do
118
- [ -n "$line " ] && echo >&$FD " - $line "
119
- done
120
- fi
123
+ (
124
+ cat src/environment-template.yml
125
+ echo " # optional packages"
126
+ for pkg in $OPTIONAL_SYSTEM_PACKAGES $SAGELIB_OPTIONAL_SYSTEM_PACKAGES ; do
127
+ echo " - $pkg "
128
+ done
129
+ ) > src/environment-optional-template.yml
130
+
131
+ (
132
+ echo >&4 " - pip:"
133
+ echo >&5 " - pip:"
134
+ for PKG_BASE in $( sage-package list :standard: :optional: --has-file requirements.txt --no-file distros/conda.txt --no-file src; sage-package list :standard: :optional: --has-file install-requires.txt --no-file requirements.txt --no-file distros/conda.txt --no-file src) ; do
135
+ PKG_SCRIPTS=build/pkgs/$PKG_BASE
136
+ SYSTEM_PACKAGES_FILE=$PKG_SCRIPTS /requirements.txt
137
+ if [ ! -f $SYSTEM_PACKAGES_FILE ]; then
138
+ SYSTEM_PACKAGES_FILE=$PKG_SCRIPTS /install-requires.txt
139
+ fi
140
+ PKG_TYPE=$( cat $PKG_SCRIPTS /type)
141
+ if grep -q SAGERUNTIME $PKG_SCRIPTS /dependencies $PKG_SCRIPTS /dependencies_order_only 2> /dev/null; then
142
+ : # cannot install packages that depend on the Sage library
143
+ else
144
+ case " $PKG_BASE :$PKG_TYPE " in
145
+ $DEVELOP_SPKG_PATTERN :* ) FD=4;;
146
+ * :standard) FD=" 4 5" ;;
147
+ * ) FD=5;;
148
+ esac
149
+ ${STRIP_COMMENTS} $SYSTEM_PACKAGES_FILE | while read -r line; do
150
+ [ -n " $line " ] && for fd in $FD ; do echo >& $fd " - $line " ; done
151
+ done
152
+ fi
153
+ done
154
+ ) 4>> /dev/null 5>> src/environment-optional-template.yml
155
+
156
+ for f in environment environment-optional src/environment src/environment-optional src/environment-dev; do
157
+ for python_version in 3.9 3.10 3.11; do
158
+ sed -E ' s/^( *- *)python *$/\1python=' $python_version ' /' $f -template.yml > $f -$python_version .yml
121
159
done
122
- ) 4 >> src/environment-dev.yml 5 >> src/environment-optional.yml
160
+ rm -f $f -template.yml
161
+ done
0 commit comments