[xml/sgml-pkgs] Bug#840096: libxslt: FTBFS on kfreebsd and hurd: ld: cannot find -lxslt, -lexslt
Samuel Thibault
sthibault at debian.org
Thu Oct 27 14:26:52 UTC 2016
Control: clone -1 -2
Control: clone -1 -3
Control: affects -2 libxslt
Control: affects -3 libxslt
Control: block -1 by -2
Control: block -1 by -3
Control: retitle -2 should flush timestamps early enough
Control: retitle -3 should flush timestamps early enough
Control: reassign -2 hurd
Control: reassign -3 kfreebsd-10
Hello,
Andreas Beckmann, on Sat 08 Oct 2016 11:22:41 +0200, wrote:
> libtool: relink: cc -shared -fPIC -DPIC .libs/libxsltmod_la-libxslt.o .libs/libxsltmod_la-types.o .libs/libxsltmod_la-libxslt-py.o -L/«PKGBUILDDIR»/debian/tmp-dbg/usr/lib/i386-kfreebsd-gnu -L/usr/lib/i386-kfreebsd-gnu -lxslt -lexslt -lpython2.7 -lpthread -ldl -lutil -lm -g -O2 -fstack-protector-strong -Wl,-z -Wl,relro -Wl,-z -Wl,now -Wl,--as-needed -Wl,-soname -Wl,libxsltmod.so -o .libs/libxsltmod.so
For information, here are my findings so far:
- The link should be including the -L../debian/tmp/usr/lib/... since the
.la file contains that but it's not.
- That is apparently due to the make install insisting on recompiling
e.g. the libxslt.c file.
- That is due to the dependency on e.g. libxsltclass.py: running ls just
before the make install step shows that its timestamp is actually
after the libxslt.lo file.
- libxsltclass.py is generated by the generator.py python script at
build time.
- That kind of odd timestamp issue has already be seen to pose problems
in cmake.
In my memory, this odd timestamp is due to kFreeBSD and Hurd being more
lazy about updating it, and thus it ends up being later than what is
noticed on Linux, and notably later than libxslt.lo which gets compiled
right after it.
It seems to me like a bug in kFreeBSD and Hurd rather than a bug
in the build system: at the very worse, the "modified" timestamp
of libxsltclass.py should not be later than the exit time of the
generator.py script, and even better, at closure time of the
file. Otherwise one can't write makefile rules using timestamps of
generated files.
An odd workaround which triggers the timestamp is e.g. to stat the
generated file, as the attached patch does. It does fix the build both
on hurd-i386 and kfreebsd-amd64, so it really looks like it's the same
issue on both.
Another (less odd) way to fix the issue is to provide the flags again
during doinstall, as the attached patch2 does.
Samuel
-------------- next part --------------
--- python/Makefile.am.original 2016-10-27 13:46:43.000000000 +0000
+++ python/Makefile.am 2016-10-27 13:57:03.000000000 +0000
@@ -65,6 +65,7 @@
gen_prog: $(srcdir)/$(GENERATE) $(API_DESC)
SRCDIR=$(srcdir) $(PYTHON) $(srcdir)/$(GENERATE)
+ stat libxsltclass.py
touch gen_prog
$(libxsltmod_la_OBJECTS): $(GENERATED)
-------------- next part --------------
--- debian/rules.original 2016-10-27 13:59:37.000000000 +0000
+++ debian/rules 2016-10-27 14:26:36.000000000 +0000
@@ -38,6 +38,8 @@
dobuild-python%: BUILD_DIR=builddir/main/$*
dobuild-python%-dbg: BUILD_FLAGS = PYTHON_INCLUDES=/usr/include/$(*:-dbg=_d) \
LDFLAGS="$(LDFLAGS) -L$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)" CFLAGS="$(CFLAGS) -Wall -O0"
+doinstall-python%-dbg: BUILD_FLAGS = PYTHON_INCLUDES=/usr/include/python$(*:-dbg=_d) \
+ LDFLAGS="$(LDFLAGS) -L$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)" CFLAGS="$(CFLAGS) -Wall -O0"
override_dh_auto_clean:
rm -rf builddir debian/tmp-dbg config.sub config.guess autogen.sh
@@ -67,7 +69,7 @@
sed -i "/dependency_libs/ s/'.*'/''/" debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/*.la
doinstall-python%-dbg:
- $(MAKE) -C builddir/main/python$*-dbg DESTDIR=$(CURDIR)/debian/tmp-dbg install-pythonLTLIBRARIES
+ $(MAKE) -C builddir/main/python$*-dbg DESTDIR=$(CURDIR)/debian/tmp-dbg install-pythonLTLIBRARIES $(BUILD_FLAGS)
prename 's/(?<!_d)\.so$$/_d.so/' debian/tmp-dbg/usr/lib/python$*/*-packages/*.so
doinstall-python%:
More information about the debian-xml-sgml-pkgs
mailing list