]> granicus.if.org Git - python/commitdiff
Issue4064: architecture string for universal builds on OSX
authorRonald Oussoren <ronaldoussoren@mac.com>
Sun, 28 Dec 2008 19:40:56 +0000 (19:40 +0000)
committerRonald Oussoren <ronaldoussoren@mac.com>
Sun, 28 Dec 2008 19:40:56 +0000 (19:40 +0000)
Doc/distutils/apiref.rst
Lib/distutils/util.py

index a8f74616ab50a6f9753fa0badbee99cef96faa00..a932fbd387ddff93f3087312ff08b1f975766068 100644 (file)
@@ -1100,6 +1100,23 @@ other utility module.
 
    For non-POSIX platforms, currently just returns ``sys.platform``.
 
+   For MacOS X systems the OS version reflects the minimal version on which
+   binaries will run (that is, the value of ``MACOSX_DEPLOYMENT_TARGET``
+   during the build of Python), not the OS version of the current system. 
+
+   For universal binary builds on MacOS X the architecture value reflects
+   the univeral binary status instead of the architecture of the current
+   processor. For 32-bit universal binaries the architecture is ``fat``, 
+   for 4-way universal binaries the architecture is ``universal``. 
+
+   Examples of returned values on MacOS X:
+
+   * ``macosx-10.3-ppc``
+
+   * ``macosx-10.3-fat``
+
+   * ``macosx-10.5-universal``
+
    .. % XXX isn't this also provided by some other non-distutils module?
 
 
index 262a9b8b0486453722bf143f95cac1af4226b8f1..48cc17f6248f1aa8d88aa853acfdb0d5c739315b 100644 (file)
@@ -100,7 +100,11 @@ def get_platform ():
         if not macver:
             macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET')
 
-        if not macver:
+        if 1:
+            # Always calculate the release of the running machine,
+            # needed to determine if we can build fat binaries or not.
+
+            macrelease = macver
             # Get the system version. Reading this plist is a documented
             # way to get the system version (see the documentation for
             # the Gestalt Manager)
@@ -116,16 +120,18 @@ def get_platform ():
                         r'<string>(.*?)</string>', f.read())
                 f.close()
                 if m is not None:
-                    macver = '.'.join(m.group(1).split('.')[:2])
+                    macrelease = '.'.join(m.group(1).split('.')[:2])
                 # else: fall back to the default behaviour
 
+        if not macver:
+            macver = macrelease
+
         if macver:
             from distutils.sysconfig import get_config_vars
             release = macver
             osname = "macosx"
 
-
-            if (release + '.') >= '10.4.' and \
+            if (macrelease + '.') >= '10.4.' and \
                     '-arch' in get_config_vars().get('CFLAGS', '').strip():
                 # The universal build will build fat binaries, but not on
                 # systems before 10.4