https://github.com/python/cpython/commit/438de10c160c188fced64317df9118100c329ffe
commit: 438de10c160c188fced64317df9118100c329ffe
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2024-03-19T22:58:13+01:00
summary:

gh-116869: Fix test_cext on RHEL7 (#117010)

Remove -std option from CC command line.

Skip C++14 test for now on non-Windows platforms (like RHEL7).

files:
M Lib/test/test_cext/setup.py
M Lib/test/test_cppext/__init__.py
M Lib/test/test_cppext/setup.py

diff --git a/Lib/test/test_cext/setup.py b/Lib/test/test_cext/setup.py
index d6c4410fa5f1e3..17a90caa98b566 100644
--- a/Lib/test/test_cext/setup.py
+++ b/Lib/test/test_cext/setup.py
@@ -39,19 +39,22 @@ def main():
     if std:
         if support.MS_WINDOWS:
             cflags.append(f'/std:{std}')
-            std_prefix = '/std'
         else:
             cflags.append(f'-std={std}')
-            std_prefix = '-std'
 
-        # Remove existing -std options to only test ours
-        cmd = (sysconfig.get_config_var('CC') or '')
-        if cmd is not None:
-            cmd = shlex.split(cmd)
-            cmd = [arg for arg in cmd if not arg.startswith(std_prefix)]
-            cmd = shlex.join(cmd)
-            # CC env var overrides sysconfig CC variable in setuptools
-            os.environ['CC'] = cmd
+    # Remove existing -std or /std options from CC command line.
+    # Python adds -std=c11 option.
+    cmd = (sysconfig.get_config_var('CC') or '')
+    if cmd is not None:
+        if support.MS_WINDOWS:
+            std_prefix = '/std'
+        else:
+            std_prefix = '-std'
+        cmd = shlex.split(cmd)
+        cmd = [arg for arg in cmd if not arg.startswith(std_prefix)]
+        cmd = shlex.join(cmd)
+        # CC env var overrides sysconfig CC variable in setuptools
+        os.environ['CC'] = cmd
 
     # Define Py_LIMITED_API macro
     if limited:
diff --git a/Lib/test/test_cppext/__init__.py b/Lib/test/test_cppext/__init__.py
index b8414f217c7dde..00a2840d49c779 100644
--- a/Lib/test/test_cppext/__init__.py
+++ b/Lib/test/test_cppext/__init__.py
@@ -35,6 +35,9 @@ def test_build_cpp03(self):
     def test_build_cpp11(self):
         self.check_build('_testcpp11ext', std='c++11')
 
+    # Only test C++14 on MSVC.
+    # On s390x RHEL7, GCC 4.8.5 doesn't support C++14.
+    @unittest.skipIf(not support.MS_WINDOWS, "need Windows")
     def test_build_cpp14(self):
         self.check_build('_testcpp14ext', std='c++14')
 
diff --git a/Lib/test/test_cppext/setup.py b/Lib/test/test_cppext/setup.py
index 77e47bcd0cbe16..80b3e0d5212f7b 100644
--- a/Lib/test/test_cppext/setup.py
+++ b/Lib/test/test_cppext/setup.py
@@ -35,19 +35,23 @@ def main():
     if std:
         if support.MS_WINDOWS:
             cppflags.append(f'/std:{std}')
-            std_prefix = '/std'
         else:
             cppflags.append(f'-std={std}')
-            std_prefix = '-std'
 
-        # Remove existing -std options to only test ours
-        cmd = (sysconfig.get_config_var('CC') or '')
-        if cmd is not None:
-            cmd = shlex.split(cmd)
-            cmd = [arg for arg in cmd if not arg.startswith(std_prefix)]
-            cmd = shlex.join(cmd)
-            # CC env var overrides sysconfig CC variable in setuptools
-            os.environ['CC'] = cmd
+    # gh-105776: When "gcc -std=11" is used as the C++ compiler, -std=c11
+    # option emits a C++ compiler warning. Remove "-std11" option from the
+    # CC command.
+    cmd = (sysconfig.get_config_var('CC') or '')
+    if cmd is not None:
+        if support.MS_WINDOWS:
+            std_prefix = '/std'
+        else:
+            std_prefix = '-std'
+        cmd = shlex.split(cmd)
+        cmd = [arg for arg in cmd if not arg.startswith(std_prefix)]
+        cmd = shlex.join(cmd)
+        # CC env var overrides sysconfig CC variable in setuptools
+        os.environ['CC'] = cmd
 
     # On Windows, add PCbuild\amd64\ to include and library directories
     include_dirs = []

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to