You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Eric Gillespie <ep...@pretzelnet.org> on 2002/12/08 03:48:14 UTC

[PATCH] select ra interfaces via configure

Add new options for enabling and disabling ra layers.  The main
purpose behind this feature is to allow *not* building certain
ra layers when they normally would be built (for example,
disabling ra-local when db4 is installed).  A side effect is an
improvement on the current neon detection behavior: lack of neon
is no longer an error, it just triggers building without ra_dav.

* ac-helpers/neon.m4

  (SVN_LIB_NEON): Set svn_lib_neon to 'yes' or 'no' according to
  whether neon was found.  Don't call SVN_DOWNLOAD_NEON when it
  isn't found.

  (SVN_DOWNLOAD_NEON): Use AC_MSG_WARN instead of AC_MSG_ERR.

* build.conf

  (libsvn_ra_dav):
  (libsvn_ra_svn):
  (libsvn_ra_local):
  (svnserve): Create new install targets for these instead of
  using base-lib or fs-lib or fs-bin.  This is so the individual
  targets can be added to local-all, local-install, and
  install-static targets in configure.in.

* configure.in

  New options for enabling or disabling the ra layers (and
  therefore svnserve).  The default is for all to be enabled if
  the appropriate dependencies are available.  Only search for
  neon if ra-dav was requested.  Only search for db if ra-local
  is requested.

Index: ac-helpers/neon.m4
===================================================================
--- ac-helpers/neon.m4	(revision 4051)
+++ ac-helpers/neon.m4	(working copy)
@@ -48,6 +48,7 @@
       case "$NEON_VERSION" in
         $NEON_WANTED_REGEX)
           echo "Using neon found in source directory."
+          svn_lib_neon=yes
           SVN_NEON_INCLUDES=-'I$(abs_srcdir)/neon/src'
           NEON_LIBS="\$(abs_builddir)/neon/src/libneon.la"
 
@@ -90,7 +91,7 @@
         *)
           echo "You have a neon/ subdir containing version $NEON_VERSION,"
           echo "but Subversion needs neon ${NEON_LATEST_WORKING_VER}."
-          SVN_DOWNLOAD_NEON()
+          svn_lib_neon=no
           ;;
       esac
     else
@@ -121,18 +122,19 @@
         NEON_LIBS=`$neon_config --libs`
         CFLAGS="$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`"
         changequote([, ])dnl
+        svn_lib_neon=yes
         ;;
       *)
         echo "You have neon version $NEON_VERSION,"
         echo "but Subversion needs neon $NEON_LATEST_WORKING_VER."
-        SVN_DOWNLOAD_NEON()
+        svn_lib_neon=no
         ;;
     esac
   else
     # no neon subdir, no neon-config in PATH
     AC_MSG_RESULT([nothing])
     echo "No suitable neon can be found."
-    SVN_DOWNLOAD_NEON()
+    svn_lib_neon=no
   fi
 ])
 
@@ -148,5 +150,5 @@
   echo "    ${NEON_URL}"
   echo "unpack the archive using tar/gunzip and rename the resulting"
   echo "directory from ./neon-${NEON_LATEST_WORKING_VER}/ to ./neon/"
-  AC_MSG_ERROR([no suitable neon found])
+  AC_MSG_WARN([no suitable neon found])
 ])
Index: build.conf
===================================================================
--- build.conf	(revision 4051)
+++ build.conf	(working copy)
@@ -130,7 +130,7 @@
 [libsvn_ra_dav]
 type = lib
 path = subversion/libsvn_ra_dav
-install = base-lib
+install = ra-dav-lib
 libs = libsvn_subr $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(NEON_LIBS)
 custom = ra-module
 
@@ -138,7 +138,7 @@
 [libsvn_ra_svn]
 type = lib
 path = subversion/libsvn_ra_svn
-install = base-lib
+install = ra-svn-lib
 libs = libsvn_subr $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS)
 custom = ra-module
 
@@ -146,7 +146,7 @@
 [libsvn_ra_local]
 type = lib
 path = subversion/libsvn_ra_local
-install = fs-lib
+install = ra-local-lib
 libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS)
 custom = ra-module
 
@@ -185,7 +185,7 @@
 [svnserve]
 type = exe
 path = subversion/svnserve
-install = fs-bin
+install = svnserve-bin
 libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr libsvn_ra_svn $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS)
 
 # ----------------------------------------------------------------------------
Index: configure.in
===================================================================
--- configure.in	(revision 4051)
+++ configure.in	(working copy)
@@ -46,6 +46,19 @@
 dnl   (We can add custom defines by creating ./acconfig.h if we wish.)
 AC_CONFIG_HEADER(svn_private_config.h)
 
