]> granicus.if.org Git - python/commitdiff
Fix build issues on OSX 10.6 (issue 6802)
authorRonald Oussoren <ronaldoussoren@mac.com>
Sun, 6 Sep 2009 10:00:26 +0000 (10:00 +0000)
committerRonald Oussoren <ronaldoussoren@mac.com>
Sun, 6 Sep 2009 10:00:26 +0000 (10:00 +0000)
Lib/plat-mac/aepack.py
Lib/plat-mac/applesingle.py
Lib/plat-mac/buildtools.py
Lib/plat-mac/macresource.py
Lib/test/test_aepack.py
Mac/scripts/BuildApplet.py
Makefile.pre.in
Misc/NEWS
configure
configure.in

index 3b31b048cbf85ea4d0e5db00fb047136712e4f1c..6021283e7aa47520ea577e7b2738d2ae88177c0a 100644 (file)
@@ -58,7 +58,11 @@ unpacker_coercions = {
 # Some python types we need in the packer:
 #
 AEDescType = AE.AEDescType
-FSSType = Carbon.File.FSSpecType
+try:
+    FSSType = Carbon.File.FSSpecType
+except AttributeError:
+    class FSSType:
+        pass
 FSRefType = Carbon.File.FSRefType
 AliasType = Carbon.File.AliasType
 
index f6c605fd70cb81e2e705c3d7175d27b27be38e75..13962f6098286cb8974aa0baf318c313d628b647 100644 (file)
@@ -119,8 +119,13 @@ def decode(infile, outpath, resonly=False, verbose=False):
     if not hasattr(infile, 'read'):
         if isinstance(infile, Carbon.File.Alias):
             infile = infile.ResolveAlias()[0]
-        if isinstance(infile, (Carbon.File.FSSpec, Carbon.File.FSRef)):
-            infile = infile.as_pathname()
+
+        if hasattr(Carbon.File, "FSSpec"):
+            if isinstance(infile, (Carbon.File.FSSpec, Carbon.File.FSRef)):
+                infile = infile.as_pathname()
+        else:
+            if isinstance(infile, Carbon.File.FSRef):
+                infile = infile.as_pathname()
         infile = open(infile, 'rb')
 
     asfile = AppleSingle(infile, verbose=verbose)
index 3480226203da05aafaf1a6c255c0aa99269142cc..f137411184b2dfa7a897d793053677613bc7e206 100644 (file)
@@ -15,7 +15,10 @@ import Carbon.File
 import MacOS
 import macostools
 import macresource
-import EasyDialogs
+try:
+    import EasyDialogs
+except ImportError:
+    EasyDialogs = None
 import shutil
 
 
@@ -67,9 +70,13 @@ def process(template, filename, destname, copy_codefragment=0,
         rsrcname=None, others=[], raw=0, progress="default", destroot=""):
 
     if progress == "default":
-        progress = EasyDialogs.ProgressBar("Processing %s..."%os.path.split(filename)[1], 120)
-        progress.label("Compiling...")
-        progress.inc(0)
+        if EasyDialogs is None:
+            print "Compiling %s"%(os.path.split(filename)[1],)
+            process = None
+        else:
+            progress = EasyDialogs.ProgressBar("Processing %s..."%os.path.split(filename)[1], 120)
+            progress.label("Compiling...")
+            progress.inc(0)
     # check for the script name being longer than 32 chars. This may trigger a bug
     # on OSX that can destroy your sourcefile.
     if '#' in os.path.split(filename)[1]:
@@ -119,7 +126,11 @@ def update(template, filename, output):
     if MacOS.runtimemodel == 'macho':
         raise BuildError, "No updating yet for MachO applets"
     if progress:
-        progress = EasyDialogs.ProgressBar("Updating %s..."%os.path.split(filename)[1], 120)
+        if EasyDialogs is None:
+            print "Updating %s"%(os.path.split(filename)[1],)
+            progress = None
+        else:
+            progress = EasyDialogs.ProgressBar("Updating %s..."%os.path.split(filename)[1], 120)
     else:
         progress = None
     if not output:
index f02453ba1d779052a44c458d0a168a91d698671a..d693c87226d6b0faf0e039b64df35619cfaa7406 100644 (file)
@@ -77,52 +77,38 @@ def need(restype, resid, filename=None, modname=None):
 def open_pathname(pathname, verbose=0):
     """Open a resource file given by pathname, possibly decoding an
     AppleSingle file"""
+    # No resource fork. We may be on OSX, and this may be either
+    # a data-fork based resource file or a AppleSingle file
+    # from the CVS repository.
     try:
-        refno = Res.FSpOpenResFile(pathname, 1)
+        refno = Res.FSOpenResourceFile(pathname, u'', 1)
     except Res.Error, arg:
-        if arg[0] in (-37, -39):
-            # No resource fork. We may be on OSX, and this may be either
-            # a data-fork based resource file or a AppleSingle file
-            # from the CVS repository.
-            try:
-                refno = Res.FSOpenResourceFile(pathname, u'', 1)
-            except Res.Error, arg:
-                if arg[0] != -199:
-                    # -199 is "bad resource map"
-                    raise
-            else:
-                return refno
-            # Finally try decoding an AppleSingle file
-            pathname = _decode(pathname, verbose=verbose)
-            refno = Res.FSOpenResourceFile(pathname, u'', 1)
-        else:
+        if arg[0] != -199:
+            # -199 is "bad resource map"
             raise
-    return refno
+    else:
+        return refno
+    # Finally try decoding an AppleSingle file
+    pathname = _decode(pathname, verbose=verbose)
+    refno = Res.FSOpenResourceFile(pathname, u'', 1)
 
 def resource_pathname(pathname, verbose=0):
     """Return the pathname for a resource file (either DF or RF based).
     If the pathname given already refers to such a file simply return it,
     otherwise first decode it."""
+    # No resource fork. We may be on OSX, and this may be either
+    # a data-fork based resource file or a AppleSingle file
+    # from the CVS repository.
     try:
-        refno = Res.FSpOpenResFile(pathname, 1)
-        Res.CloseResFile(refno)
+        refno = Res.FSOpenResourceFile(pathname, u'', 1)
     except Res.Error, arg:
-        if arg[0] in (-37, -39):
-            # No resource fork. We may be on OSX, and this may be either
-            # a data-fork based resource file or a AppleSingle file
-            # from the CVS repository.
-            try:
-                refno = Res.FSOpenResourceFile(pathname, u'', 1)
-            except Res.Error, arg:
-                if arg[0] != -199:
-                    # -199 is "bad resource map"
-                    raise
-            else:
-                return refno
-            # Finally try decoding an AppleSingle file
-            pathname = _decode(pathname, verbose=verbose)
-        else:
+        if arg[0] != -199:
+            # -199 is "bad resource map"
             raise
+    else:
+        return refno
+    # Finally try decoding an AppleSingle file
+    pathname = _decode(pathname, verbose=verbose)
     return pathname
 
 def open_error_resource():
index 5d4ab3e20b0797a37ebb0ab8fd397e1a4f9e02bc..f4ea25b5f046cc13eed53c33f6632896b88e8253 100755 (executable)
@@ -60,6 +60,9 @@ class TestAepack(unittest.TestCase):
             import Carbon.File
         except:
             return
+
+        if not hasattr(Carbon.File, "FSSpec"):
+            return
         o = Carbon.File.FSSpec(os.curdir)
         packed = aepack.pack(o)
         unpacked = aepack.unpack(packed)
@@ -70,6 +73,8 @@ class TestAepack(unittest.TestCase):
             import Carbon.File
         except:
             return
+        if not hasattr(Carbon.File, "FSSpec"):
+            return
         o = Carbon.File.FSSpec(os.curdir).NewAliasMinimal()
         packed = aepack.pack(o)
         unpacked = aepack.unpack(packed)
index e71ebc1261f0731715adc60535752c32f5a3175d..eeeb82bfd7c14895702a53fd5ec5de5eeef602ab 100644 (file)
@@ -12,7 +12,10 @@ sys.stdout = sys.stderr
 
 import os
 import MacOS
-import EasyDialogs
+try:
+    import EasyDialogs
+except ImportError:
+    EasyDialogs = None
 import buildtools
 import getopt
 
@@ -32,7 +35,10 @@ def main():
     try:
         buildapplet()
     except buildtools.BuildError, detail:
-        EasyDialogs.Message(detail)
+        if EasyDialogs is None:
+            print detail
+        else:
+            EasyDialogs.Message(detail)
 
 
 def buildapplet():
@@ -46,6 +52,10 @@ def buildapplet():
     # Ask for source text if not specified in sys.argv[1:]
 
     if not sys.argv[1:]:
+        if EasyDialogs is None:
+            usage()
+            sys.exit(1)
+
         filename = EasyDialogs.AskFileForOpen(message='Select Python source or applet:',
                 typeList=('TEXT', 'APPL'))
         if not filename:
index 8d6cfdc2776b186a280ea18fe8a9514dd5af7292..3176d12d695526f55e2d8476ff3e133928d4625f 100644 (file)
@@ -770,6 +770,7 @@ bininstall: altbininstall
        (cd $(DESTDIR)$(BINDIR); $(LN) python$(VERSION)$(EXE) $(PYTHON))
        -rm -f $(DESTDIR)$(BINDIR)/python-config
        (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python-config)
+       -test -d $(DESTDIR)$(LIBPC) || $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC)
        -rm -f $(DESTDIR)$(LIBPC)/python.pc
        (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python.pc)
 
