- Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
the order that backends for the dbm extension are checked.
This commit is contained in:
parent
971b1b100b
commit
10cbe4886e
|
@ -814,6 +814,9 @@ Tools/Demos
|
|||
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++.
|
||||
|
|
3
README
3
README
|
@ -1068,6 +1068,9 @@ Modules/getpath.o.
|
|||
--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)
|
||||
-------------------------------------------------------------
|
||||
|
|
20
configure.in
20
configure.in
|
@ -1918,6 +1918,26 @@ AC_ARG_WITH(system_ffi,
|
|||
|
||||
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)
|
||||
|
|
95
setup.py
95
setup.py
|
@ -1000,39 +1000,68 @@ class PyBuildExt(build_ext):
|
|||
|
||||
# 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')
|
||||
|
||||
|
|
Loading…
Reference in New Issue