Skip to content

Commit b02ef8e

Browse files
author
Matthias Koeppe
committed
bootstrap-conda: Refactor using sage-get-system-packages
1 parent fc9bab5 commit b02ef8e

File tree

1 file changed

+61
-29
lines changed

1 file changed

+61
-29
lines changed

bootstrap-conda

Lines changed: 61 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,45 +11,75 @@ STRIP_COMMENTS="sed s/#.*//;"
1111
shopt -s extglob
1212

1313
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+
2021
for 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
5266
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+
5383
echo >&2 $0:$LINENO: generate conda environment files
5484
for python_version in 3.9 3.10 3.11; do
5585
(
@@ -63,7 +93,7 @@ for python_version in 3.9 3.10 3.11; do
6393
echo " - $pkg"
6494
done
6595
echo " # Packages needed for ./bootstrap"
66-
for pkg in $BOOTSTRAP_PACKAGES; do
96+
for pkg in $BOOTSTRAP_SYSTEM_PACKAGES; do
6797
echo " - $pkg"
6898
done
6999
) > environment-$python_version.yml
@@ -84,23 +114,25 @@ for python_version in 3.9 3.10 3.11; do
84114
) > environment-optional-$python_version.yml
85115

86116
(
87-
(
88-
sed 's/name: sage/name: sage-dev/' src/environment-$python_version.yml
89-
echo " # Additional dev tools"
90-
for pkg in $DEVELOP_SYSTEM_PACKAGES; do
91-
echo " - $pkg"
92-
done
93-
) >&4
94-
(
95-
cat src/environment-$python_version.yml
96-
echo " # optional packages"
97-
for pkg in $OPTIONAL_SYSTEM_PACKAGES $SAGELIB_OPTIONAL_SYSTEM_PACKAGES; do
98-
echo " - $pkg"
99-
done
100-
) >&5
117+
sed 's/name: sage/name: sage-dev/' src/environment-$python_version.yml
118+
echo " # Additional dev tools"
119+
for pkg in $DEVELOP_SYSTEM_PACKAGES; do
120+
echo " - $pkg"
121+
done
122+
) > src/environment-dev-$python_version.yml
123+
124+
(
125+
cat src/environment-$python_version.yml
126+
echo " # optional packages"
127+
for pkg in $OPTIONAL_SYSTEM_PACKAGES $SAGELIB_OPTIONAL_SYSTEM_PACKAGES; do
128+
echo " - $pkg"
129+
done
130+
) > src/environment-optional-$python_version.yml
131+
132+
(
101133
echo >&4 " - pip:"
102134
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
135+
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
104136
PKG_SCRIPTS=build/pkgs/$PKG_BASE
105137
SYSTEM_PACKAGES_FILE=$PKG_SCRIPTS/requirements.txt
106138
if [ ! -f $SYSTEM_PACKAGES_FILE ]; then

0 commit comments

Comments
 (0)