Package: service-wrapper-java
Version: 3.5.3-3
Severity: normal
Tags: upstream patch

service-wrapper-java fails to build when --as-needed linker option is enabled,
because of incorrect order of parameters passed to ld. Here's a log of
failed build in Ubuntu:
https://launchpad.net/ubuntu/+source/service-wrapper-java/3.5.3-3/+build/2858567/+files/buildlog_ubuntu-precise-i386.service-wrapper-java_3.5.3-3_FAILEDTOBUILD.txt.gz

See also
http://wiki.debian.org/ToolChain/DSOLinking#Only_link_with_needed_libraries

The attached patch was used in Ubuntu to fix the problem.
https://launchpad.net/ubuntu/+source/service-wrapper-java/3.5.3-3ubuntu1

-- System Information:
Debian Release: wheezy/sid
  APT prefers oneiric-updates
  APT policy: (500, 'oneiric-updates'), (500, 'oneiric-security'), (500, 
'oneiric-proposed'), (500, 'oneiric'), (100, 'oneiric-backports')
Architecture: i386 (i686)

Kernel: Linux 3.0.0-13-generic (SMP w/2 CPU cores)
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Description: fix FTBFS with --as-needed linker option
 Libraries should be put after object files when calling linker.
Author: Ilya Barygin <randomact...@ubuntu.com>

--- service-wrapper-java-3.5.3.orig/src/c/Makefile-linux-x86-32.make
+++ service-wrapper-java-3.5.3/src/c/Makefile-linux-x86-32.make
@@ -33,10 +33,10 @@
        if test ! -d .deps; then mkdir .deps; fi
 
 wrapper: $(wrapper_SOURCE)
-       $(COMPILE) -lm -pthread $(wrapper_SOURCE) -o $(BIN)/wrapper
+       $(COMPILE) -pthread $(wrapper_SOURCE) -lm -o $(BIN)/wrapper
 
 libwrapper.so: $(libwrapper_so_OBJECTS)
-       ${COMPILE} -lm -shared -fPIC $(libwrapper_so_OBJECTS) -o 
$(LIB)/libwrapper.so
+       ${COMPILE} -shared -fPIC $(libwrapper_so_OBJECTS) -lm -o 
$(LIB)/libwrapper.so
 
 %.o: %.c
        @echo '$(COMPILE) -c $<'; \
--- service-wrapper-java-3.5.3.orig/src/c/Makefile-linux-x86-64.make
+++ service-wrapper-java-3.5.3/src/c/Makefile-linux-x86-64.make
@@ -33,10 +33,10 @@
        if test ! -d .deps; then mkdir .deps; fi
 
 wrapper: $(wrapper_SOURCE)
-       $(COMPILE) -lm -pthread $(wrapper_SOURCE) -o $(BIN)/wrapper
+       $(COMPILE) -pthread $(wrapper_SOURCE) -lm -o $(BIN)/wrapper
 
 libwrapper.so: $(libwrapper_so_OBJECTS)
-       ${COMPILE} -lm -shared $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
+       ${COMPILE} -shared $(libwrapper_so_OBJECTS) -lm -o $(LIB)/libwrapper.so
 
 %.o: %.c
        @echo '$(COMPILE) -c $<'; \
--- service-wrapper-java-3.5.3.orig/src/c/Makefile-linux-ia-64.make
+++ service-wrapper-java-3.5.3/src/c/Makefile-linux-ia-64.make
@@ -33,10 +33,10 @@
        if test ! -d .deps; then mkdir .deps; fi
 
 wrapper: $(wrapper_SOURCE)
-       $(COMPILE) -lm -pthread $(wrapper_SOURCE) -o $(BIN)/wrapper
+       $(COMPILE) -pthread $(wrapper_SOURCE) -lm -o $(BIN)/wrapper
 
 libwrapper.so: $(libwrapper_so_OBJECTS)
-       ${COMPILE} -lm -shared $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
+       ${COMPILE} -shared $(libwrapper_so_OBJECTS) -lm -o $(LIB)/libwrapper.so
 
 %.o: %.c
        @echo '$(COMPILE) -c $<'; \
--- service-wrapper-java-3.5.3.orig/src/c/Makefile-linux-ppc-32.make
+++ service-wrapper-java-3.5.3/src/c/Makefile-linux-ppc-32.make
@@ -33,7 +33,7 @@
        if test ! -d .deps; then mkdir .deps; fi
 
 wrapper: $(wrapper_SOURCE)
-       $(COMPILE) -pthread -lm $(wrapper_SOURCE) -o $(BIN)/wrapper
+       $(COMPILE) -pthread $(wrapper_SOURCE) -lm -o $(BIN)/wrapper
 
 libwrapper.so: $(libwrapper_so_OBJECTS)
        ${COMPILE} -shared $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so

Reply via email to