[Python-checkins] bpo-45847: Port xxlimited and xxlimited_35 to PY_STDLIB_MOD (GH-29707)

tiran webhook-mailer at python.org
Mon Nov 22 15:27:33 EST 2021


https://github.com/python/cpython/commit/2dc7d3dda61e7ce07721f46b14c706fbc879dfd6
commit: 2dc7d3dda61e7ce07721f46b14c706fbc879dfd6
branch: main
author: Erlend Egeberg Aasland <erlend.aasland at innova.no>
committer: tiran <christian at python.org>
date: 2021-11-22T21:27:05+01:00
summary:

bpo-45847: Port xxlimited and xxlimited_35 to PY_STDLIB_MOD (GH-29707)

files:
M Modules/Setup.stdlib.in
M configure
M configure.ac
M setup.py

diff --git a/Modules/Setup.stdlib.in b/Modules/Setup.stdlib.in
index b12ae9db5e9b2..0c88eed3b5e65 100644
--- a/Modules/Setup.stdlib.in
+++ b/Modules/Setup.stdlib.in
@@ -135,9 +135,14 @@
 @MODULE__TESTBUFFER_TRUE at _testbuffer _testbuffer.c
 @MODULE__TESTINTERNALCAPI_TRUE at _testinternalcapi _testinternalcapi.c
 
+
 # Some testing modules MUST be built as shared libraries.
 *shared*
 @MODULE__TESTCAPI_TRUE at _testcapi _testcapimodule.c
 @MODULE__TESTIMPORTMULTIPLE_TRUE at _testimportmultiple _testimportmultiple.c
 @MODULE__TESTMULTIPHASE_TRUE at _testmultiphase _testmultiphase.c
 @MODULE__CTYPES_TEST_TRUE at _ctypes_test _ctypes/_ctypes_test.c
+
+# Limited API template modules; must be built as shared modules.
+ at MODULE_XXLIMITED_TRUE@xxlimited xxlimited.c
+ at MODULE_XXLIMITED_35_TRUE@xxlimited_35 xxlimited_35.c
diff --git a/configure b/configure
index a1fc09fc04854..dafcce61d132d 100755
--- a/configure
+++ b/configure
@@ -624,6 +624,10 @@ ac_includes_default="\
 
 ac_subst_vars='LTLIBOBJS
 MODULE_BLOCK
+MODULE_XXLIMITED_35_FALSE
+MODULE_XXLIMITED_35_TRUE
+MODULE_XXLIMITED_FALSE
+MODULE_XXLIMITED_TRUE
 MODULE__CTYPES_TEST_FALSE
 MODULE__CTYPES_TEST_TRUE
 MODULE__XXTESTFUZZ_FALSE
@@ -21838,6 +21842,79 @@ fi
 $as_echo "$py_cv_module__ctypes_test" >&6; }
 
 
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module xxlimited" >&5
+$as_echo_n "checking for stdlib extension module xxlimited... " >&6; }
+      case $py_stdlib_not_available in #(
+  *xxlimited*) :
+    py_cv_module_xxlimited=n/a ;; #(
+  *) :
+    if test "$Py_TRACE_REFS" = no; then :
+  if true; then :
+  py_cv_module_xxlimited=yes
+else
+  py_cv_module_xxlimited=missing
+fi
+else
+  py_cv_module_xxlimited=disabled
+fi
+   ;;
+esac
+  as_fn_append MODULE_BLOCK "MODULE_XXLIMITED=$py_cv_module_xxlimited$as_nl"
+  if test "x$py_cv_module_xxlimited" = xyes; then :
+
+
+
+
+fi
+   if test "$py_cv_module_xxlimited" = yes; then
+  MODULE_XXLIMITED_TRUE=
+  MODULE_XXLIMITED_FALSE='#'
+else
+  MODULE_XXLIMITED_TRUE='#'
+  MODULE_XXLIMITED_FALSE=
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_xxlimited" >&5
+$as_echo "$py_cv_module_xxlimited" >&6; }
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module xxlimited_35" >&5
+$as_echo_n "checking for stdlib extension module xxlimited_35... " >&6; }
+      case $py_stdlib_not_available in #(
+  *xxlimited_35*) :
+    py_cv_module_xxlimited_35=n/a ;; #(
+  *) :
+    if test "$Py_TRACE_REFS" = no; then :
+  if true; then :
+  py_cv_module_xxlimited_35=yes
+else
+  py_cv_module_xxlimited_35=missing
+fi
+else
+  py_cv_module_xxlimited_35=disabled
+fi
+   ;;
+esac
+  as_fn_append MODULE_BLOCK "MODULE_XXLIMITED_35=$py_cv_module_xxlimited_35$as_nl"
+  if test "x$py_cv_module_xxlimited_35" = xyes; then :
+
+
+
+
+fi
+   if test "$py_cv_module_xxlimited_35" = yes; then
+  MODULE_XXLIMITED_35_TRUE=
+  MODULE_XXLIMITED_35_FALSE='#'
+else
+  MODULE_XXLIMITED_35_TRUE='#'
+  MODULE_XXLIMITED_35_FALSE=
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_xxlimited_35" >&5
+$as_echo "$py_cv_module_xxlimited_35" >&6; }
+
+
 # substitute multiline block, must come after last PY_STDLIB_MOD()
 
 
