[Python-checkins] bpo-43690: stable_abi.py no longer parses macros (GH-25136)
vstinner
webhook-mailer at python.org
Thu Apr 1 08:14:09 EDT 2021
https://github.com/python/cpython/commit/61092a99c4840f36dbde8457cb566fc3c012930f
commit: 61092a99c4840f36dbde8457cb566fc3c012930f
branch: master
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2021-04-01T14:13:42+02:00
summary:
bpo-43690: stable_abi.py no longer parses macros (GH-25136)
The stable_abi.py script no longer parse macros. Macro targets can be
static inline functions which are not part of the stable ABI, only
part of the limited C API.
Run "make regen-limited-abi" to exclude PyType_HasFeature from
Doc/data/stable_abi.dat.
files:
M Doc/data/stable_abi.dat
M Tools/scripts/stable_abi.py
diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat
index ed20521b7f2d6..cd9e384eaea2b 100644
--- a/Doc/data/stable_abi.dat
+++ b/Doc/data/stable_abi.dat
@@ -616,7 +616,6 @@ PyType_GetFlags
PyType_GetModule
PyType_GetModuleState
PyType_GetSlot
-PyType_HasFeature
PyType_IsSubtype
PyType_Modified
PyType_Ready
diff --git a/Tools/scripts/stable_abi.py b/Tools/scripts/stable_abi.py
index 0f9e36547e765..14fcf2f56a207 100755
--- a/Tools/scripts/stable_abi.py
+++ b/Tools/scripts/stable_abi.py
@@ -112,11 +112,10 @@ def generate_limited_api_symbols(args):
stable_data, stable_exported_data, stable_functions = get_limited_api_definitions(
headers
)
- macros = get_limited_api_macros(headers)
stable_symbols = {
symbol
- for symbol in (stable_functions | stable_exported_data | stable_data | macros)
+ for symbol in (stable_functions | stable_exported_data | stable_data)
if symbol.startswith("Py") and symbol in available_symbols
}
with open(args.output_file, "w") as output_file:
@@ -128,36 +127,6 @@ def generate_limited_api_symbols(args):
output_file.write(f"{symbol}\n")
-def get_limited_api_macros(headers):
- """Run the preprocesor over all the header files in "Include" setting
- "-DPy_LIMITED_API" to the correct value for the running version of the interpreter
- and extracting all macro definitions (via adding -dM to the compiler arguments).
- """
-
- preprocesor_output_with_macros = subprocess.check_output(
- sysconfig.get_config_var("CC").split()
- + [
- # Prevent the expansion of the exported macros so we can capture them later
- "-DSIZEOF_WCHAR_T=4", # The actual value is not important
- f"-DPy_LIMITED_API={sys.version_info.major << 24 | sys.version_info.minor << 16}",
- "-I.",
- "-I./Include",
- "-dM",
- "-E",
- ]
- + [str(file) for file in headers],
- text=True,
- stderr=subprocess.DEVNULL,
- )
-
- return {
- target
- for _, target in re.findall(
- r"#define (\w+)\s*(?:\(.*?\))?\s+(\w+)", preprocesor_output_with_macros
- )
- }
-
-
def get_limited_api_definitions(headers):
"""Run the preprocesor over all the header files in "Include" setting
"-DPy_LIMITED_API" to the correct value for the running version of the interpreter.
More information about the Python-checkins
mailing list