@@ -7,6 +7,8 @@ AC_DEFUN([SAGE_CHECK_PYTHON_FOR_VENV], [
7
7
m4_pushdef ( [ REQUIRED_MODULES] , [ $4 ] )
8
8
m4_pushdef ( [ COMMANDS_IF_GOOD] , [ $5 ] )
9
9
10
+ AC_SUBST ( [ SAGE_ARCHFLAGS] )
11
+
10
12
AC_MSG_CHECKING ( [ ... whether ] PYTHON_EXE [ is good] )
11
13
python3_version=`"PYTHON_EXE" --version 2>&1 \
12
14
| $SED -n -e 's/\([ [ 0-9] ] *\.[ [ 0-9] ] *\.[ [ 0-9] ] *\).*/\1/p'`
@@ -19,6 +21,80 @@ AC_DEFUN([SAGE_CHECK_PYTHON_FOR_VENV], [
19
21
dnl m4_define ( [ conftest_venv] , [ config-venv] ) .... for debugging only
20
22
rm -rf conftest_venv
21
23
AS_IF ( [ "] PYTHON_EXE [ " build/bin/sage-venv conftest_venv && conftest_venv/bin/python3 -c "import ] REQUIRED_MODULES [ "] , [
24
+ AS_VAR_SET ( [ python3_result] , [ yes] )
25
+ SAGE_PYTHON_CHECK_DISTUTILS([ CC="$CC" CXX="$CXX" conftest_venv/bin/python3] , [
26
+ SAGE_ARCHFLAGS="unset"
27
+ ] , [
28
+ AS_CASE ( [ $host] ,
29
+ [ *-*-darwin*] , [
30
+ dnl #31227: Try if setting ARCHFLAGS to empty fixes it
31
+ SAGE_PYTHON_CHECK_DISTUTILS([ CC="$CC" CXX="$CXX" ARCHFLAGS="" conftest_venv/bin/python3] , [
32
+ SAGE_ARCHFLAGS=""
33
+ ] , [
34
+ AS_VAR_SET ( [ python3_result] ,
35
+ [ "no, the version is in the supported range, and the modules can be imported, but $reason (even with ARCHFLAGS set to empty)"] )
36
+ ] )
37
+ ] , [
38
+ AS_VAR_SET ( [ python3_result] ,
39
+ [ "no, the version is in the supported range, and the modules can be imported, but $reason"] )
40
+ ] )
41
+ ] )
42
+ AS_VAR_IF ( [ python3_result] , [ yes] , [
43
+ dnl these commands are expected to call AC_MSG_RESULT
44
+ COMMANDS_IF_GOOD
45
+ ] , [
46
+ AC_MSG_RESULT ( [ $python3_result] )
47
+ ] )
48
+ ] , [
49
+ AC_MSG_RESULT ( [ no, the version is in the supported range but cannot import one of the required modules: ] REQUIRED_MODULES )
50
+ ] )
51
+ ] , [
52
+ AC_MSG_RESULT ( [ no, $python3_version is too recent] )
53
+ ] )
54
+ ] , [
55
+ AC_MSG_RESULT ( [ no, $python3_version is too old] )
56
+ ] )
57
+ ] , [
58
+ AC_MSG_RESULT ( [ no, "] PYTHON_EXE [ --version" does not work] )
59
+ ] )
60
+
61
+
62
+ m4_popdef ( [ PYTHON_EXE] )
63
+ m4_popdef ( [ MIN_VERSION] )
64
+ m4_popdef ( [ LT_VERSION] )
65
+ m4_popdef ( [ REQUIRED_MODULES] )
66
+ m4_popdef ( [ COMMANDS_IF_GOOD] )
67
+
68
+ ] )
69
+
70
+ dnl distutils test
71
+ AC_DEFUN ( [ SAGE_PYTHON_CHECK_DISTUTILS] , [
72
+ m4_pushdef ( [ PYTHON_EXE] , [ $1 ] )
73
+ m4_pushdef ( [ COMMANDS_IF_DISTUTILS_GOOD] , [ $2 ] )
74
+ m4_pushdef ( [ COMMANDS_IF_DISTUTILS_NOT_GOOD] , [ $3 ] )
75
+ SAGE_PYTHON_DISTUTILS_C_CONFTEST
76
+ dnl (echo "***ENV***:"; env; echo "***SYSCONFIG***"; conftest_venv/bin/python3 -m sysconfig) >& AS_MESSAGE_LOG_FD
77
+ echo PYTHON_EXE conftest.py --verbose build --build-base=conftest.dir >& AS_MESSAGE_LOG_FD
78
+ AS_IF ( [ PYTHON_EXE conftest.py --verbose build --build-base=conftest.dir >& AS_MESSAGE_LOG_FD 2>&1 ] , [
79
+ SAGE_PYTHON_DISTUTILS_CXX_CONFTEST
80
+ echo PYTHON_EXE conftest.py --verbose build --build-base=conftest.dir >& AS_MESSAGE_LOG_FD 2>&1
81
+ AS_IF ( [ PYTHON_EXE conftest.py --verbose build --build-base=conftest.dir >& AS_MESSAGE_LOG_FD 2>&1 ] , [
82
+ COMMANDS_IF_DISTUTILS_GOOD] , [
83
+ reason="distutils cannot build a C++ 11 extension"
84
+ COMMANDS_IF_DISTUTILS_NOT_GOOD
85
+ ] )
86
+ ] , [
87
+ reason="distutils cannot build a C extension"
88
+ COMMANDS_IF_DISTUTILS_NOT_GOOD
89
+ ] )
90
+ m4_popdef ( [ PYTHON_EXE] )
91
+ m4_popdef ( [ COMMANDS_IF_DISTUTILS_GOOD] )
92
+ m4_popdef ( [ COMMANDS_IF_DISTUTILS_NOT_GOOD] )
93
+ ] )
94
+
95
+ dnl Write conftest.py and conftest.c
96
+ AC_DEFUN ( [ SAGE_PYTHON_DISTUTILS_C_CONFTEST] , [
97
+ rm -rf conftest.*
22
98
AC_LANG_PUSH ( [ C] )
23
99
AC_LANG_CONFTEST ( [
24
100
AC_LANG_SOURCE ( [ [
@@ -54,9 +130,10 @@ modules = list((Extension("config_check_distutils", list(("conftest.c",))),))
54
130
setup(name="config_check_distutils", ext_modules=modules)
55
131
exit(0)
56
132
EOF
57
- dnl (echo "***ENV***:"; env; echo "***SYSCONFIG***"; conftest_venv/bin/python3 -m sysconfig) >& AS_MESSAGE_LOG_FD
58
- echo CC="$CC" CXX="$CXX" conftest_venv/bin/python3 conftest.py --verbose build --build-base=conftest.dir >& AS_MESSAGE_LOG_FD
59
- AS_IF ( [ CC="$CC" CXX="$CXX" conftest_venv/bin/python3 conftest.py --verbose build --build-base=conftest.dir >& AS_MESSAGE_LOG_FD 2>&1 ] , [
133
+ ] )
134
+
135
+ dnl Write conftest.py and conftest.cpp
136
+ AC_DEFUN ( [ SAGE_PYTHON_DISTUTILS_CXX_CONFTEST] , [
60
137
rm -rf conftest.*
61
138
AC_LANG_PUSH ( [ C++] )
62
139
AC_LANG_CONFTEST ( [
@@ -107,31 +184,4 @@ modules = list((Extension("config_check_distutils_cxx", list(("conftest.cpp",)),
107
184
setup(name="config_check_distutils_cxx", ext_modules=modules)
108
185
exit(0)
109
186
EOF
110
- AS_IF ( [ CC="$CC" CXX="$CXX" conftest_venv/bin/python3 conftest.py --verbose build --build-base=conftest.dir >& AS_MESSAGE_LOG_FD 2>&1 ] ,
111
- [ COMMANDS_IF_GOOD] , [
112
- AC_MSG_RESULT ( [ no, the version is in the supported range, and the modules can be imported, but distutils cannot build a C++ 11 extension] )
113
- ] )
114
- ] , [
115
- AC_MSG_RESULT ( [ no, the version is in the supported range, and the modules can be imported, but distutils cannot build a C extension] )
116
- ] )
117
- ] , [
118
- AC_MSG_RESULT ( [ no, the version is in the supported range but cannot import one of the required modules: ] REQUIRED_MODULES )
119
- ] )
120
- ] , [
121
- AC_MSG_RESULT ( [ no, $python3_version is too recent] )
122
- ] )
123
- ] , [
124
- AC_MSG_RESULT ( [ no, $python3_version is too old] )
125
- ] )
126
- ] , [
127
- AC_MSG_RESULT ( [ no, "] PYTHON_EXE [ --version" does not work] )
128
- ] )
129
-
130
-
131
- m4_popdef ( [ PYTHON_EXE] )
132
- m4_popdef ( [ MIN_VERSION] )
133
- m4_popdef ( [ LT_VERSION] )
134
- m4_popdef ( [ REQUIRED_MODULES] )
135
- m4_popdef ( [ COMMANDS_IF_GOOD] )
136
-
137
187
] )
0 commit comments