]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-36235: Fix CFLAGS in distutils customize_compiler() (GH-12236)
authorVictor Stinner <vstinner@redhat.com>
Fri, 15 Mar 2019 13:57:52 +0000 (14:57 +0100)
committerGitHub <noreply@github.com>
Fri, 15 Mar 2019 13:57:52 +0000 (14:57 +0100)
Fix CFLAGS in customize_compiler() of distutils.sysconfig: when the
CFLAGS environment variable is defined, don't override CFLAGS variable with
the OPT variable anymore.

Initial patch written by David Malcolm.

Co-Authored-By: David Malcolm <dmalcolm@redhat.com>
Lib/distutils/sysconfig.py
Lib/distutils/tests/test_sysconfig.py
Misc/NEWS.d/next/Library/2019-03-08-13-32-21.bpo-36235._M72wU.rst [new file with mode: 0644]

index 40af493cdfb5f27e06175e4c2e57bc3e25c36e9f..a3494670db18c1a7f43f4122ef14774bb5bf2fcb 100644 (file)
@@ -181,8 +181,8 @@ def customize_compiler(compiler):
                 _osx_support.customize_compiler(_config_vars)
                 _config_vars['CUSTOMIZED_OSX_COMPILER'] = 'True'
 
-        (cc, cxx, opt, cflags, ccshared, ldshared, shlib_suffix, ar, ar_flags) = \
-            get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
+        (cc, cxx, cflags, ccshared, ldshared, shlib_suffix, ar, ar_flags) = \
+            get_config_vars('CC', 'CXX', 'CFLAGS',
                             'CCSHARED', 'LDSHARED', 'SHLIB_SUFFIX', 'AR', 'ARFLAGS')
 
         if 'CC' in os.environ:
@@ -205,7 +205,7 @@ def customize_compiler(compiler):
         if 'LDFLAGS' in os.environ:
             ldshared = ldshared + ' ' + os.environ['LDFLAGS']
         if 'CFLAGS' in os.environ:
-            cflags = opt + ' ' + os.environ['CFLAGS']
+            cflags = cflags + ' ' + os.environ['CFLAGS']
             ldshared = ldshared + ' ' + os.environ['CFLAGS']
         if 'CPPFLAGS' in os.environ:
             cpp = cpp + ' ' + os.environ['CPPFLAGS']
index fe4a2994e3b0cd3a79c295255a4396d14c06b104..4bf6a067d4d9260eb8ab253952ea102b04007e58 100644 (file)
@@ -9,7 +9,7 @@ import unittest
 from distutils import sysconfig
 from distutils.ccompiler import get_default_compiler
 from distutils.tests import support
-from test.support import TESTFN, run_unittest, check_warnings
+from test.support import TESTFN, run_unittest, check_warnings, swap_item
 
 class SysconfigTestCase(support.EnvironGuard, unittest.TestCase):
     def setUp(self):
@@ -78,7 +78,9 @@ class SysconfigTestCase(support.EnvironGuard, unittest.TestCase):
                          'not testing if default compiler is not unix')
     def test_customize_compiler(self):
         os.environ['AR'] = 'my_ar'
-        os.environ['ARFLAGS'] = '-arflags'
+        os.environ['CC'] = 'my_cc'
+        os.environ['ARFLAGS'] = '--myarflags'
+        os.environ['CFLAGS'] = '--mycflags'
 
         # make sure AR gets caught
         class compiler:
@@ -87,9 +89,14 @@ class SysconfigTestCase(support.EnvironGuard, unittest.TestCase):
             def set_executables(self, **kw):
                 self.exes = kw
 
+        # Make sure that sysconfig._config_vars is initialized
+        sysconfig.get_config_vars()
+
         comp = compiler()
-        sysconfig.customize_compiler(comp)
-        self.assertEqual(comp.exes['archiver'], 'my_ar -arflags')
+        with swap_item(sysconfig._config_vars, 'CFLAGS', '--sysconfig-cflags'):
+            sysconfig.customize_compiler(comp)
+        self.assertEqual(comp.exes['archiver'], 'my_ar --myarflags')
+        self.assertEqual(comp.exes['compiler'], 'my_cc --sysconfig-cflags --mycflags')
 
     def test_parse_makefile_base(self):
         self.makefile = TESTFN
diff --git a/Misc/NEWS.d/next/Library/2019-03-08-13-32-21.bpo-36235._M72wU.rst b/Misc/NEWS.d/next/Library/2019-03-08-13-32-21.bpo-36235._M72wU.rst
new file mode 100644 (file)
index 0000000..59df98c
--- /dev/null
@@ -0,0 +1,4 @@
+Fix ``CFLAGS`` in ``customize_compiler()`` of ``distutils.sysconfig``: when
+the ``CFLAGS`` environment variable is defined, don't override ``CFLAGS``
+variable with the ``OPT`` variable anymore. Initial patch written by David
+Malcolm.