From 1c2fddddae5ce27be354b519f8ae51886b4dd9f4 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Fri, 8 Apr 2022 14:35:11 +0200 Subject: Add feature macro PY_HAVE_THREAD_NATIVE_ID to the stable ABI definition (GH-32365) --- Doc/data/stable_abi.dat | 2 +- Lib/test/test_stable_abi_ctypes.py | 1 - .../next/C API/2022-04-06-16-29-14.bpo-47169.wVv2bT.rst | 2 ++ Misc/stable_abi.txt | 1 + Tools/scripts/stable_abi.py | 13 +++++++++++-- 5 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/C API/2022-04-06-16-29-14.bpo-47169.wVv2bT.rst diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index 7f42f9c..849a2cf 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -625,7 +625,7 @@ function,PyThread_free_lock,3.2,, function,PyThread_get_key_value,3.2,, function,PyThread_get_stacksize,3.2,, function,PyThread_get_thread_ident,3.2,, -function,PyThread_get_thread_native_id,3.2,, +function,PyThread_get_thread_native_id,3.2,on platforms with native thread IDs, function,PyThread_init_thread,3.2,, function,PyThread_release_lock,3.2,, function,PyThread_set_key_value,3.2,, diff --git a/Lib/test/test_stable_abi_ctypes.py b/Lib/test/test_stable_abi_ctypes.py index a49235b..efd3b1b 100644 --- a/Lib/test/test_stable_abi_ctypes.py +++ b/Lib/test/test_stable_abi_ctypes.py @@ -615,7 +615,6 @@ SYMBOL_NAMES = ( "PyThread_get_key_value", "PyThread_get_stacksize", "PyThread_get_thread_ident", - "PyThread_get_thread_native_id", "PyThread_init_thread", "PyThread_release_lock", "PyThread_set_key_value", diff --git a/Misc/NEWS.d/next/C API/2022-04-06-16-29-14.bpo-47169.wVv2bT.rst b/Misc/NEWS.d/next/C API/2022-04-06-16-29-14.bpo-47169.wVv2bT.rst new file mode 100644 index 0000000..66eac05 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2022-04-06-16-29-14.bpo-47169.wVv2bT.rst @@ -0,0 +1,2 @@ +:c:func:`PyThread_get_thread_native_id` is excluded from the stable ABI on +platforms where it doesn't exist (like Solaris). diff --git a/Misc/stable_abi.txt b/Misc/stable_abi.txt index 04d2260..4864bf3 100644 --- a/Misc/stable_abi.txt +++ b/Misc/stable_abi.txt @@ -1787,6 +1787,7 @@ function PyThread_get_stacksize function PyThread_get_thread_ident added 3.2 function PyThread_get_thread_native_id + ifdef PY_HAVE_THREAD_NATIVE_ID added 3.2 function PyThread_init_thread added 3.2 diff --git a/Tools/scripts/stable_abi.py b/Tools/scripts/stable_abi.py index feca9a2..9b90e34 100755 --- a/Tools/scripts/stable_abi.py +++ b/Tools/scripts/stable_abi.py @@ -49,8 +49,17 @@ IFDEF_DOC_NOTES = { 'MS_WINDOWS': 'on Windows', 'HAVE_FORK': 'on platforms with fork()', 'USE_STACKCHECK': 'on platforms with USE_STACKCHECK', + 'PY_HAVE_THREAD_NATIVE_ID': 'on platforms with native thread IDs', } +# To generate the DLL definition, we need to know which feature macros are +# defined on Windows. On all platforms. +# Best way to do that is to hardcode the list (and later test in on Windows). +WINDOWS_IFDEFS = frozenset({ + 'MS_WINDOWS', + 'PY_HAVE_THREAD_NATIVE_ID', +}) + # The stable ABI manifest (Misc/stable_abi.txt) exists only to fill the # following dataclasses. # Feel free to change its syntax (and the `parse_manifest` function) @@ -232,7 +241,7 @@ def gen_python3dll(manifest, args, outfile): for item in sorted( manifest.select( - {'function'}, include_abi_only=True, ifdef={'MS_WINDOWS'}), + {'function'}, include_abi_only=True, ifdef=WINDOWS_IFDEFS), key=sort_key): write(f'EXPORT_FUNC({item.name})') @@ -240,7 +249,7 @@ def gen_python3dll(manifest, args, outfile): for item in sorted( manifest.select( - {'data'}, include_abi_only=True, ifdef={'MS_WINDOWS'}), + {'data'}, include_abi_only=True, ifdef=WINDOWS_IFDEFS), key=sort_key): write(f'EXPORT_DATA({item.name})') -- cgit v0.12