[Python-checkins] r75023 - in python/branches/release26-maint: Lib/distutils/sysconfig.py

ronald.oussoren python-checkins at python.org
Tue Sep 22 21:31:34 CEST 2009


Author: ronald.oussoren
Date: Tue Sep 22 21:31:34 2009
New Revision: 75023

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

........
  r75022 | ronald.oussoren | 2009-09-22 21:27:44 +0200 (Tue, 22 Sep 2009) | 8 lines
  
  Half of the fix for issue 6957: ensure that distutils
  ignores the '-isysroot' option on OSX when the 
  corresponding SDK is not installed.
  
  This ensures that the user can compile extensions
  on OSX 10.6 using the Python.org installer and a
  default installation of Xcode.
........


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

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	Tue Sep 22 21:31:34 2009
@@ -566,6 +566,29 @@
                         flags = flags + ' ' + arch
                         _config_vars[key] = flags
 
+                # If we're on OSX 10.5 or later and the user tries to
+                # compiles an extension using an SDK that is not present
+                # on the current machine it is better to not use an SDK
+                # than to fail.
+                #
+                # The major usecase for this is users using a Python.org
+                # binary installer  on OSX 10.6: that installer uses
+                # the 10.4u SDK, but that SDK is not installed by default
+                # when you install Xcode.
+                #
+                m = re.search('-isysroot\s+(\S+)', _config_vars['CFLAGS'])
+                if m is not None:
+                    sdk = m.group(1)
+                    if not os.path.exists(sdk):
+                        for key in ('LDFLAGS', 'BASECFLAGS',
+                             # a number of derived variables. These need to be
+                             # patched up as well.
+                            'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
+
+                            flags = _config_vars[key]
+                            flags = re.sub('-isysroot\s+\S+(\s|$)', ' ', flags)
+                            _config_vars[key] = flags
+
     if args:
         vals = []
         for name in args:


More information about the Python-checkins mailing list