Skip to content

gh-127405: Add ABIFLAGS to sysconfig.get_config_vars() on Windows #131799

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 58 commits into from
Apr 11, 2025
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
31b7eab
Add `ABIFLAGS` to `sysconfig.get_config_vars()` on Windows
XuehaiPan Mar 27, 2025
dc45897
📜🤖 Added by blurb_it.
blurb-it[bot] Mar 27, 2025
9a4586a
Add tests
XuehaiPan Mar 27, 2025
76c85bb
Move `ABIFLAGS` definition to C code
XuehaiPan Mar 28, 2025
b98419b
Revert now unrelated changes
XuehaiPan Mar 28, 2025
4729f76
Fix variable name
XuehaiPan Mar 28, 2025
04cbb1c
Refactor string concatination
XuehaiPan Mar 28, 2025
a6045ea
Set `Py_DEBUG` flag in sysconfig
XuehaiPan Mar 28, 2025
584e0b0
Update comments from code review
XuehaiPan Mar 28, 2025
93257be
Prefer `Py_DEBUG` over `_DEBUG`
XuehaiPan Mar 28, 2025
30c7b56
Add tests
XuehaiPan Mar 28, 2025
97942b2
Add tests
XuehaiPan Mar 28, 2025
917874c
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Mar 28, 2025
f49067e
Update tests
XuehaiPan Mar 28, 2025
8fa952b
Update tests
XuehaiPan Mar 28, 2025
08d92db
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Mar 29, 2025
b667dd9
Remove unnecessary comments
XuehaiPan Mar 30, 2025
30cf6c7
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Mar 30, 2025
5df9540
Update What's New
XuehaiPan Mar 30, 2025
018aae3
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Mar 30, 2025
4f22ff3
Revert `PCbuild/pyproject.props`
XuehaiPan Mar 31, 2025
f918241
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Mar 31, 2025
a4646c5
Revert `_DEBUG` -> `Py_DEBUG`
XuehaiPan Mar 31, 2025
7b21d7d
Revert `_DEBUG` -> `Py_DEBUG`
XuehaiPan Mar 31, 2025
1ee8230
Add underscore prefix to `d` on Windows
XuehaiPan Mar 31, 2025
084deac
Fix key name
XuehaiPan Mar 31, 2025
af50632
Add comments for test for `d` flag in `ABIFLAGS`
XuehaiPan Mar 31, 2025
b397f40
Fix failing test
XuehaiPan Mar 31, 2025
1a82cd1
Update tests
XuehaiPan Mar 31, 2025
7990798
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Mar 31, 2025
0744690
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Apr 3, 2025
518137b
Add a test for `sysconfig.get_config_var('ABIFLAGS')` on Windows
XuehaiPan Apr 3, 2025
486e2a8
Rename test function
XuehaiPan Apr 3, 2025
3bccf1d
Move test location
XuehaiPan Apr 3, 2025
780f340
Move test location
XuehaiPan Apr 3, 2025
98c26f9
Add a note for `test_abiflags`
XuehaiPan Apr 3, 2025
e236bc7
Move definition of ABIFLAGS from C to Python
XuehaiPan Apr 3, 2025
0d8bcdd
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Apr 5, 2025
278556c
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Apr 6, 2025
5689c1f
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Apr 7, 2025
299cec6
Update tests
XuehaiPan Apr 7, 2025
21d2e73
Split 't' flag to another test
XuehaiPan Apr 7, 2025
d265a59
Update tests
XuehaiPan Apr 8, 2025
f3b8570
Update tests
XuehaiPan Apr 8, 2025
fe4ea95
Update tests
XuehaiPan Apr 8, 2025
da2b4ce
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Apr 8, 2025
64f0961
Simplify tests
XuehaiPan Apr 8, 2025
8b16454
Simplify tests
XuehaiPan Apr 8, 2025
1c807f0
Update test comments
XuehaiPan Apr 8, 2025
fbb86f5
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Apr 8, 2025
b702ff9
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Apr 9, 2025
932386c
Simplify test comment
XuehaiPan Apr 9, 2025
23b6e6c
Apply suggestions from code review
XuehaiPan Apr 9, 2025
75b6c51
Make 'd' flag test more platform specific
XuehaiPan Apr 11, 2025
3c91201
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Apr 11, 2025
d55b3e6
Revert non-Windows test changes
XuehaiPan Apr 11, 2025
a084070
Fix Windows platform detection
XuehaiPan Apr 11, 2025
d2255e6
Merge branch 'main' into windows-add-sysconfig-abiflags
XuehaiPan Apr 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions Lib/sysconfig/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -401,8 +401,12 @@ def _init_non_posix(vars):
vars['BINLIBDEST'] = get_path('platstdlib')
vars['INCLUDEPY'] = get_path('include')

