Your message dated Thu, 26 Jan 2012 07:19:43 +0100
with message-id <[email protected]>
and subject line Re: Bug#641102: unison: FTBFS with ld that defaults to
--as-needed: bad link order
has caused the Debian Bug report #641102,
regarding unison: FTBFS with ld that defaults to --as-needed: bad link order
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
641102: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=641102
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: unison
Version: 2.32.52-3
Severity: important
Tags: patch
User: [email protected]
Usertags: origin-ubuntu ubuntu-patch oneiric
unison fails to build with a linker that defaults to --as-needed:
Linking unison
ocamlopt -verbose -I lwt -I ubase -o unison unix.cmxa str.cmxa
bigarray.cmxa -cclib -lutil ubase/projectInfo.cmx ubase/myMap.cmx
ubase/safelist.cmx ubase/uprintf.cmx ubase/util.cmx ubase/rx.cmx ubase/uarg.cmx
ubase/prefs.cmx ubase/trace.cmx lwt/pqueue.cmx lwt/lwt.cmx lwt/lwt_util.cmx
lwt/lwt_unix.cmx bytearray.cmx case.cmx pred.cmx uutil.cmx fileutil.cmx
name.cmx path.cmx fspath.cmx fingerprint.cmx abort.cmx osx.cmx external.cmx
props.cmx fileinfo.cmx os.cmx lock.cmx clroot.cmx common.cmx tree.cmx
checksum.cmx terminal.cmx transfer.cmx xferhint.cmx remote.cmx globals.cmx
copy.cmx stasher.cmx update.cmx files.cmx sortri.cmx recon.cmx transport.cmx
strings.cmx uicommon.cmx uitext.cmx test.cmx main.cmx linktext.cmx osxsupport.o
pty.o bytearray_stubs.o
+ as -o '/tmp/camlstartup999a84.o' '/tmp/camlstartup832abc.s'
+ gcc -o 'unison' '-Llwt' '-Lubase' '-L/usr/lib/ocaml'
'/tmp/camlstartup999a84.o' '/usr/lib/ocaml/std_exit.o' 'linktext.o' 'main.o'
'test.o' 'uitext.o' 'uicommon.o' 'strings.o' 'transport.o' 'recon.o' 'sortri.o'
'files.o' 'update.o' 'stasher.o' 'copy.o' 'globals.o' 'remote.o' 'xferhint.o'
'transfer.o' 'terminal.o' 'checksum.o' 'tree.o' 'common.o' 'clroot.o' 'lock.o'
'os.o' 'fileinfo.o' 'props.o' 'external.o' 'osx.o' 'abort.o' 'fingerprint.o'
'fspath.o' 'path.o' 'name.o' 'fileutil.o' 'uutil.o' 'pred.o' 'case.o'
'bytearray.o' 'lwt/lwt_unix.o' 'lwt/lwt_util.o' 'lwt/lwt.o' 'lwt/pqueue.o'
'ubase/trace.o' 'ubase/prefs.o' 'ubase/uarg.o' 'ubase/rx.o' 'ubase/util.o'
'ubase/uprintf.o' 'ubase/safelist.o' 'ubase/myMap.o' 'ubase/projectInfo.o'
'/usr/lib/ocaml/bigarray.a' '/usr/lib/ocaml/str.a' '/usr/lib/ocaml/unix.a'
'/usr/lib/ocaml/stdlib.a' '-lbigarray' '-lcamlstr' '-lunix' '-lutil'
'osxsupport.o' 'pty.o' 'bytearray_stubs.o' '/usr/lib/ocaml/libasmrun.a' -lm
-ldl
pty.o: In function `c_openpty':
pty.c:(.text+0x74): undefined reference to `openpty'
collect2: ld returned 1 exit status
File "caml_startup", line 1, characters 0-1:
Error: Error during linking
make[1]: *** [unison] Error 2
This is because its link line order is wrong, putting 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 C objects before the libraries they require.
diff -Nru unison-2.32.52/debian/patches/link-order.patch
unison-2.32.52/debian/patches/link-order.patch
--- unison-2.32.52/debian/patches/link-order.patch 1970-01-01
01:00:00.000000000 +0100
+++ unison-2.32.52/debian/patches/link-order.patch 2011-09-10
12:17:34.000000000 +0100
@@ -0,0 +1,18 @@
+Description: Fix link order to list C objects before the libraries they require
+Author: Colin Watson <[email protected]>
+Forwarded: no
+Last-Update: 2011-09-10
+
+Index: b/Makefile.OCaml
+===================================================================
+--- a/Makefile.OCaml
++++ b/Makefile.OCaml
+@@ -366,7 +366,7 @@
+
+ $(NAME)$(EXEC_EXT): $(CAMLOBJS) $(COBJS)
+ @echo Linking $@
+- $(CAMLC) -verbose $(CAMLFLAGS) -o $@ $(CFLAGS) $(CAMLLIBS) $(CLIBS) $^
++ $(CAMLC) -verbose $(CAMLFLAGS) -o $@ $(CFLAGS) $(CAMLLIBS) $^ $(CLIBS)
+
+ # Unfortunately -output-obj does not put .o files into the output, only .cmx
+ # files, so we have to use $(LD) to take care of COBJS.
diff -Nru unison-2.32.52/debian/patches/series
unison-2.32.52/debian/patches/series
--- unison-2.32.52/debian/patches/series 2011-04-03 12:21:58.000000000
+0100
+++ unison-2.32.52/debian/patches/series 2011-09-10 12:09:12.000000000
+0100
@@ -5,3 +5,4 @@
0005-Fix-build-with-OCaml-3.12.patch
0006-Fix-bad-interaction-with-OpenSSH-5.6.patch
debian-changes-2.32.52-3
+link-order.patch
Thanks,
--
Colin Watson [[email protected]]
--- End Message ---
--- Begin Message ---
Version: 2.40.63-1
> unison fails to build with a linker that defaults to --as-needed:
> [...]
> The following patch fixes this.
>
> * Fix link order to list C objects before the libraries they require.
It seems that this patch has been applied upstream in 2.40.63, hence I
close this bug.
Cheers,
--
Stéphane
--- End Message ---