[Python-checkins] r73342 - in python/branches/release26-maint: Lib/distutils/sysconfig.py Lib/distutils/tests/test_sysconfig.py Misc/NEWS

tarek.ziade python-checkins at python.org
Thu Jun 11 10:26:40 CEST 2009


Author: tarek.ziade
Date: Thu Jun 11 10:26:40 2009
New Revision: 73342

Log:
Merged revisions 73341 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r73341 | tarek.ziade | 2009-06-11 10:12:20 +0200 (Thu, 11 Jun 2009) | 1 line
  
  Fixed #5201: now distutils.sysconfig.parse_makefile() understands '53264' in Makefiles
........


Modified:
   python/branches/release26-maint/   (props changed)
   python/branches/release26-maint/Lib/distutils/sysconfig.py
   python/branches/release26-maint/Lib/distutils/tests/test_sysconfig.py
   python/branches/release26-maint/Misc/NEWS

Modified: python/branches/release26-maint/Lib/distutils/sysconfig.py
==============================================================================
--- python/branches/release26-maint/Lib/distutils/sysconfig.py	(original)
+++ python/branches/release26-maint/Lib/distutils/sysconfig.py	Thu Jun 11 10:26:40 2009
@@ -275,18 +275,25 @@
 
     while 1:
         line = fp.readline()
-        if line is None:                # eof
+        if line is None:  # eof
             break
         m = _variable_rx.match(line)
         if m:
             n, v = m.group(1, 2)
-            v = string.strip(v)
-            if "$" in v:
+            v = v.strip()
+            # `$$' is a literal `$' in make
+            tmpv = v.replace('$$', '')
+
+            if "$" in tmpv:
                 notdone[n] = v
             else:
-                try: v = int(v)
-                except ValueError: pass
-                done[n] = v
+                try:
+                    v = int(v)
+                except ValueError:
+                    # insert literal `$'
+                    done[n] = v.replace('$$', '$')
+                else:
+                    done[n] = v
 
     # do variable interpolation here
     while notdone:
@@ -314,7 +321,7 @@
                     else:
                         try: value = int(value)
                         except ValueError:
-                            done[name] = string.strip(value)
+                            done[name] = value.strip()
                         else:
                             done[name] = value
                         del notdone[name]

Modified: python/branches/release26-maint/Lib/distutils/tests/test_sysconfig.py
==============================================================================
--- python/branches/release26-maint/Lib/distutils/tests/test_sysconfig.py	(original)
+++ python/branches/release26-maint/Lib/distutils/tests/test_sysconfig.py	Thu Jun 11 10:26:40 2009
@@ -2,11 +2,20 @@
 
 from distutils import sysconfig
 import os
+import test
 import unittest
 
 from test.test_support import TESTFN
 
 class SysconfigTestCase(unittest.TestCase):
+    def setUp(self):
+        super(SysconfigTestCase, self).setUp()
+        self.makefile = None
+
+    def tearDown(self):
+        if self.makefile is not None:
+            os.unlink(self.makefile)
+        super(SysconfigTestCase, self).tearDown()
 
     def test_get_config_h_filename(self):
         config_h = sysconfig.get_config_h_filename()
@@ -51,8 +60,22 @@
         self.assert_(isinstance(cvars, dict))
         self.assert_(cvars)
 
+    def test_parse_makefile_literal_dollar(self):
+        self.makefile = test.test_support.TESTFN
+        fd = open(self.makefile, 'w')
+        fd.write(r"CONFIG_ARGS=  '--arg1=optarg1' 'ENV=\$$LIB'" '\n')
+        fd.write('VAR=$OTHER\nOTHER=foo')
+        fd.close()
+        d = sysconfig.parse_makefile(self.makefile)
+        self.assertEquals(d, {'CONFIG_ARGS': r"'--arg1=optarg1' 'ENV=\$LIB'",
+                              'OTHER': 'foo'})
+
 
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(SysconfigTestCase))
     return suite
+
+
+if __name__ == '__main__':
+    test.test_support.run_unittest(test_suite())

Modified: python/branches/release26-maint/Misc/NEWS
==============================================================================
--- python/branches/release26-maint/Misc/NEWS	(original)
+++ python/branches/release26-maint/Misc/NEWS	Thu Jun 11 10:26:40 2009
@@ -234,6 +234,10 @@
 Library
 -------
 
+- Issue #5201: distutils.sysconfig.parse_makefile() now understands `$$`
+  in Makefiles. This prevents compile errors when using syntax like:
+  `LDFLAGS='-rpath=\$$LIB:/some/other/path'`. Patch by Floris Bruynooghe.
+
 - Issue #6062: In distutils, fixed the package option of build_ext. Feedback 
   and tests on pywin32 by Tim Golden.
 


More information about the Python-checkins mailing list