[Python-checkins] r73807 - python/branches/py3k/setup.py

Georg Brandl g.brandl at gmx.net
Tue Jul 7 21:28:30 CEST 2009


This should be reverted -- the support code is not for the bsddb module,
but for building the dbm module with bsddb.

Georg

benjamin.peterson schrieb:
> Author: benjamin.peterson
> Date: Fri Jul  3 15:22:00 2009
> New Revision: 73807
> 
> Log:
> rip out bsddb support code
> 
> Modified:
>    python/branches/py3k/setup.py
> 
> Modified: python/branches/py3k/setup.py
> ==============================================================================
> --- python/branches/py3k/setup.py	(original)
> +++ python/branches/py3k/setup.py	Fri Jul  3 15:22:00 2009
> @@ -363,6 +363,7 @@
>              inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
>  
>          # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
> +        # XXX db is not needed anymore, should this be removed?
>          if platform in ['osf1', 'unixware7', 'openunix8']:
>              lib_dirs += ['/usr/ccs/lib']
>  
> @@ -625,179 +626,6 @@
>              exts.append( Extension('_md5', ['md5module.c']) )
>              exts.append( Extension('_sha1', ['sha1module.c']) )
>  
> -        # Modules that provide persistent dictionary-like semantics.  You will
> -        # probably want to arrange for at least one of them to be available on
> -        # your machine, though none are defined by default because of library
> -        # dependencies.  The Python module dbm/__init__.py provides an
> -        # implementation independent wrapper for these; dbm/dumb.py provides
> -        # similar functionality (but slower of course) implemented in Python.
> -
> -        # Sleepycat^WOracle Berkeley DB interface.
> -        #  http://www.oracle.com/database/berkeley-db/db/index.html
> -        #
> -        # This requires the Sleepycat^WOracle DB code. The supported versions
> -        # are set below.  Visit the URL above to download
> -        # a release.  Most open source OSes come with one or more
> -        # versions of BerkeleyDB already installed.
> -
> -        max_db_ver = (4, 7)
> -        min_db_ver = (3, 3)
> -        db_setup_debug = False   # verbose debug prints from this script?
> -
> -        def allow_db_ver(db_ver):
> -            """Returns a boolean if the given BerkeleyDB version is acceptable.
> -
> -            Args:
> -              db_ver: A tuple of the version to verify.
> -            """
> -            if not (min_db_ver <= db_ver <= max_db_ver):
> -                return False
> -            return True
> -
> -        def gen_db_minor_ver_nums(major):
> -            if major == 4:
> -                for x in range(max_db_ver[1]+1):
> -                    if allow_db_ver((4, x)):
> -                        yield x
> -            elif major == 3:
> -                for x in (3,):
> -                    if allow_db_ver((3, x)):
> -                        yield x
> -            else:
> -                raise ValueError("unknown major BerkeleyDB version", major)
> -
> -        # construct a list of paths to look for the header file in on
> -        # top of the normal inc_dirs.
> -        db_inc_paths = [
> -            '/usr/include/db4',
> -            '/usr/local/include/db4',
> -            '/opt/sfw/include/db4',
> -            '/usr/include/db3',
> -            '/usr/local/include/db3',
> -            '/opt/sfw/include/db3',
> -            # Fink defaults (http://fink.sourceforge.net/)
> -            '/sw/include/db4',
> -            '/sw/include/db3',
> -        ]
> -        # 4.x minor number specific paths
> -        for x in gen_db_minor_ver_nums(4):
> -            db_inc_paths.append('/usr/include/db4%d' % x)
> -            db_inc_paths.append('/usr/include/db4.%d' % x)
> -            db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x)
> -            db_inc_paths.append('/usr/local/include/db4%d' % x)
> -            db_inc_paths.append('/pkg/db-4.%d/include' % x)
> -            db_inc_paths.append('/opt/db-4.%d/include' % x)
> -            # MacPorts default (http://www.macports.org/)
> -            db_inc_paths.append('/opt/local/include/db4%d' % x)
> -        # 3.x minor number specific paths
> -        for x in gen_db_minor_ver_nums(3):
> -            db_inc_paths.append('/usr/include/db3%d' % x)
> -            db_inc_paths.append('/usr/local/BerkeleyDB.3.%d/include' % x)
> -            db_inc_paths.append('/usr/local/include/db3%d' % x)
> -            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 gen_db_minor_ver_nums(4):
> -                std_variants.append(os.path.join(dn, "db4%d"%x))
> -                std_variants.append(os.path.join(dn, "db4.%d"%x))
> -            for x in gen_db_minor_ver_nums(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_inc_paths = [p for p in db_inc_paths if os.path.exists(p)]
> -
> -        db_ver_inc_map = {}
> -
> -        class db_found(Exception): pass
> -        try:
> -            # See whether there is a Sleepycat header in the standard
> -            # search path.
> -            for d in inc_dirs + db_inc_paths:
> -                f = os.path.join(d, "db.h")
> -                if db_setup_debug: print("db: looking for db.h in", f)
> -                if os.path.exists(f):
> -                    f = open(f).read()
> -                    m = re.search(r"#define\WDB_VERSION_MAJOR\W(\d+)", f)
> -                    if m:
> -                        db_major = int(m.group(1))
> -                        m = re.search(r"#define\WDB_VERSION_MINOR\W(\d+)", f)
> -                        db_minor = int(m.group(1))
> -                        db_ver = (db_major, db_minor)
> -
> -                        # Avoid 4.6 prior to 4.6.21 due to a BerkeleyDB bug
> -                        if db_ver == (4, 6):
> -                            m = re.search(r"#define\WDB_VERSION_PATCH\W(\d+)", f)
> -                            db_patch = int(m.group(1))
> -                            if db_patch < 21:
> -                                print("db.h:", db_ver, "patch", db_patch,
> -                                      "being ignored (4.6.x must be >= 4.6.21)")
> -                                continue
> -
> -                        if ( (db_ver not in db_ver_inc_map) and
> -                            allow_db_ver(db_ver) ):
> -                            # save the include directory with the db.h version
> -                            # (first occurrence only)
> -                            db_ver_inc_map[db_ver] = d
> -                            if db_setup_debug:
> -                                print("db.h: found", db_ver, "in", d)
> -                        else:
> -                            # we already found a header for this library version
> -                            if db_setup_debug: print("db.h: ignoring", d)
> -                    else:
> -                        # ignore this header, it didn't contain a version number
> -                        if db_setup_debug:
> -                            print("db.h: no version number version in", d)
> -
> -            db_found_vers = list(db_ver_inc_map.keys())
> -            db_found_vers.sort()
> -
> -            while db_found_vers:
> -                db_ver = db_found_vers.pop()
> -                db_incdir = db_ver_inc_map[db_ver]
> -
> -                # check lib directories parallel to the location of the header
> -                db_dirs_to_check = [
> -                    db_incdir.replace("include", 'lib64'),
> -                    db_incdir.replace("include", 'lib'),
> -                ]
> -                db_dirs_to_check = list(filter(os.path.isdir, db_dirs_to_check))
> -
> -                # Look for a version specific db-X.Y before an ambiguoius dbX
> -                # XXX should we -ever- look for a dbX name?  Do any
> -                # systems really not name their library by version and
> -                # symlink to more general names?
> -                for dblib in (('db-%d.%d' % db_ver),
> -                              ('db%d%d' % db_ver),
> -                              ('db%d' % db_ver[0])):
> -                    dblib_file = self.compiler.find_library_file(
> -                                    db_dirs_to_check + lib_dirs, dblib )
> -                    if dblib_file:
> -                        dblib_dir = [ os.path.abspath(os.path.dirname(dblib_file)) ]
> -                        raise db_found
> -                    else:
> -                        if db_setup_debug: print("db lib: ", dblib, "not found")
> -
> -        except db_found:
> -            if db_setup_debug:
> -                print("bsddb using BerkeleyDB lib:", db_ver, dblib)
> -                print("bsddb lib dir:", dblib_dir, " inc dir:", db_incdir)
> -            db_incs = [db_incdir]
> -            dblibs = [dblib]
> -        else:
> -            if db_setup_debug: print("db: no appropriate library found")
> -            db_incs = None
> -            dblibs = []
> -            dblib_dir = None
> -
>          # The sqlite interface
>          sqlite_setup_debug = False   # verbose debug prints from this script?
>  
> @@ -902,7 +730,7 @@
>              if dbm_args:
>                  dbm_order = dbm_args[-1].split(":")
>              else:
> -                dbm_order = "ndbm:gdbm:bdb".split(":")
> +                dbm_order = "ndbm:gdbm".split(":")
>              dbmext = None
>              for cand in dbm_order:
>                  if cand == "ndbm":
> @@ -943,18 +771,6 @@
>                                      ],
>                                  libraries = gdbm_libs)
>                              break
> -                elif cand == "bdb":
> -                    if db_incs is not None:
> -                        print("building dbm using bdb")
> -                        dbmext = Extension('_dbm', ['_dbmmodule.c'],
> -                                           library_dirs=dblib_dir,
> -                                           runtime_library_dirs=dblib_dir,
> -                                           include_dirs=db_incs,
> -                                           define_macros=[
> -                                               ('HAVE_BERKDB_H', None),
> -                                               ('DB_DBM_HSEARCH', None),
> -                                               ],
> -                                           libraries=dblibs)
>                          break
>              if dbmext is not None:
>                  exts.append(dbmext)



More information about the Python-checkins mailing list