Skip to content

Commit

Permalink
xapian-bindings: Fix build with slibtool
Browse files Browse the repository at this point in the history
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/xapian-bindings/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
  • Loading branch information
orbea committed Jul 21, 2022
1 parent 02cc478 commit 8e821e9
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 15 deletions.
20 changes: 16 additions & 4 deletions xapian-bindings/java/run-java-test
@@ -1,11 +1,23 @@
#!/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"
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
9 changes: 7 additions & 2 deletions xapian-bindings/perl/Makefile.am
Expand Up @@ -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) \
Expand Down
9 changes: 7 additions & 2 deletions xapian-bindings/python3/Makefile.am
Expand Up @@ -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 = \
Expand Down
20 changes: 13 additions & 7 deletions xapian-bindings/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
Expand Down

0 comments on commit 8e821e9

Please sign in to comment.