Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev-libs/xapian-bindings: Fix the build with slibtool #26514

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
133 changes: 133 additions & 0 deletions dev-libs/xapian-bindings/files/xapian-bindings-1.4.20-slibtool.patch
@@ -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