You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Jack Bates <ms...@freezone.co.uk> on 2008/03/08 23:40:56 UTC

building against subversion using autoconf

I'm working on an Apache module, like mod_dav_svn, but using mod_atom to
support Subversion repository access with the Atom Publishing Protocol,
RFC 5023: http://code.google.com/p/mod-atom-svn/

I was inspired by the last paragraph of the Repository Access Layer
section of the Subversion book:
http://svnbook.red-bean.com/nightly/en/svn.developer.layerlib.html#svn.developer.layerlib.ra

I'm following mod_dav_svn's example, but confess I'm stuck linking with
Subversion's shared libraries. In general, is there a resource anywhere
suggesting how projects can use autoconf to build against Subversion?

To build against Apache, I stole the autoconf / automake setup from
mod-skeleton: http://code.google.com/p/modskeleton/

First, on Debian Subversion's headers are installed
in /usr/include/subversion-1. Not sure if this is typical? Is it
preferable to use #include <subversion-1/svn_fs.h> or use #include
<svn_fs.h> and -I/usr/include/subversion-1? After reading the autoconf
manual, I wonder if we should use AC_CHECK_HEADER(svn_fs.h)? I guess the
former has consequences if one wants to build against a Subversion build
directory, instead of where Subversion is installed on the system?

Second, on Debian Subversion's shared libraries are split into
libsvn_fs-1.so, libsvn_ra-1.so, etc. Again, not sure if this is typical
or if our autoconf setup should anticipate building against an
amalgamated libsvn-1.so on some systems? And again, I guess we should
use AC_CHECK_LIB(libsvn_fs-1)?

I'll continue studying my autoconf references, but if anyone with more
experience can point out the "right" way to build against Subversion,
it'd be much appreciated! A resource suggesting how projects can use
autoconf to build against Subversion would be ideal...

Incidentally, I'm not using mod_dav, but I am trying to follow
mod_dav_svn's example, and struggling to understand the mod_dav
repository interface. The best documentation I found is mod_dav.h, but
I'm still struggling for a high level picture of how mod_dav's interface
works. For instance, how is the root_dir which is passed to get_resource
of dav_hooks_repository calculated? How are get_resource and deliver
related? Where in mod_dav_svn is dav_resource_private defined?

Nick Kew's Apache Modules Book has been a great reference, but
unfortunately it doesn't touch on mod_dav. I'll continue reading the
source, but if anyone can suggest a faster way of getting up to speed on
mod_dav_svn, it'd also be much appreciated!

Thanks and best wishes, Jack

Re: building against subversion using autoconf

Posted by jeremy hinds <je...@gmail.com>.
On Sat, Mar 8, 2008 at 4:40 PM, Jack Bates <ms...@freezone.co.uk> wrote:
> I'm working on an Apache module, like mod_dav_svn, but using mod_atom to
>  support Subversion repository access with the Atom Publishing Protocol,
>  RFC 5023: http://code.google.com/p/mod-atom-svn/
>
>  I was inspired by the last paragraph of the Repository Access Layer
>  section of the Subversion book:
>  http://svnbook.red-bean.com/nightly/en/svn.developer.layerlib.html#svn.developer.layerlib.ra
>
>  I'm following mod_dav_svn's example, but confess I'm stuck linking with
>  Subversion's shared libraries. In general, is there a resource anywhere
>  suggesting how projects can use autoconf to build against Subversion?
>
>  To build against Apache, I stole the autoconf / automake setup from
>  mod-skeleton: http://code.google.com/p/modskeleton/
>
>  First, on Debian Subversion's headers are installed
>  in /usr/include/subversion-1. Not sure if this is typical? Is it
>  preferable to use #include <subversion-1/svn_fs.h> or use #include
>  <svn_fs.h> and -I/usr/include/subversion-1? After reading the autoconf
>  manual, I wonder if we should use AC_CHECK_HEADER(svn_fs.h)? I guess the
>  former has consequences if one wants to build against a Subversion build
>  directory, instead of where Subversion is installed on the system?
>
>  Second, on Debian Subversion's shared libraries are split into
>  libsvn_fs-1.so, libsvn_ra-1.so, etc. Again, not sure if this is typical
>  or if our autoconf setup should anticipate building against an
>  amalgamated libsvn-1.so on some systems? And again, I guess we should
>  use AC_CHECK_LIB(libsvn_fs-1)?


I can't speak for all package managers, but both of these things are
consistent with svn builds and from source, as well as rpm installs
that I've seen.  But if you discover that there are cases where
"svn_fs.h" is not in that subdirectory, rather than fiddling with
"-I<path>", I think the right thing to do is

AC_CHECK_HEADERS([subversion-1/svn_fs.h svn_fs.h])

and then in your .c or .h:

#include <config.h>

#if defined (HAVE_SUBVERSION_1_SVN_FS_H)
#  include <subversion-1/svn_fs.h>
#elif defined (HAVE_SVN_FS_H)
#  include <svn_fs.h>
#endif


Are you planning to have apxs do the actual compilation once autoconf
finds where things are installed?  I'm not familiar with the relative
merits of that vs invoking gcc directly, so this is question is more
for my own benefit.



>
>  I'll continue studying my autoconf references, but if anyone with more
>  experience can point out the "right" way to build against Subversion,
>  it'd be much appreciated! A resource suggesting how projects can use
>  autoconf to build against Subversion would be ideal...
>
>  Incidentally, I'm not using mod_dav, but I am trying to follow
>  mod_dav_svn's example, and struggling to understand the mod_dav
>  repository interface. The best documentation I found is mod_dav.h, but
>  I'm still struggling for a high level picture of how mod_dav's interface
>  works. For instance, how is the root_dir which is passed to get_resource
>  of dav_hooks_repository calculated? How are get_resource and deliver
>  related? Where in mod_dav_svn is dav_resource_private defined?
>
>  Nick Kew's Apache Modules Book has been a great reference, but
>  unfortunately it doesn't touch on mod_dav. I'll continue reading the
>  source, but if anyone can suggest a faster way of getting up to speed on
>  mod_dav_svn, it'd also be much appreciated!
>
>  Thanks and best wishes, Jack
>

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