]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-40370: Use the same compile and link args as the interpreter used in test_peg_gen...
authorPablo Galindo <Pablogsal@gmail.com>
Thu, 23 Apr 2020 13:46:22 +0000 (14:46 +0100)
committerGitHub <noreply@github.com>
Thu, 23 Apr 2020 13:46:22 +0000 (14:46 +0100)
Lib/test/test_peg_generator/test_c_parser.py
Tools/peg_generator/pegen/build.py

index 6682c907cda2a251ff3a51d849362f11a379476b..ceda6d43d175037d57f4eabd8285ee9b897b60d5 100644 (file)
@@ -8,6 +8,7 @@ import sys
 
 from test import test_tools
 from test.test_peg_generator.ast_dump import ast_dump
+from test import support
 from pathlib import PurePath, Path
 from typing import Sequence
 
@@ -23,6 +24,9 @@ with test_tools.imports_under_tool('peg_generator'):
 
 class TestCParser(unittest.TestCase):
     def setUp(self):
+        cmd = support.missing_compiler_executable()
+        if cmd is not None:
+            self.skipTest('The %r command is not found' % cmd)
         self.tmp_path = tempfile.mkdtemp()
 
     def tearDown(self):
index bd792d66074ff6753dbc96f09428717f89855dc1..6ead94796f7458c25ef916e9469cc88000d2ab22 100644 (file)
@@ -2,6 +2,7 @@ import pathlib
 import shutil
 import tokenize
 import sys
+import sysconfig
 
 from typing import Optional, Tuple
 
@@ -22,6 +23,14 @@ from pegen.tokenizer import Tokenizer
 MOD_DIR = pathlib.Path(__file__).parent
 
 
+def get_extra_flags(compiler_flags, compiler_py_flags_nodist):
+    flags = sysconfig.get_config_var(compiler_flags)
+    py_flags_nodist = sysconfig.get_config_var(compiler_py_flags_nodist)
+    if flags is None or py_flags_nodist is None:
+        return []
+    return f'{flags} {py_flags_nodist}'.split()
+
+
 def compile_c_extension(
     generated_source_path: str,
     build_dir: Optional[str] = None,
@@ -43,9 +52,8 @@ def compile_c_extension(
 
     source_file_path = pathlib.Path(generated_source_path)
     extension_name = source_file_path.stem
-    extra_compile_args = []
-    if not sys.platform.startswith('win'):
-        extra_compile_args.append("-std=c99")
+    extra_compile_args = get_extra_flags('CFLAGS', 'PY_CFLAGS_NODIST')
+    extra_link_args = get_extra_flags('LDFLAGS', 'PY_LDFLAGS_NODIST')
     if keep_asserts:
         extra_compile_args.append("-UNDEBUG")
     extension = [
@@ -66,6 +74,7 @@ def compile_c_extension(
                 str(MOD_DIR.parent.parent.parent / "Parser" / "pegen"),
             ],
             extra_compile_args=extra_compile_args,
+            extra_link_args=extra_link_args,
         )
     ]
     dist = Distribution({"name": extension_name, "ext_modules": extension})