[Python-checkins] test.pythoninfo logs more build info (GH-93225) (#93256)

vstinner webhook-mailer at python.org
Sun May 29 04:22:46 EDT 2022


https://github.com/python/cpython/commit/561c709af327359979f43388461f9f937666d192
commit: 561c709af327359979f43388461f9f937666d192
branch: 3.10
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: vstinner <vstinner at python.org>
date: 2022-05-29T10:22:35+02:00
summary:

test.pythoninfo logs more build info (GH-93225) (#93256)

Log also test.support.check_sanitizer() values.
(cherry picked from commit 06dd26f89f35b6d6ef4b68c169cb6c675af7e4a4)

Co-authored-by: Victor Stinner <vstinner at python.org>

Co-authored-by: Victor Stinner <vstinner at python.org>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra at gmail.com>

files:
M Lib/test/pythoninfo.py

diff --git a/Lib/test/pythoninfo.py b/Lib/test/pythoninfo.py
index 005eae549cb04..479e60b16b691 100644
--- a/Lib/test/pythoninfo.py
+++ b/Lib/test/pythoninfo.py
@@ -9,6 +9,9 @@
 import warnings
 
 
+MS_WINDOWS = (sys.platform == 'win32')
+
+
 def normalize_text(text):
     if text is None:
         return None
@@ -125,13 +128,21 @@ def collect_sys(info_add):
             encoding = '%s/%s' % (encoding, errors)
         info_add('sys.%s.encoding' % name, encoding)
 
-    # Were we compiled --with-pydebug or with #define Py_DEBUG?
+    # Were we compiled --with-pydebug?
     Py_DEBUG = hasattr(sys, 'gettotalrefcount')
     if Py_DEBUG:
         text = 'Yes (sys.gettotalrefcount() present)'
     else:
         text = 'No (sys.gettotalrefcount() missing)'
-    info_add('Py_DEBUG', text)
+    info_add('build.Py_DEBUG', text)
+
+    # Were we compiled --with-trace-refs?
+    Py_TRACE_REFS = hasattr(sys, 'getobjects')
+    if Py_TRACE_REFS:
+        text = 'Yes (sys.getobjects() present)'
+    else:
+        text = 'No (sys.getobjects() missing)'
+    info_add('build.Py_REF_DEBUG', text)
 
 
 def collect_platform(info_add):
@@ -444,6 +455,11 @@ def collect_datetime(info_add):
 
 
 def collect_sysconfig(info_add):
+    # On Windows, sysconfig is not reliable to get macros used
+    # to build Python
+    if MS_WINDOWS:
+        return
+
     import sysconfig
 
     for name in (
@@ -477,6 +493,28 @@ def collect_sysconfig(info_add):
         value = normalize_text(value)
         info_add('sysconfig[%s]' % name, value)
 
+    PY_CFLAGS = sysconfig.get_config_var('PY_CFLAGS')
+    NDEBUG = (PY_CFLAGS and '-DNDEBUG' in PY_CFLAGS)
+    if NDEBUG:
+        text = 'ignore assertions (macro defined)'
+    else:
+        text= 'build assertions (macro not defined)'
+    info_add('build.NDEBUG',text)
+
+    for name in (
+        'WITH_DOC_STRINGS',
+        'WITH_DTRACE',
+        'WITH_FREELISTS',
+        'WITH_PYMALLOC',
+        'WITH_VALGRIND',
+    ):
+        value = sysconfig.get_config_var(name)
+        if value:
+            text = 'Yes'
+        else:
+            text = 'No'
+        info_add(f'build.{name}', text)
+
 
 def collect_ssl(info_add):
     import os
@@ -588,7 +626,6 @@ def collect_testcapi(info_add):
         return
 
     call_func(info_add, 'pymem.allocator', _testcapi, 'pymem_getallocatorsname')
-    copy_attr(info_add, 'pymem.with_pymalloc', _testcapi, 'WITH_PYMALLOC')
 
 
 def collect_resource(info_add):
@@ -630,6 +667,13 @@ def collect_test_support(info_add):
     call_func(info_add, 'test_support._is_gui_available', support, '_is_gui_available')
     call_func(info_add, 'test_support.python_is_optimized', support, 'python_is_optimized')
 
+    info_add('test_support.check_sanitizer(address=True)',
+             support.check_sanitizer(address=True))
+    info_add('test_support.check_sanitizer(memory=True)',
+             support.check_sanitizer(memory=True))
+    info_add('test_support.check_sanitizer(ub=True)',
+             support.check_sanitizer(ub=True))
+
 
 def collect_cc(info_add):
     import subprocess



More information about the Python-checkins mailing list