# Add EXT_SUFFIX, SOABI, and Py_GIL_DISABLED
vars.update(_sysconfig.config_vars())
# Add EXT_SUFFIX, SOABI, ABIFLAGS, and Py_GIL_DISABLED
# NOTE: ABIFLAGS is only an emulated value. It is not present during build
# on Windows. sys.abiflags is absent on Windows and `vars['abiflags']
# is already widely used to calculate paths. vars['abiflags'] should
# remain empty string.
vars.update(_sysconfig.config_vars()) # defined in Modules/_sysconfig.c

vars['LIBDIR'] = _safe_realpath(os.path.join(get_config_var('installed_base'), 'libs'))
if hasattr(sys, 'dllhandle'):
Expand Down
4 changes: 4 additions & 0 deletions Lib/test/test_sysconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -592,6 +592,10 @@ def test_osx_ext_suffix(self):
suffix = sysconfig.get_config_var('EXT_SUFFIX')
self.assertTrue(suffix.endswith('-darwin.so'), suffix)

def test_always_set_ABIFLAGS(self):
self.assertIn('ABIFLAGS', sysconfig.get_config_vars())
self.assertIsInstance(sysconfig.get_config_var('ABIFLAGS'), str)

@requires_subprocess()
def test_makefile_overwrites_config_vars(self):
script = textwrap.dedent("""
Expand Down
1 change: 1 addition & 0 deletions Misc/ACKS
Original file line number Diff line number Diff line change
Expand Up @@ -1402,6 +1402,7 @@ Todd R. Palmer
Juan David Ibáñez Palomar
Nicola Palumbo
Jan Palus
Xuehai Pan
Yongzhi Pan
Martin Panter
Mathias Panzenböck
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add ``ABIFLAGS`` to :func:`sysconfig.get_config_vars` on Windows. Patch by Xuehai Pan.
24 changes: 24 additions & 0 deletions Modules/_sysconfig.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,30 @@ _sysconfig_config_vars_impl(PyObject *module)
Py_DECREF(config);
return NULL;
}

// On Unix, the `ABIFLAGS` key is defined via a different logic.
# ifdef Py_GIL_DISABLED
# define _SYSCONFIG_ABI_THREAD "t"
# else
# define _SYSCONFIG_ABI_THREAD ""
# endif
# ifdef _DEBUG
# define _SYSCONFIG_ABI_DEBUG "d"
# else
# define _SYSCONFIG_ABI_DEBUG ""
# endif
# define _SYSCONFIG_ABIFLAGS (_SYSCONFIG_ABI_THREAD _SYSCONFIG_ABI_DEBUG)

// Emulate `sys.abiflags` value on Unix for Windows. ABIFLAGS here is only
// an emulated value. It is not present during build on Windows.
if (add_string_value(config, "ABIFLAGS", _SYSCONFIG_ABIFLAGS) < 0) {
Py_DECREF(config);
return NULL;
}

# undef _SYSCONFIG_ABI_THREAD
# undef _SYSCONFIG_ABI_DEBUG
# undef _SYSCONFIG_ABIFLAGS
#endif

#ifdef Py_GIL_DISABLED
Expand Down
Loading