diff options
author | Ronald Oussoren <ronaldoussoren@mac.com> | 2010-07-23 09:43:17 (GMT) |
---|---|---|
committer | Ronald Oussoren <ronaldoussoren@mac.com> | 2010-07-23 09:43:17 (GMT) |
commit | e8d252dbcbafc0113c0b9bf6b13a72af5f0ee848 (patch) | |
tree | c42cd2b2a630bb2fbd494bd01bbbb261de59c1cd /Lib | |
parent | 599b65deca618fb7d6ff1e7955ab7aac66fa6645 (diff) | |
download | cpython-e8d252dbcbafc0113c0b9bf6b13a72af5f0ee848.zip cpython-e8d252dbcbafc0113c0b9bf6b13a72af5f0ee848.tar.gz cpython-e8d252dbcbafc0113c0b9bf6b13a72af5f0ee848.tar.bz2 |
Ensure that the Makefile variable expansion
in distutils.sysconfig matches that in the
toplevel sysconfig module.
Without this patch universal builds on OSX are
broken.
Als add a test that checks that the two version
of get_config_vars agree on important values.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/distutils/sysconfig.py | 23 | ||||
-rw-r--r-- | Lib/distutils/tests/test_sysconfig.py | 9 |
2 files changed, 32 insertions, 0 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index 0fbd541..48f3fe4 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -300,6 +300,12 @@ def parse_makefile(fn, g=None): else: done[n] = v + # Variables with a 'PY_' prefix in the makefile. These need to + # be made available without that prefix through sysconfig. + # Special care is needed to ensure that variable expansion works, even + # if the expansion uses the name without a prefix. + renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS') + # do variable interpolation here while notdone: for name in list(notdone): @@ -316,6 +322,16 @@ def parse_makefile(fn, g=None): elif n in os.environ: # do it like make: fall back to environment item = os.environ[n] + + elif n in renamed_variables: + if name.startswith('PY_') and name[3:] in renamed_variables: + item = "" + + elif 'PY_' + n in notdone: + found = False + + else: + item = str(done['PY_' + n]) else: done[n] = item = "" if found: @@ -330,6 +346,13 @@ def parse_makefile(fn, g=None): else: done[name] = value del notdone[name] + + if name.startswith('PY_') \ + and name[3:] in renamed_variables: + + name = name[3:] + if name not in done: + done[name] = value else: # bogus variable reference; just drop it since we can't deal del notdone[name] diff --git a/Lib/distutils/tests/test_sysconfig.py b/Lib/distutils/tests/test_sysconfig.py index edc755e..0167e0f 100644 --- a/Lib/distutils/tests/test_sysconfig.py +++ b/Lib/distutils/tests/test_sysconfig.py @@ -93,6 +93,15 @@ class SysconfigTestCase(support.EnvironGuard, 'OTHER': 'foo'}) + def test_sysconfig_module(self): + import sysconfig as global_sysconfig + self.assertEquals(global_sysconfig.get_config_var('CFLAGS'), sysconfig.get_config_var('CFLAGS')) + self.assertEquals(global_sysconfig.get_config_var('LDFLAGS'), sysconfig.get_config_var('LDFLAGS')) + self.assertEquals(global_sysconfig.get_config_var('LDSHARED'),sysconfig.get_config_var('LDSHARED')) + self.assertEquals(global_sysconfig.get_config_var('CC'), sysconfig.get_config_var('CC')) + + + def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(SysconfigTestCase)) |