]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-43690: stable_abi.py no longer parses macros (GH-25136)
authorVictor Stinner <vstinner@python.org>
Thu, 1 Apr 2021 12:13:42 +0000 (14:13 +0200)
committerGitHub <noreply@github.com>
Thu, 1 Apr 2021 12:13:42 +0000 (14:13 +0200)
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.

Doc/data/stable_abi.dat
Tools/scripts/stable_abi.py

index ed20521b7f2d6b46a2a63c197e96087f4d90e3bc..cd9e384eaea2b6954adef3435ea37f29181b119c 100644 (file)
@@ -616,7 +616,6 @@ PyType_GetFlags
 PyType_GetModule
 PyType_GetModuleState
 PyType_GetSlot
-PyType_HasFeature
 PyType_IsSubtype
 PyType_Modified
 PyType_Ready
index 0f9e36547e765d4db17875d577645756b8c646d8..14fcf2f56a207344605c4de854478c4135613c5b 100755 (executable)
@@ -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.