+AC_ARG_ENABLE(ra-dav,
+              AC_HELP_STRING([--disable-ra-dav], [Do not build ra_dav.]),
+              [enable_ra_dav="$enableval"],
+              [enable_ra_dav='yes'])
+AC_ARG_ENABLE(ra-local,
+              AC_HELP_STRING([--disable-ra-local], [Do not build ra_local.]),
+              [enable_ra_local="$enableval"],
+              [enable_ra_local='yes'])
+AC_ARG_ENABLE(ra-svn,
+              AC_HELP_STRING([--disable-ra-svn], [Do not build ra_svn.]),
+              [enable_ra_svn="$enableval"],
+              [enable_ra_svn='yes'])
+
 dnl Todo: we're English-only now, but GNU Gettext eventually?
 dnl Set of available languages.
 dnl ALL_LINGUAS="de fr es ko nl no pl pt sl sv"
@@ -87,7 +100,7 @@
 SVN_LIB_APR($APR_VER_REGEX)
 SVN_LIB_APRUTIL($APU_VER_REGEX)
 
-if test -d $abs_srcdir/db ; then
+if test "$enable_ra_local" = 'yes' && test -d $abs_srcdir/db ; then
     # Note: We have to configure and build a db subdirectory even if
     # some other berkeley db is configured via --with-berkeley-db
     ### why do we "have to" ?? -gjs
@@ -129,20 +142,22 @@
 
 
 
-NEON_WANTED_REGEX="`sed -n '/NEON_WANTED_REGEX=/s/.*=//p' $srcdir/build/buildcheck.sh`"
-dnl You can skip the neon version check only if you know what you are doing 
-AC_ARG_ENABLE(neon-version-check,
-  AC_HELP_STRING([--disable-neon-version-check],
-		 [do not check the Neon version]),
-  [
-    if test "$enableval" = "no" ; then
-      NEON_WANTED_REGEX="*"
-    fi
-  ],
-  [])
-NEON_LATEST_WORKING_VER="`sed -n '/NEON_LATEST_WORKING_VER=/s/.*=//p' $srcdir/build/buildcheck.sh`"
-eval "`grep '^ *NEON_URL=' $srcdir/build/buildcheck.sh`"
-SVN_LIB_NEON($NEON_WANTED_REGEX, $NEON_LATEST_WORKING_VER, $NEON_URL)
+if test "$enable_ra_dav" = 'yes'; then
+    NEON_WANTED_REGEX="`sed -n '/NEON_WANTED_REGEX=/s/.*=//p' $srcdir/build/buildcheck.sh`"
+    dnl You can skip the neon version check only if you know what you are doing
+    AC_ARG_ENABLE(neon-version-check,
+      AC_HELP_STRING([--disable-neon-version-check],
+                     [do not check the Neon version]),
+                     [
+                         if test "$enableval" = "no" ; then
+                             NEON_WANTED_REGEX="*"
+                         fi
+                     ],
+                     [])
+    NEON_LATEST_WORKING_VER="`sed -n '/NEON_LATEST_WORKING_VER=/s/.*=//p' $srcdir/build/buildcheck.sh`"
+    eval "`grep '^ *NEON_URL=' $srcdir/build/buildcheck.sh`"
+    SVN_LIB_NEON($NEON_WANTED_REGEX, $NEON_LATEST_WORKING_VER, $NEON_URL)
+fi
 
 dnl find Apache with a recent-enough magic module number.
 SVN_FIND_APACHE(20020903)
@@ -157,8 +172,10 @@
 SVN_FS_WANT_DB_MINOR=0
 SVN_FS_WANT_DB_PATCH=14
 # Look for libdb4.so first:
-SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
-                    $SVN_FS_WANT_DB_PATCH, [db4 db])
+if test "$enable_ra_local" = 'yes'; then
+    SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
+                        $SVN_FS_WANT_DB_PATCH, [db4 db])
+fi
 
 
 # Only add *_APACHE_RULE if we also have db, since mod_dav_svn depends on it.
@@ -171,6 +188,26 @@
   INSTALL_RULES="install-base-lib install-fs-lib install-lib install-include install-static $INSTALL_APACHE_RULE"
   FS_TEST_DEPS="\$(FS_TEST_DEPS)"
   FS_TEST_PROGRAMS="\$(FS_TEST_PROGRAMS)"
+
+  if test "$enable_ra_local" = 'yes'; then
+      BUILD_RULES="$BUILD_RULES ra-local-lib"
+      INSTALL_RULES="$INSTALL_RULES install-ra-local-lib"
+  fi
+fi
+
+if test "$enable_ra_svn" = 'yes'; then
+    BUILD_RULES="$BUILD_RULES ra-svn-lib"
+    INSTALL_RULES="$INSTALL_RULES install-ra-svn-lib"
+
+    if test "$svn_lib_berkeley_db" = 'yes'; then
+        BUILD_RULES="$BUILD_RULES svnserve-bin"
+        INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-svnserve-bin"
+    fi
+fi
+
+if test "$enable_ra_dav" = 'yes' && test "$svn_lib_neon" = 'yes'; then
+    BUILD_RULES="$BUILD_RULES ra-dav-lib"
+    INSTALL_RULES="$INSTALL_RULES install-ra-dav-lib"
 fi
 
 AC_SUBST(BUILD_RULES)
