[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