Hi all.
So it seems that most folks are
going to need to build an updated
version of Berkeley DB for use
with subversion. I have a Red Hat
6.2 box and it appears that my
version of Berkeley DB is too
old for subversion :(
Since we need to build it,
I decided to add db to the
subversion top-level configure
by duplicating how neon is
integrated.
Why build our own Berkeley DB?
(1) Every developer should be
running the exact same code.
There has already been one example
where different versions of the
db lib have caused problems.
Statically linking in a known
version of Berkeley DB is the
best way to make sure nobody
get bitten by some odd little
bug caused by version conflicts.
(2) Building subversion should
be easy.
It is really critical that
folks are able to build with
a minimum of fuss. Folks
don't want to go download
and build a bunch of stuff.
One toplevel configure
should do it all for them.
We should concern ourselves
with making it easy for joe
developer out there to get
subversion built with the
minimum of fuss.
Distribution builders
and power users can always
use an existing library via
the --with-berkeley-db switch.
(3) The client side fs should build
by default.
The default build should support
a local filesystem as well as
a networked interface. Currently,
the local fs code will not get
built if a good version of db
can not be found on the system.
Unknowns:
Is db-3.2.9 the right version?
Should the default db configure
be static? We would need to
pass the --enable-dynamic
option to db's configure
script to enable shared libs.
Shared libs are a bit more
dangerous since they are
harder to build/debug and
more can go wrong. On the
other hand svn libs are
currently being built shared.
Should the --enable-debug or
--enable-posixmutexes flags
be passed to db's configure?
Should the db dir be required?
This patch will build the
old way if the db subdir
is not in the tree or if
another location is passed
via the --with-berkeley-db
switch.
cheers
Mo DeJong
Red Hat Inc
2001-03-04 Mo DeJong <mdejong@redhat.com>
* Makefile.am: Add DB_DUBDIR to SUBDIRS.
DB_SUBDIR is empty when db is not built
in the subversion tree.
* autogen.sh: Add gen time check for
db subdir.
* configure.in: Configure in the db
subdir if it exists.
* ac-helpers/berkeley-db.m4: Add
new builtin status. It will set the
flags to use the db dir in the
build directory.
* ac-helpers/get-db-ver.sh: Add
script to determine the version
of the db package in the srcdir.
(New File)
% cat ac-helpers/get-db-ver.sh
#! /bin/sh
#
# USAGE: get-db-ver.sh DIRECTORY
#
conf=$1/dist/RELEASE
# Tested with the 3.2.9 release from Sleepycat
major=`sed -n '/DB_VERSION_MAJOR=/s/.*=//p' $conf`
minor=`sed -n '/DB_VERSION_MINOR=/s/.*=//p' $conf`
release=`sed -n '/DB_VERSION_PATCH=/s/.*=//p' $conf`
echo $major.$minor.$release
(Patch files)
Index: Makefile.am
===================================================================
RCS file: /cvs/subversion/Makefile.am,v
retrieving revision 1.17
diff -u -r1.17 Makefile.am
--- Makefile.am 2001/02/05 19:21:25 1.17
+++ Makefile.am 2001/03/05 08:10:56
@@ -8,7 +8,7 @@
## dependencies between Makefile.am, Makefile.in, and Makefile.
## In other words, SUBDIRS does not completely control automake
## generation.
-SUBDIRS = apr expat-lite neon subversion doc
+SUBDIRS = apr expat-lite neon @DB_SUBDIR@ subversion doc
ACLOCAL = @ACLOCAL@ -I ac-helpers
Index: autogen.sh
===================================================================
RCS file: /cvs/subversion/autogen.sh,v
retrieving revision 1.36
diff -u -r1.36 autogen.sh
--- autogen.sh 2001/02/24 09:09:32 1.36
+++ autogen.sh 2001/03/05 08:10:56
@@ -33,12 +33,14 @@
# Handle the neon/ subdir
NEON_WANTED=0.11.0
+NEON_URL="http://www.webdav.org/neon/neon-${NEON_WANTED}.tar.gz"
+
if [ ! -d neon ]; then
echo ""
echo "...Uh oh, there is a problem."
echo "You don't have a neon/ subdirectory here."
echo "Please get neon ${NEON_WANTED} from:"
- echo " http://www.webdav.org/neon/neon-${NEON_WANTED}.tar.gz"
+ echo " ${NEON_URL}"
echo ""
echo "Unpack the archive using tar/gunzip and rename the resulting"
echo "directory from ./neon-${NEON_WANTED}/ to ./neon/"
@@ -52,13 +54,50 @@
echo "You have a neon/ subdir containing version $NEON_VERSION,"
echo "but Subversion needs neon ${NEON_WANTED}."
echo "Please get neon ${NEON_WANTED} from:"
- echo " http://www.webdav.org/neon/neon-${NEON_WANTED}.tar.gz"
+ echo " ${NEON_URL}"
echo ""
echo "Unpack the archive using tar/gunzip and rename the resulting"
echo "directory from ./neon-${NEON_WANTED}/ to ./neon/"
echo ""
exit 1
fi
+
+
+# Handle the db/ subdir
+DB_WANTED=3.2.9
+DB_URL="http://www.sleepycat.com/update/3.2.9/db-3.2.9.tar.gz"
+
+if [ ! -d db ]; then
+ echo ""
+ echo "...Uh oh, there is a problem."
+ echo "You don't have a db/ subdirectory here."
+ echo "Please get berkely DB ${DB_WANTED} from:"
+ echo " ${DB_URL}"
+ echo ""
+ echo "Unpack the archive using tar/gunzip and rename the resulting"
+ echo "directory from ./db-${NEON_WANTED}/ to ./db/"
+ echo ""
+ exit 1
+fi
+
+DB_VERSION=`ac-helpers/get-db-ver.sh db`
+if test "$DB_WANTED" != "$DB_VERSION"; then
+ echo ""
+ echo "...Uh oh, there is a problem."
+ echo "You have a db/ subdir containing version $DB_VERSION,"
+ echo "but Subversion needs ${DB_WANTED}."
+ echo "Please get berkely DB ${DB_WANTED} from:"
+ echo " ${DB_URL}"
+ echo ""
+ echo "Unpack the archive using tar/gunzip and rename the resulting"
+ echo "directory from ./db-${DB_WANTED}/ to ./db/"
+ echo ""
+ exit 1
+fi
+
+
+
+
# Produce aclocal.m4, so autoconf gets the automake macros it needs
echo "Creating aclocal.m4..."
Index: configure.in
===================================================================
RCS file: /cvs/subversion/configure.in,v
retrieving revision 1.67
diff -u -r1.67 configure.in
--- configure.in 2001/03/02 23:38:20 1.67
+++ configure.in 2001/03/05 08:10:56
@@ -44,6 +44,13 @@
if test "$enable_subdir_config" = "yes"; then
APR_SUBDIR_CONFIG(apr)
APR_SUBDIR_CONFIG(neon, --with-expat="$abs_srcdir/expat-lite/libexpat.la")
+
+ if test -d $abs_srcdir/db ; then
+ APR_SUBDIR_CONFIG(db/dist)
+ # Note: DB_SUBDIR is used in subversion/Makefile.am only
+ DB_SUBDIR=db/dist
+ fi
+ AC_SUBST(DB_SUBDIR)
fi
@@ -260,7 +267,7 @@
the Subversion filesystem library, part of
-the server, requires Berkeley DB version 3.1.14 or newer, which you
+the server, requires Berkeley DB version 3.2.9 or newer, which you
don't seem to have installed. We have created makefiles which will
build the Subversion client code only, and skip the server.
You can find latest version of Berkeley DB at http://www.sleepycat.com.])
Index: ac-helpers/berkeley-db.m4
===================================================================
RCS file: /cvs/subversion/ac-helpers/berkeley-db.m4,v
retrieving revision 1.6
diff -u -r1.6 berkeley-db.m4
--- ac-helpers/berkeley-db.m4 2001/03/02 23:38:22 1.6
+++ ac-helpers/berkeley-db.m4 2001/03/05 08:10:57
@@ -71,11 +71,32 @@
fi
],
[
- status=if-found
- places=search
+ # No --with-berkeley-db option:
+ #
+ # Check to see if a db directory exists in the build directory.
+ # If it does then we will be using the berkeley DB version
+ # from the source tree. We can't test it since it is not built
+ # yet, so we have to assume it is the correct version.
+
+ AC_MSG_CHECKING([for built-in Berkeley DB])
+
+ if test -d db ; then
+ status=builtin
+ AC_MSG_RESULT([yes])
+ else
+ status=if-found
+ places=search
+ AC_MSG_RESULT([no])
+ fi
])
- if test "$status" = "skip"; then
+ if test "$status" = "builtin"; then
+ # Use the include a nd lib files in the build dir.
+ dbdir=`cd db/dist ; pwd`
+ CPPFLAGS="$CPPFLAGS -I$dbdir"
+ LIBS="$LIBS -L$dbdir -ldb"
+ svn_lib_berkeley_db=yes
+ elif test "$status" = "skip"; then
svn_lib_berkeley_db=no
else
Received on Sat Oct 21 14:36:25 2006