Package: dpkg-cross
Version: 2.6.11
Tags: patch
User: helm...@debian.org
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
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);

Reply via email to