[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

request for help with subversion 1.1.0-rc2 Debian packages




Dear People,

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 inevitable.

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 to debian-user.

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?

                                                               Faheem.

  **********************************************************************
* 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
  shared libraries.

--- 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
             deps.append(source.filename)

-            # 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)
+	    else:
+		# link against the library
+	    	libs.append(build_path_join(retreat, source.filename))
         elif isinstance(source, gen_base.ObjectFile):
           # link in the object file
           objects.append(source.filename)














Reply to: