Package: ltpanel
Version: 0.2-1
Severity: minor
Tags: patch
User: [email protected]
Usertags: ld-as-needed
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
*** /tmp/tmpStvqgM
In Ubuntu, the attached patch was applied to achieve the following:
* Libs should come after objects to fix build failure with --as-needed
(LP: #770834)
Ubuntu passes ld --as-needed per default to the linker, ltpanel FTBFS with:
gcc -g -Xlinker -L/usr/X11R6/lib -lX11 -lXpm lpanel.o drawing.o -o lpanel
lpanel.o: In function `get_prop_data':
/build/buildd/ltpanel-0.2/src/lpanel.c:108: undefined reference to
`XGetWindowProperty'
lpanel.o: In function `get_task_hinticon':
/build/buildd/ltpanel-0.2/src/lpanel.c:138: undefined reference to `XFree'
lpanel.o: In function `get_task_kdeicon':
/build/buildd/ltpanel-0.2/src/lpanel.c:156: undefined reference to `XFree'
lpanel.o: In function `find_desktop':
/build/buildd/ltpanel-0.2/src/lpanel.c:168: undefined reference to `XFree'
lpanel.o: In function `is_hidden':
/build/buildd/ltpanel-0.2/src/lpanel.c:182: undefined reference to `XFree'
lpanel.o: In function `is_iconified':
/build/buildd/ltpanel-0.2/src/lpanel.c:197: undefined reference to `XFree'
lpanel.o: In function `add_task':
/build/buildd/ltpanel-0.2/src/lpanel.c:221: undefined reference to
`XSelectInput'
lpanel.o: In function `gui_sync':
/build/buildd/ltpanel-0.2/src/lpanel.c:243: undefined reference to `XSync'
lpanel.o: In function `set_prop':
/build/buildd/ltpanel-0.2/src/lpanel.c:248: undefined reference to
`XChangeProperty'
lpanel.o: In function `gui_create_taskbar':
[...]
collect2: ld returned 1 exit status
make[2]: *** [lpanel] Error 1
make[2]: Leaving directory `/build/buildd/ltpanel-0.2/src'
make[1]: *** [override_dh_auto_build] Error 2
(Full buildlog at
https://launchpadlibrarian.net/70321007/buildlog_ubuntu-natty-amd64.ltpanel_0.2-1_FAILEDTOBUILD.txt.gz)
The libraries are clearly in the wrong place on the link line for
- - --as-needed (http://wiki.debian.org/ToolChain/DSOLinking). This
probably doesn't affect Debian right now because --as-needed is a
positional option and only affects those libraries listed after it, but
Ubuntu's linker defaults to --as-needed right out of the gate.
Nevertheless, I believe that the debian-gcc team is tracking these
problems and wants to make Debian packages work cleanly with such a
linker.
Thanks for considering the patch.
- -- System Information:
Debian Release: wheezy/sid
APT prefers oneiric
APT policy: (500, 'oneiric')
Architecture: amd64 (x86_64)
Kernel: Linux 3.0.0-999-generic (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/dash
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQIcBAEBAgAGBQJOKGcyAAoJEGHzRCZ03mYkgLkQANJxIXrmsw932sNqnwKfiqxu
eKPa0OWgdYnQTcjYPSUkD/HUDsGOyHSgEe0uriWm1QIaD10aUg5OQ0s/VpsJReWD
prY0ZetoHFTsmKp/lUw5czYcWYPhM/MyWDQHk8lQj+S0R0AaCHG44y7zkcgY+xwh
lvxucupHYBEL+vvRVAZdGIgNx7eZk3NHlr5Apc+8BAWdFi9+s5Gm8ok784I27ZcG
s5oS1P8BulZdmHvX8utSxje6QvPxrsOjT4cqH4LrtP4ON84fr9+zzZx6b5/aEGCp
XXrBqqFDMYYCYQjIEZPg2XUo2at0j5QKT5Q/88ojUp1+cFTphNu364T4sE7Lce88
2hvtOu/Fei/ZQwEBlpRfdMP/Ec24c7ZuE9KgQbbEByswyDhRNseHaBUwK7o/7LPc
6I8irv2XyrKLRAeUNoQYPPSBHZpqoOpF3CPxbFecoGcQIBrq0hLgZwhojOWxkwcH
5YufYhr1h0gQcAUjYtmI1PsWVK+AwyYrXO9KyrbMNwf9dUempcbVWOsHFlOnhmeD
NdyGjjm3cqWwccXPD7hutwRaEPyFipJv6o8ulLlmeYd6zCQLYKiOnSolmC0gzda6
axGWTASYXL5YfykjL0dPKKSw2Gov/OkY4fdUqP+DJLOA5LNIrRPK5dl/d6VV8aPo
Ucg8jC+Zr3SU/xinCz4q
=s3wT
-----END PGP SIGNATURE-----
=== added file 'debian/patches/fix-as-needed'
--- debian/patches/fix-as-needed 1970-01-01 00:00:00 +0000
+++ debian/patches/fix-as-needed 2011-07-21 17:46:02 +0000
@@ -0,0 +1,24 @@
+Description: With ld --as-needed, objects and sources need to come
+ before libraries so the symbols are recorded as 'needed'.
+Author: Andreas Moog <[email protected]>
+Bug-Ubuntu: pad.lv/770834
+Last-Update: 2011-07-21
+
+--- ltpanel-0.2.orig/src/Makefile
++++ ltpanel-0.2/src/Makefile
+@@ -1,12 +1,13 @@
+ CC = gcc
+ C_FLAGS = -g -c -DHAVE_XPM -Wall -pedantic -I/usr/X11R6/include
+ # L_FLAGS = -O3 -s -Xlinker -L/usr/X11R6/lib -lX11 -lXpm
+-L_FLAGS = -g -Xlinker -L/usr/X11R6/lib -lX11 -lXpm
++L_FLAGS = -g -Xlinker -L/usr/X11R6/lib
++L_LIBS = -lX11 -lXpm
+ PROGNAME = lpanel
+ OBJS = lpanel.o drawing.o
+
+ $(PROGNAME): Makefile lpanel.o drawing.o
+- $(CC) $(L_FLAGS) $(OBJS) -o $(PROGNAME)
++ $(CC) $(L_FLAGS) $(OBJS) $(L_LIBS) -o $(PROGNAME)
+ @ls -l $(PROGNAME)
+
+ lpanel.o: lpanel.c lpanel.h ../icon.xpm
=== added file 'debian/patches/series'
--- debian/patches/series 1970-01-01 00:00:00 +0000
+++ debian/patches/series 2011-07-21 17:44:08 +0000
@@ -0,0 +1 @@
+fix-as-needed