Bug#772045: does not fix multilib ldscripts
Helmut Grohne <[email protected]> Thu, 4 Dec 2014 17:56:22 +0100
| Newsgroups | gmane.linux.debian.devel.embedded |
|---|---|
| Message-ID | <20141204165621.GA31052__38140.8964437016$1417712431$gmane$org@alf.mars> |
Package: dpkg-cross Version: 2.6.11 Tags: patch User: [email protected] Usertags: rebootstrap After fixing #771497, dpkg-cross is still useless for building gcc. While the converted libc dependencies can be installed now, they are broken. Trying to gcc -m64 -lc ... (which is something that the gcc build does) one gets: | /usr/x86_64-linux-gnux32/bin/ld: cannot find /lib64/libc.so.6 Bernhard R. Link kindly pointed out that the absolute path hints a broken ldscript. In fact, dpkg-cross converted the package and moved /lib64 around but did not update the corresponding ldscript. The logic for fixing multilib ldscripts is simply missing from dpkg-cross. Please consider the attached patch to address this issue. Helmut
dpkg-cross-multilib-ldscript.patch
(text/x-diff, 703 B)
diff -u dpkg-cross-2.6.11+nmu1/dpkg-cross dpkg-cross-2.6.11+nmu1/dpkg-cross
--- dpkg-cross-2.6.11+nmu1/dpkg-cross 2014-11-30 08:53:56.000000000 +0100
+++ dpkg-cross-2.6.11+nmu1/dpkg-cross 2014-11-30 22:40:26.000000000 +0100
@@ -629,6 +629,14 @@
}
while (<FROM>) {
s:(^|[^-\w/])(/usr)?/lib/$multiarch:$1$crosslib/:g;
+ unless ($multiarch) {
+ s:(^|[^-\w/])(/usr)?/lib32/:$1$crosslib32/:g;
+ s:(^|[^-\w/])(/usr)?/lib64/:$1$crosslib64/:g;
+ s:(^|[^-\w/])(/usr)?/libhf/:$1$crosslibhf/:g;
+ s:(^|[^-\w/])(/usr)?/libn32/:$1$crosslibn32/:g;
+ s:(^|[^-\w/])(/usr)?/libsf/:$1$crosslibsf/:g;
+ s:(^|[^-\w/])(/usr)?/libx32/:$1$crosslibx32/:g;
+ }
print TO;
}
close(FROM);