@@ -11,112 +11,151 @@ STRIP_COMMENTS="sed s/#.*//;"
1111shopt -s extglob
1212
1313DEVELOP_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+
2021for PKG_BASE in $( sage-package list --has-file distros/conda.txt --exclude _sagemath) ; do
2122 PKG_SCRIPTS=build/pkgs/$PKG_BASE
2223 SYSTEM_PACKAGES_FILE=$PKG_SCRIPTS /distros/conda.txt
2324 PKG_TYPE=$( cat $PKG_SCRIPTS /type)
2425 PKG_SYSTEM_PACKAGES=$( echo $( ${STRIP_COMMENTS} $SYSTEM_PACKAGES_FILE ) )
25- if [ -n " PKG_SYSTEM_PACKAGES" ]; then
26+ if [ -n " $ PKG_SYSTEM_PACKAGES" ]; then
2627 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
2741 case " $PKG_BASE :$PKG_TYPE " in
2842 * :standard)
29- SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
43+ PACKAGES +=" $PKG_BASE "
3044 ;;
3145 $DEVELOP_SPKG_PATTERN :* )
32- DEVELOP_SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
46+ DEVELOP_PACKAGES +=" $PKG_BASE "
3347 ;;
3448 * )
35- OPTIONAL_SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
49+ OPTIONAL_PACKAGES +=" $PKG_BASE "
3650 ;;
3751 esac
3852 else
3953 case " $PKG_BASE :$PKG_TYPE " in
4054 * :standard)
41- SAGELIB_SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
55+ SAGELIB_PACKAGES +=" $PKG_BASE "
4256 ;;
4357 $DEVELOP_SPKG_PATTERN :* )
44- DEVELOP_SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
58+ DEVELOP_PACKAGES +=" $PKG_BASE "
4559 ;;
4660 * )
47- SAGELIB_OPTIONAL_SYSTEM_PACKAGES +=" $PKG_SYSTEM_PACKAGES "
61+ SAGELIB_OPTIONAL_PACKAGES +=" $PKG_BASE "
4862 ;;
4963 esac
5064 fi
5165 fi
5266done
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+
5383echo >&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
6884
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
76106
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
84114
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
92122
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
121159 done
122- ) 4 >> src/environment-dev.yml 5 >> src/environment-optional.yml
160+ rm -f $f -template.yml
161+ done
0 commit comments