@@ -359,17 +396,32 @@
 ])
 
 if test "$enable_shared" = "no" -o "$enable_dso" != "yes"; then
-  AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_DAV, 1,
-        [Defined if libsvn_client should link against libsvn_ra_dav])
-  svn_ra_lib_deps="\$(RA_DAV_DEPS)"
-  svn_ra_lib_link="\$(RA_DAV_LINK)"
-
-  AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SVN, 1,
-      [Defined if libsvn_client should link against libsvn_ra_svn])
-  svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
-  svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
+  svn_ra_lib_deps=
+  svn_ra_lib_link=
+
+  if test "$enable_ra_dav" = "yes" && test "$svn_lib_neon" = "yes"; then
+    AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_DAV, 1,
+          [Defined if libsvn_client should link against libsvn_ra_dav])
+    svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_DAV_DEPS)"
+    svn_ra_lib_link="$svn_ra_lib_link \$(RA_DAV_LINK)"
+  fi
 
-  if test "$svn_lib_berkeley_db" = "yes"; then
+  if test "$enable_ra_svn" = "yes"; then
+    AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SVN, 1,
+        [Defined if libsvn_client should link against libsvn_ra_svn])
+    svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
+    svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
+  fi
+
+  if test "$enable_ra_pipe" = "yes"; then
+    AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_PIPE, 1,
+        [Defined if libsvn_client should link against libsvn_ra_pipe])
+    svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_PIPE_DEPS)"
+    svn_ra_lib_link="$svn_ra_lib_link \$(RA_PIPE_LINK)"
+  fi
+
+  if test "$enable_ra_local" = "yes" \
+     && test "$svn_lib_berkeley_db" = "yes"; then
     AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL, 1,
         [Defined if libsvn_client should link against libsvn_ra_local])
     svn_ra_lib_deps="\$(RA_LOCAL_DEPS) $svn_ra_lib_deps"
@@ -447,3 +499,6 @@
 ;;
 esac
 
+if test "$enable_ra_dav" = 'yes' && test "$svn_lib_neon" = 'no'; then
+    SVN_DOWNLOAD_NEON()
+fi

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] select ra interfaces via configure

Posted by Eric Gillespie <ep...@pretzelnet.org>.
Greg Hudson <gh...@MIT.EDU> writes:

> It shouldn't be that simple.  You'll have to distinguish between an
> explicit --enable-ra-foo ("yes") and the default of "build it it looks
> like we can."

Yeah, but that's easily done.  AC_ARG_ENABLE already provides
the appropriate machinery to make that determination.

--  
Eric Gillespie <*> epg@pretzelnet.org

Build a fire for a man, and he'll be warm for a day.  Set a man on
fire, and he'll be warm for the rest of his life. -Terry Pratchett

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] select ra interfaces via configure

Posted by Greg Hudson <gh...@MIT.EDU>.
On Sun, 2002-12-08 at 11:08, Eric Gillespie wrote:
> > A possible improvement: if the user explicitly specifies
> > --enable-ra-local or --enable-ra-dav and db4 or neon isn't found,
> > perhaps that should result in an error.
> 
> Yeah, probably.  I can just change the AC_MSG_WARNs to
> AC_MSG_ERRORs.  I changed the neon stuff to WARN in the first
> place because that's what was already being done with db, but
> you're probably right.

It shouldn't be that simple.  You'll have to distinguish between an
explicit --enable-ra-foo ("yes") and the default of "build it it looks
like we can."


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] select ra interfaces via configure

Posted by Eric Gillespie <ep...@pretzelnet.org>.
Greg Hudson <gh...@MIT.EDU> writes:

> The ra_pipe stuff is gone as of earlier today, so that part should come
> out.

Doh.  I thought i removed it all.  Check.

> You have db stuff contingent on ra_local being enabled.  But db is also
> needed for libsvn_fs, libsvn_repos, svnserve, mod_dav_svn, svnadmin, and
> so on.

Bleh.  Check.

> A possible improvement: if the user explicitly specifies
> --enable-ra-local or --enable-ra-dav and db4 or neon isn't found,
> perhaps that should result in an error.

Yeah, probably.  I can just change the AC_MSG_WARNs to
AC_MSG_ERRORs.  I changed the neon stuff to WARN in the first
place because that's what was already being done with db, but
you're probably right.

I should be back with a new patch soon.

--  
Eric Gillespie <*> epg@pretzelnet.org

Build a fire for a man, and he'll be warm for a day.  Set a man on
fire, and he'll be warm for the rest of his life. -Terry Pratchett

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] select ra interfaces via configure

Posted by Greg Hudson <gh...@MIT.EDU>.
The ra_pipe stuff is gone as of earlier today, so that part should come
out.

You have db stuff contingent on ra_local being enabled.  But db is also
needed for libsvn_fs, libsvn_repos, svnserve, mod_dav_svn, svnadmin, and
so on.

A possible improvement: if the user explicitly specifies
--enable-ra-local or --enable-ra-dav and db4 or neon isn't found,
perhaps that should result in an error.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org