[Python-checkins] r72107 - in python/trunk: Misc/NEWS README configure.in setup.py
matthias.klose
python-checkins at python.org
Wed Apr 29 19:18:20 CEST 2009
Author: matthias.klose
Date: Wed Apr 29 19:18:19 2009
New Revision: 72107
Log:
- Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
the order that backends for the dbm extension are checked.
Modified:
python/trunk/Misc/NEWS
python/trunk/README
python/trunk/configure.in
python/trunk/setup.py
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Wed Apr 29 19:18:19 2009
@@ -814,6 +814,9 @@
Build
-----
+- Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
+ the order that backends for the dbm extension are checked.
+
- Link the shared python library with $(MODLIBS).
- Issue #5134: Silence compiler warnings when compiling sqlite with VC++.
Modified: python/trunk/README
==============================================================================
--- python/trunk/README (original)
+++ python/trunk/README Wed Apr 29 19:18:19 2009
@@ -1068,6 +1068,9 @@
--with-system-ffi: Build the _ctypes extension module using an ffi
library installed on the system.
+--with-dbmliborder=db1:db2:...: Specify the order that backends for the
+ dbm extension are checked. Valid value is a colon separated string
+ with the backend names `ndbm', `gdbm' and `bdb'.
Building for multiple architectures (using the VPATH feature)
-------------------------------------------------------------
Modified: python/trunk/configure.in
==============================================================================
--- python/trunk/configure.in (original)
+++ python/trunk/configure.in Wed Apr 29 19:18:19 2009
@@ -1918,6 +1918,26 @@
AC_MSG_RESULT($with_system_ffi)
+# Check for --with-dbmliborder
+AC_MSG_CHECKING(for --with-dbmliborder)
+AC_ARG_WITH(dbmliborder,
+ AC_HELP_STRING(--with-dbmliborder=db1:db2:..., order to check db backends for dbm),
+[
+if test x$with_dbmliborder = xyes
+then
+AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
+else
+ for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
+ if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
+ then
+ AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
+ fi
+ done
+ AC_MSG_RESULT($with_dbmliborder)
+fi],
+[AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
+])
+
# Determine if signalmodule should be used.
AC_SUBST(USE_SIGNAL_MODULE)
AC_SUBST(SIGNAL_OBJS)
Modified: python/trunk/setup.py
==============================================================================
--- python/trunk/setup.py (original)
+++ python/trunk/setup.py Wed Apr 29 19:18:19 2009
@@ -1000,39 +1000,68 @@
# The standard Unix dbm module:
if platform not in ['cygwin']:
- if find_file("ndbm.h", inc_dirs, []) is not None:
- # Some systems have -lndbm, others don't
- if self.compiler.find_library_file(lib_dirs, 'ndbm'):
- ndbm_libs = ['ndbm']
- else:
- ndbm_libs = []
- exts.append( Extension('dbm', ['dbmmodule.c'],
- define_macros=[('HAVE_NDBM_H',None)],
- libraries = ndbm_libs ) )
- elif self.compiler.find_library_file(lib_dirs, 'gdbm'):
- gdbm_libs = ['gdbm']
- if self.compiler.find_library_file(lib_dirs, 'gdbm_compat'):
- gdbm_libs.append('gdbm_compat')
- if find_file("gdbm/ndbm.h", inc_dirs, []) is not None:
- exts.append( Extension(
- 'dbm', ['dbmmodule.c'],
- define_macros=[('HAVE_GDBM_NDBM_H',None)],
- libraries = gdbm_libs ) )
- elif find_file("gdbm-ndbm.h", inc_dirs, []) is not None:
- exts.append( Extension(
- 'dbm', ['dbmmodule.c'],
- define_macros=[('HAVE_GDBM_DASH_NDBM_H',None)],
- libraries = gdbm_libs ) )
- else:
- missing.append('dbm')
- elif db_incs is not None:
- exts.append( 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))
+ config_args = sysconfig.get_config_var("CONFIG_ARGS")
+ dbm_args = [arg.split('=')[-1] for arg in args.split()
+ if arg.startswith('--with-dbmliborder=')]
+ if dbm_args:
+ dbm_order = "ndbm:gdbm:bdb".split(":")
+ else:
+ dbm_order = dbm_args.split(":")
+ dbmext = None
+ for cand in dbm_order:
+ if cand == "ndbm":
+ if find_file("ndbm.h", inc_dirs, []) is not None:
+ # Some systems have -lndbm, others don't
+ if self.compiler.find_library_file(lib_dirs, 'ndbm'):
+ ndbm_libs = ['ndbm']
+ else:
+ ndbm_libs = []
+ print "building dbm using ndbm"
+ dbmext = Extension('dbm', ['dbmmodule.c'],
+ define_macros=[
+ ('HAVE_NDBM_H',None),
+ ],
+ libraries=ndbm_libs)
+ break
+
+ elif cand == "gdbm":
+ if self.compiler.find_library_file(lib_dirs, 'gdbm'):
+ gdbm_libs = ['gdbm']
+ if self.compiler.find_library_file(lib_dirs, 'gdbm_compat'):
+ gdbm_libs.append('gdbm_compat')
+ if find_file("gdbm/ndbm.h", inc_dirs, []) is not None:
+ print "building dbm using gdbm"
+ dbmext = Extension(
+ 'dbm', ['dbmmodule.c'],
+ define_macros=[
+ ('HAVE_GDBM_NDBM_H', None),
+ ],
+ libraries = gdbm_libs)
+ break
+ if find_file("gdbm-ndbm.h", inc_dirs, []) is not None:
+ print "building dbm using gdbm"
+ dbmext = Extension(
+ 'dbm', ['dbmmodule.c'],
+ define_macros=[
+ ('HAVE_GDBM_DASH_NDBM_H', None),
+ ],
+ 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)
else:
missing.append('dbm')
More information about the Python-checkins
mailing list