Garrett Rooney <rooneg@electricjellyfish.net> writes:
> > and I'll take a look at what's involved in DB4 right now. :-)
>
> great, thanks a lot for all your help.
Here's (most of) a patch for the Berkeley upgrade. There's a bug in
it, as the configure step still fails to detect Berkeley 4.0, but I
think this is pretty close to what we'll need.
However, I just recalled that the whole reason we delayed this upgrade
in the first place is that there's a problem trying to use different
Berkeley versions between Apache and Subversion -- as I remember it,
mod_dav_svn was unable to load a different version of the Berkeley
shared libraries than the rest of httpd 2.0, so we can't upgrade until
Apache/APR does (?).
I think Mike Pilato and Greg Stein can comment more knowledgably about
this. In the meantime, here's the patch if you'd like to try and
figure out what I'm doing wrong. :-) It would be great if we could
have this ready so that when we finally _can_ upgrade, it's a
no-brainer.
-Karl
Upgrade to Berkeley DB 4.0.14.
This patch is unfinished. I think all the necessary code changes are
done, but something's still wrong with the configure step, as it does
not detect Berkeley 4.0 in /usr/local/BerkeleyDB.4.0 even when pass
the --with-berkeley-db flag.
* subversion/libsvn_fs/fs.c (cleanup_fs): Use fs->env->txn_checkpoint.
(svn_fs_close_fs): Use fs->env->txn_stat and fs->env->lock_stat, in
the instrumenting code.
* subversion/libsvn_fs/trail.c (begin_trail): Use
fs->env->txn_begin.
(abort_trail): Use fs->env->txn_abort.
(commit_trail): Use fs->env->txn_commit and fs->env->txn_checkpoint.
* INSTALL: Talk about Berkeley 4.0.14, not 3.3.11.
* ac-helpers/berkeley-db.m4 (SVN_LIB_BERKELEY_DB): Link to the .la
library unconditionally, as Berkeley now generates one. Make
workarounds look for Berkeley 4.0, not 3.3.
* configure.in (SVN_FS_WANT_DB_MAJOR, SVN_FS_WANT_DB_MINOR,
SVN_FS_WANT_DB_PATCH): Set to 4, 0, and 14 respectively.
Index: ./ac-helpers/berkeley-db.m4
===================================================================
--- ./ac-helpers/.svn/text-base/berkeley-db.m4.svn-base Mon Nov 19 15:28:02 2001
+++ ./ac-helpers/berkeley-db.m4 Wed Dec 26 17:20:44 2001
@@ -97,13 +97,7 @@
dbdir=`cd db/dist ; pwd`
SVN_DB_INCLUDES="-I$dbdir"
svn_lib_berkeley_db=yes
- # Linking directly to the .la is broken with --disable-shared
- # because Berkeley db does not seem to generate a .la library.
- if test "$enable_shared" = "yes"; then
- SVN_DB_LIBS="$dbdir/libdb-3.3.la"
- else
- SVN_DB_LIBS="-L$dbdir -ldb"
- fi
+ SVN_DB_LIBS="$dbdir/libdb-4.0.la"
elif test "$status" = "skip"; then
svn_lib_berkeley_db=no
else
@@ -115,9 +109,11 @@
# database library in /usr/local/lib, as libdb.a. There is no
# /usr/local/include/db.h. So if you check for /usr/local first, you'll
# get the old header file from /usr/include, and the new library from
- # /usr/local/lib --- disaster. Check for that bogosity first.
- places="std /usr/local/include/db3:/usr/local/lib /usr/local
- /usr/local/BerkeleyDB.$1.$2 /usr/include/db3:/usr/lib"
+ # /usr/local/lib. Disaster. We check for that bogosity first,
+ # and assume that the bogosity has carried over to the Berkeley
+ # 4.0.x series -- if it hasn't, someone please make a noise.
+ places="std /usr/local/include/db4:/usr/local/lib /usr/local
+ /usr/local/BerkeleyDB.$1.$2 /usr/include/db4:/usr/lib"
fi
# Now `places' is guaranteed to be a list of place specs we should
# search, no matter what flags the user passed.
Index: ./configure.in
===================================================================
--- ./.svn/text-base/configure.in.svn-base Fri Dec 21 11:05:35 2001
+++ ./configure.in Wed Dec 26 16:59:10 2001
@@ -116,9 +116,9 @@
# Build the filesystem library (and repository administration tool)
# only if we have an appropriate version of Berkeley DB.
-SVN_FS_WANT_DB_MAJOR=3
-SVN_FS_WANT_DB_MINOR=3
-SVN_FS_WANT_DB_PATCH=11
+SVN_FS_WANT_DB_MAJOR=4
+SVN_FS_WANT_DB_MINOR=0
+SVN_FS_WANT_DB_PATCH=14
SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
$SVN_FS_WANT_DB_PATCH)
Index: ./subversion/libsvn_fs/trail.c
===================================================================
--- ./subversion/libsvn_fs/.svn/text-base/trail.c.svn-base Mon Nov 19 15:27:58 2001
+++ ./subversion/libsvn_fs/trail.c Wed Dec 26 16:57:06 2001
@@ -52,7 +52,7 @@
trail->pool = svn_pool_create (pool);
trail->undo = 0;
SVN_ERR (DB_WRAP (fs, "beginning Berkeley DB transaction",
- txn_begin (fs->env, 0, &trail->db_txn, 0)));
+ fs->env->txn_begin (fs->env, 0, &trail->db_txn, 0)));
*trail_p = trail;
return SVN_NO_ERROR;
@@ -72,7 +72,7 @@
undo->func (undo->baton);
SVN_ERR (DB_WRAP (fs, "aborting Berkeley DB transaction",
- txn_abort (trail->db_txn)));
+ fs->env->txn_abort (trail->db_txn)));
svn_pool_destroy (trail->pool);
@@ -96,13 +96,13 @@
doesn't return DB_LOCK_DEADLOCK --- all deadlocks are reported
earlier. */
SVN_ERR (DB_WRAP (fs, "committing Berkeley DB transaction",
- txn_commit (trail->db_txn, 0)));
+ fs->env->txn_commit (trail->db_txn, 0)));
/* Do a checkpoint here, if enough has gone on.
The checkpoint parameters below are pretty arbitrary. Perhaps
there should be an svn_fs_berkeley_mumble function to set them. */
SVN_ERR (DB_WRAP (fs, "checkpointing after Berkeley DB transaction",
- txn_checkpoint (fs->env, 1024, 5, 0)));
+ fs->env->txn_checkpoint (fs->env, 1024, 5, 0)));
/* We don't destroy the pool; we assume it contains stuff which will
be useful beyond the transaction. */
Index: ./subversion/libsvn_fs/fs.c
===================================================================
--- ./subversion/libsvn_fs/.svn/text-base/fs.c.svn-base Tue Dec 18 11:51:20 2001
+++ ./subversion/libsvn_fs/fs.c Wed Dec 26 16:52:47 2001
@@ -132,12 +132,12 @@
/* Checkpoint any changes. */
{
- int db_err = txn_checkpoint (env, 0, 0, 0);
+ int db_err = env->txn_checkpoint (env, 0, 0, 0);
while (db_err == DB_INCOMPLETE)
{
apr_sleep (1000000L); /* microseconds, so 1000000L == 1 second */
- db_err = txn_checkpoint (env, 0, 0, 0);
+ db_err = env->txn_checkpoint (env, 0, 0, 0);
}
/* If the environment was not (properly) opened, then txn_checkpoint
@@ -269,8 +269,9 @@
int db_err;
/* Print transaction statistics for this DB env. */
- if ((db_err = txn_stat (fs->env, &t)) != 0)
- fprintf (stderr, "Error running txn_stat(): %s", db_strerror (db_err));
+ if ((db_err = fs->env->txn_stat (fs->env, &t, 0)) != 0)
+ fprintf (stderr, "Error running fs->env->txn_stat(): %s",
+ db_strerror (db_err));
else
{
printf ("*** DB txn stats, right before closing env:\n");
@@ -292,8 +293,9 @@
}
/* Print transaction statistics for this DB env. */
- if ((db_err = lock_stat (fs->env, &l)) != 0)
- fprintf (stderr, "Error running lock_stat(): %s", db_strerror (db_err));
+ if ((db_err = fs->env->lock_stat (fs->env, &l, 0)) != 0)
+ fprintf (stderr, "Error running fs->env->lock_stat(): %s",
+ db_strerror (db_err));
else
{
printf ("*** DB lock stats, right before closing env:\n");
Index: ./INSTALL
===================================================================
--- ./.svn/text-base/INSTALL.svn-base Thu Dec 20 16:34:19 2001
+++ ./INSTALL Wed Dec 26 17:06:11 2001
@@ -148,17 +148,17 @@
building a Subversion client that speaks to a remote (networked)
repository, you don't need it.
- You'll need Berkeley DB 3.3.11 installed on your system. You can
+ You'll need Berkeley DB 4.0.14 installed on your system. You can
get it from http://www.sleepycat.com/.
If you already have another version of Berkeley DB installed and
- don't want to downgrade, you can unpack the Berkeley 3.3.11
+ don't want to downgrade, you can unpack the Berkeley 4.0.14
distribution into a subdir named `db' in the top-level of the
Subversion source tree. Then Subversion will ignore the system
DB and use the one it found in its own source tree.
Alternatively, you can add this flag
- --with-berkeley-db=/usr/local/BerkeleyDB.3.3
+ --with-berkeley-db=/usr/local/BerkeleyDB.4.0
to your `configure' switches, and the build process will use the
named Berkeley. You may need to use a different path, of
@@ -354,11 +354,11 @@
this from happening, you have to tell Apache where to find the
version of db subversion uses. Right before configure:
- export LDFLAGS=-L/usr/local/BerkeleyDB.3.3/lib
- export CPPFLAGS=-I/usr/local/BerkeleyDB.3.3/include
+ export LDFLAGS=-L/usr/local/BerkeleyDB.4.0/lib
+ export CPPFLAGS=-I/usr/local/BerkeleyDB.4.0/include
- Add --with-dbm=db3 to the configure line. This note assumes
- you have installed Berkeley DB 3.3.11 at its default locations.
+ Add --with-dbm=db4 to the configure line. This note assumes
+ you have installed Berkeley DB 4.0.14 at its default locations.
For more info about the db requirement, see section III.C.1.
All instructions below assume you configured Apache to install
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:54 2006