Skip to content

Commit

Permalink
dev-libs/xapian-bindings: Fix the build with slibtool
Browse files Browse the repository at this point in the history
Bug: https://bugs.gentoo.org/793428
Upstream-PR: xapian/xapian#322
Signed-off-by: orbea <orbea@riseup.net>
  • Loading branch information
orbea committed Jul 22, 2022
1 parent 0ce7ed8 commit aa6b94a
Show file tree
Hide file tree
Showing 2 changed files with 485 additions and 0 deletions.
133 changes: 133 additions & 0 deletions dev-libs/xapian-bindings/files/xapian-bindings-1.4.20-slibtool.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
Upstream-PR: https://github.com/xapian/xapian/pull/322

From c513b0d31d2df31eb57ccbe08bbe46821863557d Mon Sep 17 00:00:00 2001
From: orbea <orbea@riseup.net>
Date: Wed, 20 Jul 2022 13:37:20 -0700
Subject: [PATCH] xapian-bindings: Fix the build with slibtool

With slibtool the --config argument works differently than in GNU
libtool which results in 'auto/Xapian/Xapian$(PERL_SO)' failing to be
created. This can be worked around by using libtool --mode=install where
slibtool can copy the module to the intended location.

However GNU libtool still requires using --config otherwise it fails
during --mode=install with the following error.

/bin/bash ../libtool --mode=install cp Xapian.la /home/runner/work/xapian/xapian/perl/auto/Xapian/Xapian.la
libtool: error: error: cannot install 'Xapian.la' to a directory not ending in /usr/local/lib/x86_64-linux-gnu/perl/5.26.1/auto/Xapian

gentoo issue: https://bugs.gentoo.org/793428
---
java/run-java-test | 21 +++++++++++++++++----
perl/Makefile.am | 9 +++++++--
python3/Makefile.am | 9 +++++++--
tcl8/run-tcl-test | 20 +++++++++++++-------
4 files changed, 44 insertions(+), 15 deletions(-)

diff --git a/java/run-java-test b/java/run-java-test
index d0e97af300e..a838de98492 100755
--- a/java/run-java-test
+++ b/java/run-java-test
@@ -1,11 +1,24 @@
#!/bin/sh
# To run `jdb` instead of `java` set JAVA=jdb
# To run under gdb, set JAVA='gdb --args java'
+LIBTOOL="${LIBTOOL-../libtool}"
arg=`echo "$1"|sed 's!.*/!!;s!\.class$!!'`
+
+# GNU libtool and slibtool have different and incompatible usage for --config.
+if ${LIBTOOL} --config > libtoolconfig.$$ 2>/dev/null; then
+ . ./libtoolconfig.$$
+else
+ objdir="built/libs"
+ rm -rf "$objdir"
+ mkdir -p "$objdir"
+ ${LIBTOOL} --mode=install cp libxapian_jni.la "$objdir"
+fi
+rm -f libtoolconfig.$$
+
# Use libtool's -dlopen option to ensure that libxapian_jni.so (or whatever)
# is in the shared library path.
-${LIBTOOL-../libtool} --config > libtoolconfig.$$
-. ./libtoolconfig.$$
-rm -f libtoolconfig.$$
-${LIBTOOL-../libtool} -dlopen libxapian_jni.la --mode=execute \
+${LIBTOOL} -dlopen libxapian_jni.la --mode=execute \
$OSX_SIP_HACK_ENV ${JAVA-java} -Djava.library.path="$objdir" -classpath built/xapian.jar${PATHSEP-:}. "$arg"
+rc=$?
+rm -rf built/libs
+exit $rc
diff --git a/perl/Makefile.am b/perl/Makefile.am
index 4f2e5e4283d..f71579736e5 100644
--- a/perl/Makefile.am
+++ b/perl/Makefile.am
@@ -55,9 +55,14 @@ BUILT_SOURCES = Xapian.pm xapian_wrap.cc \

auto/Xapian/Xapian$(PERL_SO): Xapian.la
@$(MKDIR_P) auto/Xapian
- $(LIBTOOL) --config > libtoolconfig.tmp
+## GNU libtool and slibtool have different and incompatible usage for --config.
+ if $(LIBTOOL) --config > libtoolconfig.tmp 2>/dev/null; then \
## ksh requires a path on the sourced file.
- . ./libtoolconfig.tmp; cp "$$objdir/Xapian$(PERL_SO)" auto/Xapian
+ . ./libtoolconfig.tmp; \
+ cp "$$objdir/Xapian$(PERL_SO)" auto/Xapian; \
+ else \
+ $(LIBTOOL) --mode=install cp $< $@; \
+ fi;
rm -f libtoolconfig.tmp

EXTRA_DIST = perl.i except.i extra.i $(TESTS) \
diff --git a/python3/Makefile.am b/python3/Makefile.am
index 3c692a9e2d4..9bf01833636 100644
--- a/python3/Makefile.am
+++ b/python3/Makefile.am
@@ -88,9 +88,14 @@ xapian/__pycache__/__init__.@PYTHON3_CACHE_OPT1_EXT@: xapian/__init__.py xapian/

xapian/_xapian$(PYTHON3_EXT_SUFFIX): _xapian.la
$(MKDIR_P) xapian
- $(LIBTOOL) --config > libtoolconfig.tmp
+## GNU libtool and slibtool have different and incompatible usage for --config.
+ if $(LIBTOOL) --config > libtoolconfig.tmp 2>/dev/null; then \
## ksh requires a path on the sourced file.
- . ./libtoolconfig.tmp; cp $$objdir/_xapian$(PYTHON3_EXT_SUFFIX) xapian
+ . ./libtoolconfig.tmp; \
+ cp $$objdir/_xapian$(PYTHON3_EXT_SUFFIX) xapian; \
+ else \
+ $(LIBTOOL) --mode=install cp $< $@; \
+ fi;
rm -f libtoolconfig.tmp

CLEANFILES = \
diff --git a/tcl8/run-tcl-test b/tcl8/run-tcl-test
index 206b5e0e056..71511032024 100755
--- a/tcl8/run-tcl-test
+++ b/tcl8/run-tcl-test
@@ -1,14 +1,20 @@
#!/bin/sh
-${LIBTOOL-../libtool} --config > libtoolconfig.$$
-. ./libtoolconfig.$$
-rm -f libtoolconfig.$$
+tclshlibext=`echo 'puts [info sharedlibextension]'|${TCLSH-tclsh}`
+rm -f xapian$tclshlibext
+
+LIBTOOL="${LIBTOOL-../libtool}"
module=yes
-eval shlibext=$shrext_cmds

-tclshlibext=`echo 'puts [info sharedlibextension]'|${TCLSH-tclsh}`
+# GNU libtool and slibtool have different and incompatible usage for --config.
+if ${LIBTOOL} --config > libtoolconfig.$$ 2>/dev/null; then
+ . ./libtoolconfig.$$
+ eval shlibext=$shrext_cmds
+ ln -s $objdir/xapian$shlibext xapian$tclshlibext
+else
+ ${LIBTOOL} --mode=install cp xapian.la ./xapian$tclshlibext
+fi
+rm -f libtoolconfig.$$

-rm -f xapian$tclshlibext
-ln -s $objdir/xapian$shlibext xapian$tclshlibext
$OSX_SIP_HACK_ENV ${TCLSH-tclsh} ${srcdir-.}/runtest.tcl ${srcdir-.}/smoketest.tcl
rc=$?
rm -f xapian$tclshlibext

0 comments on commit aa6b94a

Please sign in to comment.