@@ -22214,6 +22291,14 @@ if test -z "${MODULE__CTYPES_TEST_TRUE}" && test -z "${MODULE__CTYPES_TEST_FALSE
   as_fn_error $? "conditional \"MODULE__CTYPES_TEST\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${MODULE_XXLIMITED_TRUE}" && test -z "${MODULE_XXLIMITED_FALSE}"; then
+  as_fn_error $? "conditional \"MODULE_XXLIMITED\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${MODULE_XXLIMITED_35_TRUE}" && test -z "${MODULE_XXLIMITED_35_FALSE}"; then
+  as_fn_error $? "conditional \"MODULE_XXLIMITED_35\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
diff --git a/configure.ac b/configure.ac
index 5757c3b2586bc..ec7d1a48a0bee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6219,6 +6219,11 @@ PY_STDLIB_MOD([_testmultiphase], [test "$TEST_MODULES" = yes])
 PY_STDLIB_MOD([_xxtestfuzz], [test "$TEST_MODULES" = yes])
 PY_STDLIB_MOD([_ctypes_test], [test "$TEST_MODULES" = yes], [], [], [-lm])
 
+dnl Limited API template modules.
+dnl The limited C API is not compatible with the Py_TRACE_REFS macro.
+PY_STDLIB_MOD([xxlimited], [test "$Py_TRACE_REFS" = no])
+PY_STDLIB_MOD([xxlimited_35], [test "$Py_TRACE_REFS" = no])
+
 # substitute multiline block, must come after last PY_STDLIB_MOD()
 AC_SUBST([MODULE_BLOCK])
 
diff --git a/setup.py b/setup.py
index a3aa787a1b708..a3d377a696abb 100644
--- a/setup.py
+++ b/setup.py
@@ -1477,13 +1477,11 @@ def detect_modules(self):
             self.missing.append('_tkinter')
         self.detect_uuid()
 
-##         # Uncomment these lines if you want to play with xxmodule.c
-##         self.add(Extension('xx', ['xxmodule.c']))
+        # Uncomment the next line if you want to play with xxmodule.c
+#        self.add(Extension('xx', ['xxmodule.c']))
 
-        # The limited C API is not compatible with the Py_TRACE_REFS macro.
-        if not sysconfig.get_config_var('Py_TRACE_REFS'):
-            self.add(Extension('xxlimited', ['xxlimited.c']))
-            self.add(Extension('xxlimited_35', ['xxlimited_35.c']))
+        self.addext(Extension('xxlimited', ['xxlimited.c']))
+        self.addext(Extension('xxlimited_35', ['xxlimited_35.c']))
 
     def detect_tkinter_fromenv(self):
         # Build _tkinter using the Tcl/Tk locations specified by



More information about the Python-checkins mailing list