diff -up Python-2.5.1/Modules/_bsddb.c.db46 Python-2.5.1/Modules/_bsddb.c --- Python-2.5.1/Modules/_bsddb.c.db46 2007-01-04 21:09:06.000000000 -0500 +++ Python-2.5.1/Modules/_bsddb.c 2008-07-10 09:58:55.000000000 -0400 @@ -5306,11 +5306,13 @@ static PyObject* DBEnv_getattr(DBEnvObject* self, char *name) { if (!strcmp(name, "db_home")) { + const char *home = NULL; CHECK_ENV_NOT_CLOSED(self); - if (self->db_env->db_home == NULL) { + self->db_env->get_home(self->db_env, &home); + if (home == NULL) { RETURN_NONE(); } - return PyString_FromString(self->db_env->db_home); + return PyString_FromString(home); } return Py_FindMethod(DBEnv_methods, (PyObject* )self, name); @@ -5932,22 +5934,37 @@ DL_EXPORT(void) init_bsddb(void) ADD_INT(d, DB_TIME_NOTGRANTED); ADD_INT(d, DB_TXN_NOT_DURABLE); ADD_INT(d, DB_TXN_WRITE_NOSYNC); - ADD_INT(d, DB_LOG_AUTOREMOVE); - ADD_INT(d, DB_DIRECT_LOG); ADD_INT(d, DB_DIRECT_DB); ADD_INT(d, DB_INIT_REP); ADD_INT(d, DB_ENCRYPT); ADD_INT(d, DB_CHKSUM); #endif +#if (DBVER >= 42) && (DBVER < 47) + ADD_INT(d, DB_LOG_AUTOREMOVE); + ADD_INT(d, DB_DIRECT_LOG); +#endif + +#if (DBVER >= 47) + ADD_INT(d, DB_LOG_DIRECT); + ADD_INT(d, DB_LOG_DSYNC); + ADD_INT(d, DB_LOG_IN_MEMORY); + ADD_INT(d, DB_LOG_AUTO_REMOVE); + ADD_INT(d, DB_LOG_ZERO); +#endif + #if (DBVER >= 43) - ADD_INT(d, DB_LOG_INMEMORY); ADD_INT(d, DB_BUFFER_SMALL); ADD_INT(d, DB_SEQ_DEC); ADD_INT(d, DB_SEQ_INC); ADD_INT(d, DB_SEQ_WRAP); #endif +#if (DBVER >= 43) && (DBVER < 47) + ADD_INT(d, DB_LOG_INMEMORY); + ADD_INT(d, DB_DSYNC_LOG); +#endif + #if (DBVER >= 41) ADD_INT(d, DB_ENCRYPT_AES); ADD_INT(d, DB_AUTO_COMMIT); diff -up Python-2.5.1/setup.py.db46 Python-2.5.1/setup.py --- Python-2.5.1/setup.py.db46 2008-07-10 09:55:08.000000000 -0400 +++ Python-2.5.1/setup.py 2008-07-10 09:55:08.000000000 -0400 @@ -606,9 +606,9 @@ class PyBuildExt(build_ext): # a release. Most open source OSes come with one or more # versions of BerkeleyDB already installed. - max_db_ver = (4, 5) + max_db_ver = (4, 7) min_db_ver = (3, 3) - db_setup_debug = False # verbose debug prints from this script? + db_setup_debug = True # verbose debug prints from this script? # construct a list of paths to look for the header file in on # top of the normal inc_dirs. @@ -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,5): + for x in (0,1,2,3,4,5,6,7): 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) @@ -646,7 +646,7 @@ class PyBuildExt(build_ext): for dn in inc_dirs: std_variants.append(os.path.join(dn, 'db3')) std_variants.append(os.path.join(dn, 'db4')) - for x in (0,1,2,3,4): + for x in (0,1,2,3,4,5,6,7): std_variants.append(os.path.join(dn, "db4%d"%x)) std_variants.append(os.path.join(dn, "db4.%d"%x)) for x in (2,3):