Package: inspircd Version: 1.1.22+dfsg-4 Severity: important Tags: patch User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu ubuntu-patch oneiric
inspircd fails to build with a linker that defaults to --as-needed, as shown in this Ubuntu bug report: https://bugs.launchpad.net/ubuntu/+source/inspircd/+bug/770747 This is because of incorrect link ordering: it puts libraries before the objects that use them rather than after. See: http://wiki.debian.org/ToolChain/DSOLinking#Only_link_with_needed_libraries The following patch fixes this. * Fix link order to list libraries after the objects that require them. diff -u inspircd-1.1.22+dfsg/debian/patches/00list inspircd-1.1.22+dfsg/debian/patches/00list --- inspircd-1.1.22+dfsg/debian/patches/00list +++ inspircd-1.1.22+dfsg/debian/patches/00list @@ -4,0 +5 @@ +05_link_order.dpatch only in patch2: unchanged: --- inspircd-1.1.22+dfsg.orig/debian/patches/05_link_order.dpatch +++ inspircd-1.1.22+dfsg/debian/patches/05_link_order.dpatch @@ -0,0 +1,37 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 04_link_order.dpatch by Colin Watson <cjwat...@ubuntu.com> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fix link order to list libraries after the objects that require them. + +@DPATCH@ +diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' inspircd-1.1.22+dfsg~/configure inspircd-1.1.22+dfsg/configure +--- inspircd-1.1.22+dfsg~/configure 2011-09-12 14:01:26.000000000 +0100 ++++ inspircd-1.1.22+dfsg/configure 2011-09-12 14:02:31.000000000 +0100 +@@ -1605,7 +1605,7 @@ + all: timer.o command_parse.o cull_list.o userprocess.o socketengine.o socket.o hashcomp.o channels.o mode.o xline.o inspstring.o dns.o base.o configreader.o inspsocket.o $cmdobjs commands.o dynamic.o users.o modules.o wildcard.o helperfuncs.o snomasks.o \$(MODULES) inspircd.exe + + inspircd.exe: inspircd.cpp ../include/base.h ../include/channels.h ../include/inspircd.h ../include/channels.h ../include/globals.h ../include/inspircd_config.h ../include/base.h +- \$(CC) -I../include \$(FLAGS) inspircd.cpp -o inspircd.exe \$(LDLIBS) channels.o mode.o xline.o inspstring.o dns.o base.o inspsocket.o configreader.o $cmdobjs commands.o dynamic.o users.o modules.o wildcard.o helperfuncs.o hashcomp.o socket.o socketengine.o userprocess.o cull_list.o command_parse.o timer.o snomasks.o modes/modeclasses.a \$(MODULES) ++ \$(CC) -I../include \$(FLAGS) inspircd.cpp -o inspircd.exe channels.o mode.o xline.o inspstring.o dns.o base.o inspsocket.o configreader.o $cmdobjs commands.o dynamic.o users.o modules.o wildcard.o helperfuncs.o hashcomp.o socket.o socketengine.o userprocess.o cull_list.o command_parse.o timer.o snomasks.o modes/modeclasses.a \$(MODULES) \$(LDLIBS) + EOM + } + +@@ -1750,7 +1750,7 @@ + + inspircd: inspircd.cpp ../include/base.h ../include/channels.h ../include/inspircd.h ../include/channels.h ../include/globals.h ../include/inspircd_config.h ../include/socket.h $cmdobjs libIRCDtimer.dylib libIRCDcull_list.dylib libIRCDuserprocess.dylib libIRCDsocketengine.dylib libIRCDsocket.dylib libIRCDhash.dylib libIRCDchannels.dylib libIRCDmode.dylib libIRCDxline.dylib libIRCDstring.dylib libIRCDasyncdns.dylib libIRCDbase.dylib libIRCDconfigreader.dylib libIRCDinspsocket.dylib libIRCDsnomasks.dylib libIRCDcommands.dylib libIRCDdynamic.dylib libIRCDusers.dylib libIRCDmodules.dylib libIRCDwildcard.dylib libIRCDhelper.dylib libIRCDcommand_parse.dylib + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c inspircd.cpp +- \$(CC) -pipe -dynamic -bind_at_load -L. -o inspircd \$(LDLIBS) inspircd.o libIRCDchannels.dylib libIRCDmode.dylib libIRCDxline.dylib libIRCDstring.dylib libIRCDasyncdns.dylib libIRCDbase.dylib libIRCDconfigreader.dylib libIRCDinspsocket.dylib libIRCDcommands.dylib libIRCDdynamic.dylib libIRCDusers.dylib libIRCDmodules.dylib libIRCDwildcard.dylib libIRCDhelper.dylib libIRCDhash.dylib libIRCDsocket.dylib libIRCDsocketengine.dylib libIRCDuserprocess.dylib libIRCDcull_list.dylib libIRCDcommand_parse.dylib libIRCDtimer.dylib libIRCDsnomasks.dylib ++ \$(CC) -pipe -dynamic -bind_at_load -L. -o inspircd inspircd.o libIRCDchannels.dylib libIRCDmode.dylib libIRCDxline.dylib libIRCDstring.dylib libIRCDasyncdns.dylib libIRCDbase.dylib libIRCDconfigreader.dylib libIRCDinspsocket.dylib libIRCDcommands.dylib libIRCDdynamic.dylib libIRCDusers.dylib libIRCDmodules.dylib libIRCDwildcard.dylib libIRCDhelper.dylib libIRCDhash.dylib libIRCDsocket.dylib libIRCDsocketengine.dylib libIRCDuserprocess.dylib libIRCDcull_list.dylib libIRCDcommand_parse.dylib libIRCDtimer.dylib libIRCDsnomasks.dylib \$(LDLIBS) + + libIRCDsocketengine.dylib: $se.cpp socketengine.cpp ../include/base.h ../include/hashcomp.h ../include/globals.h ../include/inspircd_config.h ../include/$se.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c socketengine.cpp +@@ -1860,7 +1860,7 @@ + + inspircd: inspircd.cpp ../include/base.h ../include/channels.h ../include/inspircd.h ../include/channels.h ../include/globals.h ../include/inspircd_config.h ../include/socket.h libIRCDtimer.o libIRCDcull_list.o libIRCDuserprocess.o libIRCDsocketengine.o libIRCDsocket.o libIRCDhash.o libIRCDchannels.o libIRCDmode.o libIRCDxline.o libIRCDstring.o libIRCDasyncdns.o libIRCDbase.o libIRCDconfigreader.o libIRCDinspsocket.o $cmdobjs libIRCDsnomasks.o libIRCDcommands.o libIRCDdynamic.o libIRCDusers.o libIRCDmodules.o libIRCDwildcard.o libIRCDhelper.o libIRCDcommand_parse.o socketengine.o + \${MAKE} -C "modes" DIRNAME="src/modes" CC="\$(CC)" \$(MAKEARGS) CPPFILES="\$(CPPFILES)" +- \$(CC) -pipe -I../include $extra $RPATH \$(FLAGS) $freebsd4libs -rdynamic -L. inspircd.cpp -o inspircd \$(LDLIBS) libIRCDchannels.o libIRCDmode.o libIRCDxline.o libIRCDstring.o libIRCDasyncdns.o libIRCDbase.o libIRCDconfigreader.o libIRCDinspsocket.o libIRCDcommands.o libIRCDdynamic.o libIRCDusers.o libIRCDmodules.o libIRCDwildcard.o libIRCDhelper.o libIRCDhash.o libIRCDsocket.o libIRCDsocketengine.o libIRCDuserprocess.o libIRCDcull_list.o libIRCDcommand_parse.o libIRCDtimer.o libIRCDsnomasks.o socketengine.o modes/modeclasses.a ++ \$(CC) -pipe -I../include $extra $RPATH \$(FLAGS) $freebsd4libs -rdynamic -L. inspircd.cpp -o inspircd libIRCDchannels.o libIRCDmode.o libIRCDxline.o libIRCDstring.o libIRCDasyncdns.o libIRCDbase.o libIRCDconfigreader.o libIRCDinspsocket.o libIRCDcommands.o libIRCDdynamic.o libIRCDusers.o libIRCDmodules.o libIRCDwildcard.o libIRCDhelper.o libIRCDhash.o libIRCDsocket.o libIRCDsocketengine.o libIRCDuserprocess.o libIRCDcull_list.o libIRCDcommand_parse.o libIRCDtimer.o libIRCDsnomasks.o socketengine.o modes/modeclasses.a \$(LDLIBS) + + socketengine.o: $se.cpp ../include/$se.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c -o \$@ $se.cpp Thanks, -- Colin Watson [cjwat...@ubuntu.com] -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org