index a5ea3beb3292baec8c1923c89e3d6181c23eb615..07f90f139bdc6710061e3e98bebb603e890ee2f0 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -1189,6 +1189,8 @@ Tools/Demos
 Build
 -----
 
+- Issue #6802: Fix build issues on MacOSX 10.6
+
 - Issue #6244: Allow detect_tkinter to look for Tcl/Tk 8.6.
 
 - Issue 5390: Add uninstall icon independent of whether file
index 2706337039b6140613c7971e0b1b8e8a7cf1b860..9d9252600b550e689452098a88ff2c8b480f520f 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 74644 .
+# From configure.in Revision: 74667 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for python 2.7.
 #
@@ -1911,7 +1911,6 @@ fi
 
 
 
-ARCH_RUN_32BIT=
 
 
 UNIVERSAL_ARCHS="32-bit"
@@ -3852,7 +3851,7 @@ else
   { echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6; }
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 
 
@@ -4689,6 +4688,7 @@ echo "${ECHO_T}$ac_cv_no_strict_aliasing_ok" >&6; }
 
                 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
                   UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
+                  ARCH_RUN_32BIT="true"
 
                 elif test "$UNIVERSAL_ARCHS" = "all" ; then
                   UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
@@ -4714,12 +4714,22 @@ echo "$as_me: error: proper usage is --with-universalarch=32-bit|64-bit|all" >&2
            cur_target=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'`
            if test ${cur_target} '>' 10.2; then
                    cur_target=10.3
