From f7abe5b903ce5cd403f46f2111b374a40ae1a8e8 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 30 Sep 2024 19:10:22 +0200 Subject: [PATCH 1/5] gh-124613, regrtest: Detect JIT build in build info --- Lib/test/libregrtest/utils.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/Lib/test/libregrtest/utils.py b/Lib/test/libregrtest/utils.py index 7dcaf085a7ca91..0b04fff0a54829 100644 --- a/Lib/test/libregrtest/utils.py +++ b/Lib/test/libregrtest/utils.py @@ -300,7 +300,7 @@ def get_build_info(): config_args = sysconfig.get_config_var('CONFIG_ARGS') or '' cflags = sysconfig.get_config_var('PY_CFLAGS') or '' - cflags_nodist = sysconfig.get_config_var('PY_CFLAGS_NODIST') or '' + cflags += ' ' + (sysconfig.get_config_var('PY_CFLAGS_NODIST') or '') ldflags_nodist = sysconfig.get_config_var('PY_LDFLAGS_NODIST') or '' build = [] @@ -313,16 +313,35 @@ def get_build_info(): # --with-pydebug build.append('debug') - if '-DNDEBUG' in (cflags + cflags_nodist): + if '-DNDEBUG' in cflags: build.append('without_assert') else: build.append('release') if '--with-assertions' in config_args: build.append('with_assert') - elif '-DNDEBUG' not in (cflags + cflags_nodist): + elif '-DNDEBUG' not in cflags: build.append('with_assert') + # --enable-experimental-jit + tier2 = re.search('-D_Py_TIER2=([0-9]+)', cflags) + if tier2: + tier2 = int(tier2.group(1)) + if tier2 == 1: + jit = 'JIT' # =yes + elif tier2 == 2: + jit = 'JIT=yes-off' + elif tier2 == 4: + jit = 'JIT=interpreter' + elif tier2 == 6: # Secret option + jit = 'JIT=interpreter-off' + elif '-D_Py_JIT' in cflags: + jit = 'JIT' + else: + jit = None + if jit: + build.append(jit) + # --enable-framework=name framework = sysconfig.get_config_var('PYTHONFRAMEWORK') if framework: From 7f630ccf955f9768d761d3d03763c67a6392fda7 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 30 Sep 2024 19:31:08 +0200 Subject: [PATCH 2/5] Read also PYTHON_JIT env var --- Lib/test/libregrtest/utils.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/Lib/test/libregrtest/utils.py b/Lib/test/libregrtest/utils.py index 0b04fff0a54829..16dde954e0c400 100644 --- a/Lib/test/libregrtest/utils.py +++ b/Lib/test/libregrtest/utils.py @@ -327,14 +327,28 @@ def get_build_info(): tier2 = re.search('-D_Py_TIER2=([0-9]+)', cflags) if tier2: tier2 = int(tier2.group(1)) + + if not sys.flags.ignore_environment: + PYTHON_JIT = os.environ.get('PYTHON_JIT', '') + if PYTHON_JIT: + PYTHON_JIT = (PYTHON_JIT != '0') + else: + PYTHON_JIT = None + if tier2 == 1: jit = 'JIT' # =yes - elif tier2 == 2: - jit = 'JIT=yes-off' + elif tier2 == 3: + if PYTHON_JIT: + jit = 'JIT=on' + else: + jit = 'JIT=off' elif tier2 == 4: jit = 'JIT=interpreter' elif tier2 == 6: # Secret option - jit = 'JIT=interpreter-off' + if PYTHON_JIT: + jit = 'JIT=interpreter-on' + else: + jit = 'JIT=interpreter-off' elif '-D_Py_JIT' in cflags: jit = 'JIT' else: From 7fedd5df4575eb071a8dc270deaf95ac02901458 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 30 Sep 2024 19:32:52 +0200 Subject: [PATCH 3/5] Document tier2 values --- Lib/test/libregrtest/utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Lib/test/libregrtest/utils.py b/Lib/test/libregrtest/utils.py index 16dde954e0c400..f66fad1350dfcf 100644 --- a/Lib/test/libregrtest/utils.py +++ b/Lib/test/libregrtest/utils.py @@ -335,16 +335,16 @@ def get_build_info(): else: PYTHON_JIT = None - if tier2 == 1: - jit = 'JIT' # =yes - elif tier2 == 3: + if tier2 == 1: # =yes + jit = 'JIT' + elif tier2 == 3: # =yes-off if PYTHON_JIT: jit = 'JIT=on' else: jit = 'JIT=off' - elif tier2 == 4: + elif tier2 == 4: # =interpreter jit = 'JIT=interpreter' - elif tier2 == 6: # Secret option + elif tier2 == 6: # =interpreter-off (Secret option!) if PYTHON_JIT: jit = 'JIT=interpreter-on' else: From ac2a8aa6ba42e3c569a67d348c5d0317fb02eadb Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 30 Sep 2024 19:38:10 +0200 Subject: [PATCH 4/5] JIT and interpreter can be turned off as well --- Lib/test/libregrtest/utils.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Lib/test/libregrtest/utils.py b/Lib/test/libregrtest/utils.py index f66fad1350dfcf..a401d2419835a7 100644 --- a/Lib/test/libregrtest/utils.py +++ b/Lib/test/libregrtest/utils.py @@ -329,26 +329,32 @@ def get_build_info(): tier2 = int(tier2.group(1)) if not sys.flags.ignore_environment: - PYTHON_JIT = os.environ.get('PYTHON_JIT', '') + PYTHON_JIT = os.environ.get('PYTHON_JIT', None) if PYTHON_JIT: PYTHON_JIT = (PYTHON_JIT != '0') else: PYTHON_JIT = None if tier2 == 1: # =yes - jit = 'JIT' + if PYTHON_JIT == False: + jit = 'JIT=off' + else: + jit = 'JIT' elif tier2 == 3: # =yes-off if PYTHON_JIT: - jit = 'JIT=on' + jit = 'JIT' else: jit = 'JIT=off' elif tier2 == 4: # =interpreter - jit = 'JIT=interpreter' + if PYTHON_JIT == False: + jit = 'JIT-interpreter=off' + else: + jit = 'JIT-interpreter' elif tier2 == 6: # =interpreter-off (Secret option!) if PYTHON_JIT: - jit = 'JIT=interpreter-on' + jit = 'JIT-interpreter' else: - jit = 'JIT=interpreter-off' + jit = 'JIT-interpreter=off' elif '-D_Py_JIT' in cflags: jit = 'JIT' else: From 4f774777ff22ce3e5cd5c058d02d09feb7af527c Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 30 Sep 2024 20:01:44 +0200 Subject: [PATCH 5/5] regrtest: log PYTHON_GIL in build_info --- Lib/test/libregrtest/utils.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Lib/test/libregrtest/utils.py b/Lib/test/libregrtest/utils.py index a401d2419835a7..d6be4ad049d14a 100644 --- a/Lib/test/libregrtest/utils.py +++ b/Lib/test/libregrtest/utils.py @@ -307,7 +307,17 @@ def get_build_info(): # --disable-gil if sysconfig.get_config_var('Py_GIL_DISABLED'): - build.append("free_threading") + if not sys.flags.ignore_environment: + PYTHON_GIL = os.environ.get('PYTHON_GIL', None) + if PYTHON_GIL: + PYTHON_GIL = (PYTHON_GIL == '1') + else: + PYTHON_GIL = None + + free_threading = "free_threading" + if PYTHON_GIL is not None: + free_threading = f"{free_threading} GIL={int(PYTHON_GIL)}" + build.append(free_threading) if hasattr(sys, 'gettotalrefcount'): # --with-pydebug pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy