Lev Serebryakov <lev_at_serebryakov.spb.ru> writes:
> Hello, Subversion.
>
> It is possible to build any bindings with INSTALLED subversion
> libraries, without rebuilding them from source tree?
> I.e. I have subversion without bindings already installed (on
> UNIX-like system), with all headers, etc. And I want to ADD bindings
> to this installation. If I unpack & configure sources and then run:
I maintain Subversion for pkgsrc (similar to FreeBSD ports, and
originally a derivation thereof), and have a patch to gen-make to
make this possible. I've intended to post it here and hopefully
commit it forever, but I just haven't gotten around to it.
Guess you're finally forcing me into it :)
You do this ot build against installed libs:
./gen-make.py [--release] --installed-libs libsvn_client,libsvn_delta,libsvn_diff,libsvn_fs,libsvn_ra,libsvn_repos,libsvn_subr,libsvn_wc
This is all against 1.4. If I can get a +1 from another
committer, I'll update it to trunk, write a log message, commit
it, and backport to the shiny new 1.5 branch.
(Ignore the INSTALLDIRS part of the Makefile.in patch)
$NetBSD: patch-ad,v 1.13 2006/09/11 04:14:31 epg Exp $
--- Makefile.in.orig 2006-01-24 21:57:24.000000000 -0500
+++ Makefile.in
@@ -627,10 +627,9 @@ $(SWIG_PL_DIR)/native/Makefile.PL: $(SWI
./config.status subversion/bindings/swig/perl/native/Makefile.PL
$(SWIG_PL_DIR)/native/Makefile: $(SWIG_PL_DIR)/native/Makefile.PL
- cd $(SWIG_PL_DIR)/native; $(PERL) Makefile.PL
+ cd $(SWIG_PL_DIR)/native; $(PERL) Makefile.PL INSTALLDIRS=vendor
-swig-pl_DEPS = autogen-swig-pl libsvn_client libsvn_delta libsvn_diff \
- libsvn_fs libsvn_ra libsvn_repos libsvn_subr libsvn_wc libsvn_swig_perl \
+swig-pl_DEPS = autogen-swig-pl libsvn_swig_perl \
$(SWIG_PL_DIR)/native/Makefile
swig-pl: $(swig-pl_DEPS)
if test "$(SWIG_PL_DIR)" != "$(SWIG_PL_SRC_DIR)"; then \
$NetBSD: patch-ag,v 1.9 2006/09/11 04:14:31 epg Exp $
--- subversion/bindings/swig/perl/native/Makefile.PL.in.orig 2005-11-16 09:19:09.000000000 -0500
+++ subversion/bindings/swig/perl/native/Makefile.PL.in
@@ -44,7 +44,7 @@ my %config = (
" -I$svnlib_builddir",
" -I$swig_srcdir -g"),
OBJECT => q/$(O_FILES)/,
- LIBS => [join(' ', $apr_ldflags,
+ LIBS => [join(' ', $ENV{'LDFLAGS'}, $apr_ldflags,
(map {$_ = abs_path($_); "-L$_"} @ldpaths),
@ldmodules, '-lsvn_swig_perl-1',
`$swig -perl -ldflags`)],
$NetBSD: patch-ah,v 1.4 2006/09/11 04:14:31 epg Exp $
--- build/generator/gen_make.py.orig 2006-04-05 12:12:48.000000000 -0400
+++ build/generator/gen_make.py
@@ -5,6 +5,7 @@
import os
import sys
import string
+import ConfigParser
import gen_base
import generator.swig.header_wrappers
@@ -53,6 +54,13 @@ class Generator(gen_base.GeneratorBase):
install_deps = self.graph.get_deps(gen_base.DT_INSTALL)
install_sources = self.graph.get_all_sources(gen_base.DT_INSTALL)
+ cp = ConfigParser.ConfigParser()
+ cp.read('gen-make.opts')
+ if cp.has_option('options', '--installed-libs'):
+ self.installed_libs = cp.get('options', '--installed-libs').split(',')
+ else:
+ self.installed_libs = []
+
# ensure consistency between runs
install_deps.sort()
install_sources.sort(lambda s1, s2: cmp(s1.name, s2.name))
@@ -68,11 +76,17 @@ class Generator(gen_base.GeneratorBase):
# construct a list of the other .la libs to link against
retreat = build_path_retreat(target.path)
- deps = [ target.filename ]
- link = [ build_path_join(retreat, target.filename) ]
+ if target.name in self.installed_libs:
+ deps = []
+ link = [ '-l%s-%s' % (target.name[3:], self.version) ]
+ else:
+ deps = [ target.filename ]
+ link = [ build_path_join(retreat, target.filename) ]
for source in self.graph.get_sources(gen_base.DT_LINK, target.name):
if not isinstance(source, gen_base.TargetLib) or source.external_lib:
continue
+ elif source.name in self.installed_libs:
+ continue
deps.append(source.filename)
link.append(build_path_join(retreat, source.filename))
@@ -216,6 +230,8 @@ class Generator(gen_base.GeneratorBase):
# expeditiously. It is of questionable validity for a build
# node to have external_project but not have external_lib.
pass
+ elif link_dep.name in self.installed_libs:
+ libs.append('-l%s-%s' % (link_dep.name[3:], self.version))
else:
# append the output of the target to our stated dependencies
if not self.assume_shared_libs:
$NetBSD: patch-ai,v 1.4 2006/09/11 04:14:31 epg Exp $
--- gen-make.py.orig 2006-04-16 06:26:16.000000000 -0400
+++ gen-make.py
@@ -91,6 +91,13 @@ def _usage_exit():
print " increase the speed of frequent rebuilds."
print " *** Do not use unless you understand the consequences. ***"
print
+ print " UNIX-specific options:"
+ print
+ print " --installed-libs"
+ print " Comma-separated list of Subversion libraries to find"
+ print " pre-installed instead of building (probably only"
+ print " useful for packagers)"
+ print
print " Windows-specific options:"
print
print " --with-apr=DIR"
@@ -195,6 +202,7 @@ if __name__ == '__main__':
'enable-quantify',
'enable-nls',
'enable-bdb-in-apr-util',
+ 'installed-libs=',
'vsnet-version=',
])
if len(args) > 1:
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-01-30 23:35:05 CET