-           fi
-           if test "${UNIVERSAL_ARCHS}" = "all"; then
-                   # Ensure that the default platform for a 4-way
-                   # universal build is OSX 10.5, that's the first
-                   # OS release where 4-way builds make sense.
-                   cur_target='10.5'
+                   if test ${enable_universalsdk}; then
+                           if test "${UNIVERSAL_ARCHS}" = "all"; then
+                                   # Ensure that the default platform for a
+                                   # 4-way universal build is OSX 10.5,
+                                   # that's the first OS release where
+                                   # 4-way builds make sense.
+                                   cur_target='10.5'
+                           fi
+                   else
+                           if test `arch` = "i386"; then
+                                   # On Intel macs default to a deployment
+                                   # target of 10.4, that's the first OSX
+                                   # release with Intel support.
+                                   cur_target="10.4"
+                           fi
+                   fi
            fi
            CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
 
@@ -5381,7 +5391,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 else
   ac_cv_header_stdc=no
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 fi
 
@@ -5402,7 +5412,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 else
   ac_cv_header_stdc=no
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 fi
 
@@ -6500,7 +6510,7 @@ _ACEOF
 
 
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 { echo "$as_me:$LINENO: result: $was_it_defined" >&5
 echo "${ECHO_T}$was_it_defined" >&6; }
