[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#840096: libxslt: FTBFS on kfreebsd and hurd: ld: cannot find -lxslt, -lexslt



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
--- 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)
--- 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%:

Reply to: