[Python-checkins] r47128 - in python/trunk: Mac/BuildScript/build-installer.py setup.py

ronald.oussoren python-checkins at python.org
Tue Jun 27 14:53:53 CEST 2006


Author: ronald.oussoren
Date: Tue Jun 27 14:53:52 2006
New Revision: 47128

Modified:
   python/trunk/Mac/BuildScript/build-installer.py
   python/trunk/setup.py
Log:
Use staticly build copies of zlib and bzip2 to build the OSX installer, that
way the resulting binaries have a better change of running on 10.3.

This patch also updates the search logic for sleepycat db3/4, without this
patch you cannot use a sleepycat build with a non-standard prefix; with this
you can (at least on OSX) if you add the prefix to CPPFLAGS/LDFLAGS at 
configure-time. This change is needed to build the binary installer for OSX.


Modified: python/trunk/Mac/BuildScript/build-installer.py
==============================================================================
--- python/trunk/Mac/BuildScript/build-installer.py	(original)
+++ python/trunk/Mac/BuildScript/build-installer.py	Tue Jun 27 14:53:52 2006
@@ -67,6 +67,8 @@
 SDKPATH="/Developer/SDKs/MacOSX10.4u.sdk"
 #SDKPATH="/"
 
+ARCHLIST=('i386', 'ppc',)
+
 # Source directory (asume we're in Mac/BuildScript)
 SRCDIR=os.path.dirname(
         os.path.dirname(
@@ -91,6 +93,26 @@
 # batteries included python.
 LIBRARY_RECIPES=[
     dict(
+        name="Bzip2 1.0.3",
+        url="http://www.bzip.org/1.0.3/bzip2-1.0.3.tar.gz",
+        configure=None,
+        install='make install PREFIX=%s/usr/local/ CFLAGS="-arch %s -isysroot %s"'%(
+            shellQuote(os.path.join(WORKDIR, 'libraries')),
+            ' -arch '.join(ARCHLIST),
+            SDKPATH,
+        ),
+    ),
+    dict(
+        name="ZLib 1.2.3",
+        url="http://www.gzip.org/zlib/zlib-1.2.3.tar.gz",
+        configure=None,
+        install='make install prefix=%s/usr/local/ CFLAGS="-arch %s -isysroot %s"'%(
+            shellQuote(os.path.join(WORKDIR, 'libraries')),
+            ' -arch '.join(ARCHLIST),
+            SDKPATH,
+        ),
+    ),
+    dict(
         # Note that GNU readline is GPL'd software
         name="GNU Readline 5.1.4",
         url="http://ftp.gnu.org/pub/gnu/readline/readline-5.1.tar.gz" ,
@@ -486,48 +508,49 @@
         runCommand('patch -p%s < %s'%(recipe.get('patchlevel', 1),
             shellQuote(fn),))
 
-    configure_args = [
-        "--prefix=/usr/local",
-        "--enable-static",
-        "--disable-shared",
-        #"CPP=gcc -arch %s -E"%(' -arch '.join(archList,),),
-    ]
-
-    if 'configure_pre' in recipe:
-        args = list(recipe['configure_pre'])
-        if '--disable-static' in args:
-            configure_args.remove('--enable-static')
-        if '--enable-shared' in args:
-            configure_args.remove('--disable-shared')
-        configure_args.extend(args)
-
-    if recipe.get('useLDFlags', 1):
-        configure_args.extend([
-            "CFLAGS=-arch %s -isysroot %s -I%s/usr/local/include"%(
-                    ' -arch '.join(archList),
-                    shellQuote(SDKPATH)[1:-1],
-                    shellQuote(basedir)[1:-1],),
-            "LDFLAGS=-syslibroot,%s -L%s/usr/local/lib -arch %s"%(
-                shellQuote(SDKPATH)[1:-1],
-                shellQuote(basedir)[1:-1],
-                ' -arch '.join(archList)),
-        ])
-    else:
-        configure_args.extend([
-            "CFLAGS=-arch %s -isysroot %s -I%s/usr/local/include"%(
-                    ' -arch '.join(archList),
+    if configure is not None:
+        configure_args = [
+            "--prefix=/usr/local",
+            "--enable-static",
+            "--disable-shared",
+            #"CPP=gcc -arch %s -E"%(' -arch '.join(archList,),),
+        ]
+
+        if 'configure_pre' in recipe:
+            args = list(recipe['configure_pre'])
+            if '--disable-static' in args:
+                configure_args.remove('--enable-static')
+            if '--enable-shared' in args:
+                configure_args.remove('--disable-shared')
+            configure_args.extend(args)
+
+        if recipe.get('useLDFlags', 1):
+            configure_args.extend([
+                "CFLAGS=-arch %s -isysroot %s -I%s/usr/local/include"%(
+                        ' -arch '.join(archList),
+                        shellQuote(SDKPATH)[1:-1],
+                        shellQuote(basedir)[1:-1],),
+                "LDFLAGS=-syslibroot,%s -L%s/usr/local/lib -arch %s"%(
                     shellQuote(SDKPATH)[1:-1],
-                    shellQuote(basedir)[1:-1],),
-        ])
+                    shellQuote(basedir)[1:-1],
+                    ' -arch '.join(archList)),
+            ])
+        else:
+            configure_args.extend([
+                "CFLAGS=-arch %s -isysroot %s -I%s/usr/local/include"%(
+                        ' -arch '.join(archList),
+                        shellQuote(SDKPATH)[1:-1],
+                        shellQuote(basedir)[1:-1],),
+            ])
 
-    if 'configure_post' in recipe:
-        configure_args = configure_args = list(recipe['configure_post'])
+        if 'configure_post' in recipe:
+            configure_args = configure_args = list(recipe['configure_post'])
 
-    configure_args.insert(0, configure)
-    configure_args = [ shellQuote(a) for a in configure_args ]
+        configure_args.insert(0, configure)
+        configure_args = [ shellQuote(a) for a in configure_args ]
 
-    print "Running configure for %s"%(name,)
-    runCommand(' '.join(configure_args) + ' 2>&1')
+        print "Running configure for %s"%(name,)
+        runCommand(' '.join(configure_args) + ' 2>&1')
 
     print "Running install for %s"%(name,)
     runCommand('{ ' + install + ' ;} 2>&1')
@@ -550,7 +573,7 @@
     os.makedirs(os.path.join(universal, 'usr', 'local', 'include'))
 
     for recipe in LIBRARY_RECIPES:
-        buildRecipe(recipe, universal, ('i386', 'ppc',))
+        buildRecipe(recipe, universal, ARCHLIST)
 
 
 
@@ -997,7 +1020,7 @@
     buildPythonDocs()
     fn = os.path.join(WORKDIR, "_root", "Applications",
                 "MacPython %s"%(getVersion(),), "Update Shell Profile.command")
-    shutil.copy("scripts/postflight.patch-profile",  fn)
+    patchFile("scripts/postflight.patch-profile",  fn)
     os.chmod(fn, 0755)
 
     folder = os.path.join(WORKDIR, "_root", "Applications", "MacPython %s"%(

Modified: python/trunk/setup.py
==============================================================================
--- python/trunk/setup.py	(original)
+++ python/trunk/setup.py	Tue Jun 27 14:53:52 2006
@@ -638,6 +638,24 @@
             db_inc_paths.append('/pkg/db-3.%d/include' % x)
             db_inc_paths.append('/opt/db-3.%d/include' % x)
 
+        # Add some common subdirectories for Sleepycat DB to the list,
+        # based on the standard include directories. This way DB3/4 gets
+        # picked up when it is installed in a non-standard prefix and
+        # the user has added that prefix into inc_dirs.
+        std_variants = []
+        for dn in inc_dirs:
+            std_variants.append(os.path.join(dn, 'db3'))
+            std_variants.append(os.path.join(dn, 'db4'))
+            for x in (0,1,2,3,4):
+                std_variants.append(os.path.join(dn, "db4%d"%x))
+                std_variants.append(os.path.join(dn, "db4.%d"%x))
+            for x in (2,3):
+                std_variants.append(os.path.join(dn, "db3%d"%x))
+                std_variants.append(os.path.join(dn, "db3.%d"%x))
+
+        db_inc_paths = std_variants + db_inc_paths 
+
+
         db_ver_inc_map = {}
 
         class db_found(Exception): pass
@@ -940,13 +958,23 @@
                     break
             if version >= version_req:
                 if (self.compiler.find_library_file(lib_dirs, 'z')):
+                    if sys.platform == "darwin":
+                        zlib_extra_link_args = ('-Wl,-search_paths_first',)
+                    else:
+                        zlib_extra_link_args = ()
                     exts.append( Extension('zlib', ['zlibmodule.c'],
-                                           libraries = ['z']) )
+                                           libraries = ['z'],
+                                           extra_link_args = zlib_extra_link_args))
 
         # Gustavo Niemeyer's bz2 module.
         if (self.compiler.find_library_file(lib_dirs, 'bz2')):
+            if sys.platform == "darwin":
+                bz2_extra_link_args = ('-Wl,-search_paths_first',)
+            else:
+                bz2_extra_link_args = ()
             exts.append( Extension('bz2', ['bz2module.c'],
-                                   libraries = ['bz2']) )
+                                   libraries = ['bz2'],
+                                   extra_link_args = bz2_extra_link_args) )
 
         # Interface to the Expat XML parser
         #


More information about the Python-checkins mailing list