@@ -7030,7 +7040,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 else
   ac_cv_type_uid_t=no
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 fi
 { echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
@@ -14457,13 +14467,15 @@ case $ac_sys_system/$ac_sys_release in
 esac
 
 
+ARCH_RUN_32BIT=""
+
 case $ac_sys_system/$ac_sys_release in
   Darwin/[01567]\..*)
     LIBTOOL_CRUFT="-framework System -lcc_dynamic"
     if test "${enable_universalsdk}"; then
            :
     else
-       LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
+        LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
     fi
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
@@ -14475,7 +14487,93 @@ case $ac_sys_system/$ac_sys_release in
         else
             LIBTOOL_CRUFT=""
     fi
-    LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
+    if test "$cross_compiling" = yes; then
+  ac_osx_32bit=no
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+[
+    #include <unistd.h>
+    int main(int argc, char*argv[])
+    {
+      if (sizeof(long) == 4) {
+         return 0;
+      } else {
+         return 1;
+      }
+    ]
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_osx_32bit=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_osx_32bit=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+    if test "${ac_osx_32bit}" = "yes"; then
+       case `arch` in
+       i386)
+               MACOSX_DEFAULT_ARCH="i386"
+               ;;
+       ppc)
+               MACOSX_DEFAULT_ARCH="ppc"
+               ;;
+       *)
+               { { echo "$as_me:$LINENO: error: Unexpected output of 'arch' on OSX" >&5
+echo "$as_me: error: Unexpected output of 'arch' on OSX" >&2;}
+   { (exit 1); exit 1; }; }
+               ;;
+       esac
+    else
+       case `arch` in
+       i386)
+               MACOSX_DEFAULT_ARCH="x86_64"
+               ;;
+       ppc)
+               MACOSX_DEFAULT_ARCH="ppc64"
+               ;;
+       *)
+               { { echo "$as_me:$LINENO: error: Unexpected output of 'arch' on OSX" >&5
+echo "$as_me: error: Unexpected output of 'arch' on OSX" >&2;}
+   { (exit 1); exit 1; }; }
+               ;;
+       esac
+
+       #ARCH_RUN_32BIT="true"
+    fi
+
+    LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
 esac
@@ -15601,7 +15699,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 else
   unistd_defines_pthreads=no
 fi
-rm -f conftest*
+rm -f -r conftest*
 
     { echo "$as_me:$LINENO: result: $unistd_defines_pthreads" >&5
 echo "${ECHO_T}$unistd_defines_pthreads" >&6; }
@@ -17215,7 +17313,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "yes" >/dev/null 2>&1; then
   ipv6type=$i
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                kame)
@@ -17238,7 +17336,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
                                ipv6libdir=/usr/local/v6/lib
                                ipv6trylibc=yes
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                linux-glibc)
@@ -17259,7 +17357,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   ipv6type=$i;
                                ipv6trylibc=yes
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                linux-inet6)
@@ -17297,7 +17395,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
                                ipv6lib=inet6;
                                ipv6libdir=/usr/local/v6/lib
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                v6d)
@@ -17320,7 +17418,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
                                ipv6libdir=/usr/local/v6/lib;
                                BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                zeta)
