Skip to content

Commit 4dd1f1a

Browse files
author
Matthias Koeppe
committed
m4/sage_python_package_check.m4: Factor out WITH_SAGE_PYTHONUSERBASE
1 parent 8a3c1ef commit 4dd1f1a

File tree

1 file changed

+30
-25
lines changed

1 file changed

+30
-25
lines changed

m4/sage_python_package_check.m4

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -71,32 +71,19 @@ AC_DEFUN([SAGE_PYTHON_PACKAGE_CHECK], [
7171
)
7272
AC_MSG_CHECKING([for python package $1 ("${SAGE_PKG_VERSPEC}")])
7373
74-
dnl To prevent user-site (pip install --user) packages from being
75-
dnl detected as "system" packages, we poison PYTHONUSERBASE. The
76-
dnl sage-env script also does this at runtime; we mimic that
77-
dnl implementation to ensure that the behaviors at ./configure and
78-
dnl runtime are identical. Beware that (as in sage-env) the poisoning
79-
dnl is skipped if PYTHONUSERBASE is non-empty. In particular, if the
80-
dnl user points PYTHONUSERBASE to any path (even the default), then
81-
dnl his local pip packages will be detected.
82-
PYTHONUSERBASE_SAVED="${PYTHONUSERBASE}"
83-
AS_IF([test -z "${PYTHONUSERBASE}"], [
84-
PYTHONUSERBASE="${HOME}/.sage/local"
74+
WITH_SAGE_PYTHONUSERBASE([dnl
75+
dnl double-quote SAGE_PKG_VERSPEC because platform-specific
76+
dnl dependencies like python_version<'3.11' will have single
77+
dnl quotes in them. (We normalized the quotes earlier with sed.)
78+
AS_IF(
79+
[PYTHONUSERBASE="${PYTHONUSERBASE}" config.venv/bin/python3 -c dnl
80+
"import pkg_resources; dnl
81+
pkg_resources.require(\"${SAGE_PKG_VERSPEC}\".splitlines())" dnl
82+
2>&AS_MESSAGE_LOG_FD],
83+
[AC_MSG_RESULT(yes)],
84+
[AC_MSG_RESULT(no); sage_spkg_install_$1=yes]
85+
)
8586
])
86-
87-
dnl double-quote SAGE_PKG_VERSPEC because platform-specific
88-
dnl dependencies like python_version<'3.11' will have single
89-
dnl quotes in them. (We normalized the quotes earlier with sed.)
90-
AS_IF(
91-
[PYTHONUSERBASE="${PYTHONUSERBASE}" config.venv/bin/python3 -c dnl
92-
"import pkg_resources; dnl
93-
pkg_resources.require(\"${SAGE_PKG_VERSPEC}\".splitlines())" dnl
94-
2>&AS_MESSAGE_LOG_FD],
95-
[AC_MSG_RESULT(yes)],
96-
[AC_MSG_RESULT(no); sage_spkg_install_$1=yes]
97-
)
98-
99-
PYTHONUSERBASE="${PYTHONUSERBASE_SAVED}"
10087
], [
10188
dnl failed to create a venv for some reason
10289
AC_MSG_RESULT(no)
@@ -128,3 +115,21 @@ AC_DEFUN([SAGE_PYTHON_PACKAGE_CHECK], [
128115
AS_IF([test "${sage_use_system_$1}" = "yes"],[sage_use_system_$1=no])
129116
])
130117
])
118+
119+
120+
AC_DEFUN([WITH_SAGE_PYTHONUSERBASE], [dnl
121+
dnl To prevent user-site (pip install --user) packages from being
122+
dnl detected as "system" packages, we poison PYTHONUSERBASE. The
123+
dnl sage-env script also does this at runtime; we mimic that
124+
dnl implementation to ensure that the behaviors at ./configure and
125+
dnl runtime are identical. Beware that (as in sage-env) the poisoning
126+
dnl is skipped if PYTHONUSERBASE is non-empty. In particular, if the
127+
dnl user points PYTHONUSERBASE to any path (even the default), then
128+
dnl his local pip packages will be detected.
129+
PYTHONUSERBASE_SAVED="${PYTHONUSERBASE}"
130+
AS_IF([test -z "${PYTHONUSERBASE}"], [
131+
PYTHONUSERBASE="${HOME}/.sage/local"
132+
])
133+
$1
134+
PYTHONUSERBASE="${PYTHONUSERBASE_SAVED}"
135+
])

0 commit comments

Comments
 (0)