request for help with subversion 1.1.0-rc2 Debian packages
I've tried my hand at building Subversion 1.1.0-rc2 packages. I've
imitated the packaging of the official Debian packages as far as possible.
Whenever possible I applied the Debian patches. However, since I don't
understand exactly what I am doing, I suppose some breakage was
The main thing that failed were the swig bindings. So the python and perl
binding packages, namely python2.3-subversion and libsvn-core-perl
packages are empty. However, subversion itself passed all tests. I haven't
done much with it yet, but look forward to playing with it.
If anyone is willing to take a look I'd appreciate it. Since the only
Debian patch that did not apply cleanly was debian/paches/rpath.patch in
the source directory, this seems the most likely cause of the problem.
You can get my packages (binaries and source) by using the lines below.
deb http://www.cbcb.duke.edu/~faheem/debian/ ./
deb-src http://www.cbcb.duke.edu/~faheem/debian/ ./
I attach the patch rpath.path below. The comments are the original one by
the maintainer, David Kimdon.
Here is the relevant entry from the changelog.
* subversion/trunk/debian/patches/rpath.patch: Only change is in
build/generator/gen_base.py, where I'm really just guessing. Other
changes are just relocating the patch, and not significant.
I have a few further comments.
1) I realise that the official Debian packages will be out once the
official release has happened, but I thought it would be nice to encourage
Debian users to do some testing before the release. Like everyone else,
I'm anxious to start using fsfs. And I thought it would be good practice.
If I can get everything working properly I'll post an accouncement of this
2) I think it would be a good idea if packages of subversion without the
BDB dependency could be created.
Would different versions of all the Debian packages have to be created in
that case? Ie. libapache2-svn, python2.3-subversion, subversion, libsvn0,
subversion, libsvn0-dev, subversion, subversion-tools, libsvn-core-perl.
3) I noticed all the tests that were run (as far as I could tell) were
python scripts. This may be a stupid question, but how did they work when
the python bindings were not built successfully?
* subversion-1.0.2/Makefile.in (LINK) : Remove -rpath.
(LINK_LIB) : New variable. This is what we use to link libraries.
'libtool' keys off the '-rpath' argument to know that it should create a
shared library. Removing the rpath parameter from the library link will
cause libtool to produce a convenience library (a static archive) and no
shared libs, that is not what we want. For any libraries in /usr/lib
libtool knows not to actually put the rpath into the binary.
* subversion-1.0.2/build/generator/gen_base.py (TargetLinked) : Use the
'$(LINK_LIB)' command by default.
(TargetExe) : Executables should be linked with '$(LINK)' command so
no rpath is put into the binary.
* subversion-1.0.2/build/generator/gen_make.py (Generator) : Fix the
apache module link rule to explicitly link to the necessary subversion
--- subversion-1.0.2.orig/Makefile.in 2004-04-15 20:43:46.000000000 +0200
+++ subversion-1.0.2/Makefile.in 2004-04-25 20:47:08.000000000 +0200
@@ -134,7 +134,8 @@
COMPILE_SWIG_JAVA = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(SWIG_JAVA_INCLUDES) $(INCLUDES) -o $@ -c
COMPILE_SWIG_PL = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(SWIG_PL_INCLUDES) $(INCLUDES) -o $@ -c
-LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(libdir)
+LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS)
+LINK_LIB = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(libdir)
# special link rule for mod_dav_svn
LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module
--- subversion-1.0.2.orig/build/generator/gen_base.py 2003-10-31 09:51:39.000000000 +0100
+++ subversion-1.0.2/build/generator/gen_base.py 2004-04-25 21:04:45.972682190 +0200
@@ -332,8 +332,8 @@
self.install = options.get('install')
self.compile_cmd = options.get('compile-cmd')
self.sources = options.get('sources', '*.c')
- self.link_cmd = options.get('link-cmd', '$(LINK)')
+ #self.link_cmd = options.get('link-cmd', '$(LINK)')
+ self.link_cmd = '$(LINK_LIB)'
self.external_lib = options.get('external-lib')
self.external_project = options.get('external-project')
self.msvc_libs = string.split(options.get('msvc-libs', ''))
@@ -382,7 +382,8 @@
self.objext = extmap['exe', 'object']
self.filename = build_path_join(self.path, name + extmap['exe', 'target'])
+ self.link_cmd = '$(LINK)'
self.manpages = options.get('manpages', '')
self.testing = options.get('testing')
--- subversion-1.1.0-rc2/build/generator/gen_make.py.old 2004-08-18 15:08:06.000000000 -0400
+++ subversion-1.1.0-rc2/build/generator/gen_make.py 2004-08-18 15:08:15.000000000 -0400
@@ -72,8 +72,16 @@
# append the output of the target to our stated dependencies
- # link against the library
- libs.append(build_path_join(retreat, source.filename))
+ if isinstance(target_ob, gen_base.TargetApacheMod):
+ dirname, fname = os.path.split(source.filename)
+ libname = string.replace(fname, '.la', '')
+ libname = string.replace(libname, 'lib', '')
+ dirname = os.path.join(retreat, dirname, '.libs')
+ libs.append('-Wl,-L' + dirname)
+ libs.append('-Wl,-l' + libname)
+ # link against the library
+ libs.append(build_path_join(retreat, source.filename))
elif isinstance(source, gen_base.ObjectFile):
# link in the object file