@@ -17342,7 +17440,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
                                ipv6lib=inet6;
                                ipv6libdir=/usr/local/v6/lib
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                esac
@@ -25159,7 +25257,7 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 fi
 
@@ -25429,7 +25527,7 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 fi
 
index 7b823124de575a9796de437d7523934c0d54a4aa..7b8f19db7e67cfddac14337d5975249cb0d4a95e 100644 (file)
@@ -109,7 +109,6 @@ AC_ARG_ENABLE(universalsdk,
 ])
 AC_SUBST(UNIVERSALSDK)
 
-ARCH_RUN_32BIT=
 AC_SUBST(ARCH_RUN_32BIT)
 
 UNIVERSAL_ARCHS="32-bit"
@@ -947,6 +946,7 @@ yes)
 
                 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
                   UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
+                  ARCH_RUN_32BIT="true"
 
                 elif test "$UNIVERSAL_ARCHS" = "all" ; then
                   UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
@@ -970,12 +970,22 @@ yes)
            cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
            if test ${cur_target} '>' 10.2; then
                    cur_target=10.3
-           fi
-           if test "${UNIVERSAL_ARCHS}" = "all"; then
-                   # Ensure that the default platform for a 4-way
-                   # universal build is OSX 10.5, that's the first
-                   # OS release where 4-way builds make sense.
-                   cur_target='10.5'
+                   if test ${enable_universalsdk}; then
+                           if test "${UNIVERSAL_ARCHS}" = "all"; then
+                                   # Ensure that the default platform for a 
+                                   # 4-way universal build is OSX 10.5, 
+                                   # that's the first OS release where 
+                                   # 4-way builds make sense.
+                                   cur_target='10.5'
+                           fi
+                   else
+                           if test `arch` = "i386"; then
+                                   # On Intel macs default to a deployment
+                                   # target of 10.4, that's the first OSX
+                                   # release with Intel support.
+                                   cur_target="10.4"
+                           fi
+                   fi
            fi
            CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
            
@@ -1508,6 +1518,8 @@ case $ac_sys_system/$ac_sys_release in
     ;;
 esac
 
+
+ARCH_RUN_32BIT=""
 AC_SUBST(LIBTOOL_CRUFT)
 case $ac_sys_system/$ac_sys_release in
   Darwin/@<:@01567@:>@\..*) 
@@ -1515,7 +1527,7 @@ case $ac_sys_system/$ac_sys_release in
     if test "${enable_universalsdk}"; then
            :
     else
-       LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
+        LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
     fi
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
@@ -1527,7 +1539,48 @@ case $ac_sys_system/$ac_sys_release in
         else 
             LIBTOOL_CRUFT=""
     fi
-    LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
+    AC_TRY_RUN([[
+    #include <unistd.h>
+    int main(int argc, char*argv[])
+    {
+      if (sizeof(long) == 4) {
+         return 0;
+      } else {
+         return 1;
+      }
+    ]], ac_osx_32bit=yes,
+       ac_osx_32bit=no,
+       ac_osx_32bit=no)
+    
+    if test "${ac_osx_32bit}" = "yes"; then
+       case `arch` in
+       i386) 
+               MACOSX_DEFAULT_ARCH="i386" 
+               ;;
+       ppc) 
+               MACOSX_DEFAULT_ARCH="ppc" 
+               ;;
+       *)
+               AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
+               ;;
+       esac
+    else
+       case `arch` in
+       i386) 
+               MACOSX_DEFAULT_ARCH="x86_64" 
+               ;;
+       ppc) 
+               MACOSX_DEFAULT_ARCH="ppc64" 
+               ;;
+       *)
+               AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
+               ;;
+       esac
+
+       #ARCH_RUN_32BIT="true"
+    fi
+
+    LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
 esac