]> granicus.if.org Git - python/commitdiff
support linking the _bsddb extension module against BerkeleyDB 4.5
authorGregory P. Smith <greg@mad-scientist.com>
Fri, 5 Jan 2007 02:09:06 +0000 (02:09 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Fri, 5 Jan 2007 02:09:06 +0000 (02:09 +0000)
[backport of r53252]

Doc/lib/libbsddb.tex
Lib/bsddb/dbobj.py
Lib/bsddb/test/test_1413192.py
Misc/NEWS
Modules/_bsddb.c
setup.py

index 85ea824db08c69148718fd9d3a0394628c272159..e9d7e217b8f20720ab20bd053b579dacd5eae3d4 100644 (file)
@@ -16,7 +16,7 @@ serialize them somehow, typically using \function{marshal.dumps()} or
 \function{pickle.dumps()}.
 
 The \module{bsddb} module requires a Berkeley DB library version from
-3.3 thru 4.4.
+3.3 thru 4.5.
 
 \begin{seealso}
   \seeurl{http://pybsddb.sourceforge.net/}
index 73a3010a0f47dd3dc06319284920d0b678a262ee..b74ee72f76b5307469e882663b1fe5b1d495331b 100644 (file)
@@ -55,8 +55,9 @@ class DBEnv:
         return apply(self._cobj.set_lg_max, args, kwargs)
     def set_lk_detect(self, *args, **kwargs):
         return apply(self._cobj.set_lk_detect, args, kwargs)
-    def set_lk_max(self, *args, **kwargs):
-        return apply(self._cobj.set_lk_max, args, kwargs)
+    if db.version() < (4,5):
+        def set_lk_max(self, *args, **kwargs):
+            return apply(self._cobj.set_lk_max, args, kwargs)
     def set_lk_max_locks(self, *args, **kwargs):
         return apply(self._cobj.set_lk_max_locks, args, kwargs)
     def set_lk_max_lockers(self, *args, **kwargs):
index 3c135365c954f42a593e621ae469d56f5d66dc71..436f407867d6a7f517446da9f6da8df6e3b793ce 100644 (file)
@@ -14,7 +14,7 @@ except ImportError:
 env_name = '.'
 
 env = db.DBEnv()
-env.open(env_name, db.DB_CREATE | db.DB_INIT_TXN)
+env.open(env_name, db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL)
 the_txn = env.txn_begin()
 
 map = db.DB(env)
index 74af3e4c1d05e91a8e0f481d680039ed231b75fc..bf793a3d2cb9f5f136f623a466cf56e9f297bab2 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -124,6 +124,8 @@ Extension Modules
 
 - Make regex engine raise MemoryError if allocating memory fails.
 
+- Added support for linking the bsddb module against BerkeleyDB 4.5.x.
+
 
 Library
 -------
index 8e343a652e9b3c65cb7201b501889d942bfa8ce3..9622c9044e24d01c631d8b492936189cb1170f03 100644 (file)
@@ -98,7 +98,7 @@
 #error "eek! DBVER can't handle minor versions > 9"
 #endif
 
-#define PY_BSDDB_VERSION "4.4.5.1"
+#define PY_BSDDB_VERSION "4.4.5.2"
 static char *rcs_id = "$Id$";
 
 
@@ -4127,6 +4127,7 @@ DBEnv_set_lk_detect(DBEnvObject* self, PyObject* args)
 }
 
 
+#if (DBVER < 45)
 static PyObject*
 DBEnv_set_lk_max(DBEnvObject* self, PyObject* args)
 {
@@ -4142,6 +4143,7 @@ DBEnv_set_lk_max(DBEnvObject* self, PyObject* args)
     RETURN_IF_ERR();
     RETURN_NONE();
 }
+#endif
 
 
 #if (DBVER >= 32)
@@ -5231,7 +5233,9 @@ static PyMethodDef DBEnv_methods[] = {
     {"set_lg_regionmax",(PyCFunction)DBEnv_set_lg_regionmax, METH_VARARGS},
 #endif
     {"set_lk_detect",   (PyCFunction)DBEnv_set_lk_detect,    METH_VARARGS},
+#if (DBVER < 45)
     {"set_lk_max",      (PyCFunction)DBEnv_set_lk_max,       METH_VARARGS},
+#endif
 #if (DBVER >= 32)
     {"set_lk_max_locks", (PyCFunction)DBEnv_set_lk_max_locks, METH_VARARGS},
     {"set_lk_max_lockers", (PyCFunction)DBEnv_set_lk_max_lockers, METH_VARARGS},
@@ -5833,7 +5837,9 @@ DL_EXPORT(void) init_bsddb(void)
     ADD_INT(d, DB_AFTER);
     ADD_INT(d, DB_APPEND);
     ADD_INT(d, DB_BEFORE);
+#if (DBVER < 45)
     ADD_INT(d, DB_CACHED_COUNTS);
+#endif
 #if (DBVER >= 41)
     _addIntToDict(d, "DB_CHECKPOINT", 0);
 #else
@@ -5868,7 +5874,9 @@ DL_EXPORT(void) init_bsddb(void)
     ADD_INT(d, DB_POSITION);
     ADD_INT(d, DB_PREV);
     ADD_INT(d, DB_PREV_NODUP);
+#if (DBVER < 45)
     ADD_INT(d, DB_RECORDCOUNT);
+#endif
     ADD_INT(d, DB_SET);
     ADD_INT(d, DB_SET_RANGE);
     ADD_INT(d, DB_SET_RECNO);
index 5d711819e0f6af38ccbf10ca4aea9bbbd2c30e49..1e5e6e6b3be9f7b35a09ac0e1673690901459303 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -606,7 +606,7 @@ class PyBuildExt(build_ext):
         # a release.  Most open source OSes come with one or more
         # versions of BerkeleyDB already installed.
 
-        max_db_ver = (4, 4)
+        max_db_ver = (4, 5)
         min_db_ver = (3, 3)
         db_setup_debug = False   # verbose debug prints from this script?
 
@@ -623,7 +623,7 @@ class PyBuildExt(build_ext):
             '/sw/include/db3',
         ]
         # 4.x minor number specific paths
-        for x in (0,1,2,3,4):
+        for x in (0,1,2,3,4,5):
             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)
@@ -631,7 +631,7 @@ class PyBuildExt(build_ext):
             db_inc_paths.append('/pkg/db-4.%d/include' % x)
             db_inc_paths.append('/opt/db-4.%d/include' % x)
         # 3.x minor number specific paths
-        for x in (2,3):
+        for x in (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)