--- Begin Message ---
Source: dpkg-cross
Version: 2.6.11
Severity: important
Tags: patch
User: helmutg@debian.org
Usertags: rebootstrap
When converting libc6:x32 using dpkg-cross, the symlink to the linker
does not get translated. In libc6:x32 it looks like:
lrwxrwxrwx root/root 0 2014-11-30 00:08 ./libx32/ld-linux-x32.so.2 -> /lib/x86_64-linux-gnux32/ld-2.19.so
In libc6-x32-cross:all it looks like:
lrwxrwxrwx root/root 0 2014-11-30 00:10 ./libx32/ld-linux-x32.so.2 -> ../usr/x86_64-linux-gnux32/lib/ld-2.19.so
When installing both libc6:x32 and libc6-x32-cross:all, an undeclared
file conflict occurs.
Note that x32 is only an example here. The same issue happens for arm's
libsf and libhf as well as mips' libn32.
This causes bootstrapping of new architectures to fail. This is also why
I marked this bug with severity important.
The attached patch simply applies the existing logic for lib32 and lib64
to libhf, libn32, libsf and libx32 as well and thereby solves the issue
at hand.
Helmut
diff -Nru dpkg-cross-2.6.11/Debian/DpkgCross.pm dpkg-cross-2.6.11+nmu1/Debian/DpkgCross.pm
--- dpkg-cross-2.6.11/Debian/DpkgCross.pm 2011-03-25 22:17:47.000000000 +0100
+++ dpkg-cross-2.6.11+nmu1/Debian/DpkgCross.pm 2014-11-30 08:46:18.000000000 +0100
@@ -16,7 +16,8 @@
$progname %archtable %std_tools
%pkgvars %allcrossroots $arch $default_arch $deb_host_gnu_type
$crossbase $crossprefix $crossdir $crossbin $crosslib $crossroot
-$crossinc $crosslib64 $crosslib32 $package $mode $tool_ %config
+$crossinc $crosslib64 $crosslib32 $crosslibhf $crosslibn32
+$crosslibsf $crosslibx32 $package $mode $tool_ %config
@keepdeps %allcrossroots @removedeps $maintainer $arch_dir
$compilerpath %debug_data);
@ISA = qw(Exporter);
@@ -171,6 +172,10 @@
$crosslib = $conf->{'crosslib'};
$crosslib64 = $conf->{'crosslib64'};
$crosslib32 = $conf->{'crosslib32'};
+ $crosslibhf = $conf->{'crosslibhf'};
+ $crosslibn32 = $conf->{'crosslibn32'};
+ $crosslibsf = $conf->{'crosslibsf'};
+ $crosslibx32 = $conf->{'crosslibx32'};
$crossinc = $conf->{'crossinc'};
$maintainer = $conf->{'maintainer'};
$compilerpath = $conf->{'compilerpath'};
@@ -204,6 +209,10 @@
$crosslib ||= $conf->{'crosslib'};
$crosslib64 ||= $conf->{'crosslib64'};
$crosslib32 ||= $conf->{'crosslib32'};
+ $crosslibhf ||= $conf->{'crosslibhf'};
+ $crosslibn32 ||= $conf->{'crosslibn32'};
+ $crosslibsf ||= $conf->{'crosslibsf'};
+ $crosslibx32 ||= $conf->{'crosslibx32'};
$crossinc ||= $conf->{'crossinc'};
$maintainer ||= $conf->{'maintainer'};
$compilerpath ||= $conf->{'compilerpath'};
@@ -383,6 +392,10 @@
$crosslib64 ||= $crosslib . "64";
$crosslib32 ||= $crosslib . "32";
+ $crosslibhf ||= $crosslib . "hf";
+ $crosslibn32 ||= $crosslib . "n32";
+ $crosslibsf ||= $crosslib . "sf";
+ $crosslibx32 ||= $crosslib . "x32";
$config{'crossbase'} = $crossbase;
$config{'crossprefix'} = $crossprefix;
$config{'crossdir'} = $crossdir;
@@ -390,6 +403,10 @@
$config{'crosslib'} = $crosslib;
$config{'crosslib64'} = $crosslib64;
$config{'crosslib32'} = $crosslib32;
+ $config{'crosslibhf'} = $crosslibhf;
+ $config{'crosslibn32'} = $crosslibn32;
+ $config{'crosslibsf'} = $crosslibsf;
+ $config{'crosslibx32'} = $crosslibx32;
$config{'crossinc'} = $crossinc;
$config{'crossroot'} = $crossroot;
@@ -410,6 +427,10 @@
$crosslib = $config{'crosslib'};
$crosslib64 = $config{'crosslib64'};
$crosslib32 = $config{'crosslib32'};
+ $crosslibhf = $config{'crosslibhf'};
+ $crosslibn32 = $config{'crosslibn32'};
+ $crosslibsf = $config{'crosslibsf'};
+ $crosslibx32 = $config{'crosslibx32'};
$crossinc = $config{'crossinc'};
}
@@ -463,6 +484,14 @@
$path = "$crosslib32/$'";
} elsif ($path =~ m:^(/emul/ia32-linux/(usr/)?lib/($multiarch)?):) {
$path = "$crosslib32/$'";
+ } elsif ($path =~ /^(\/usr)?\/libhf\/($multiarch)?/) {
+ $path = "$crosslibhf/$'";
+ } elsif ($path =~ /^(\/usr)?\/libn32\/($multiarch)?/) {
+ $path = "$crosslibn32/$'";
+ } elsif ($path =~ /^(\/usr)?\/libsf\/($multiarch)?/) {
+ $path = "$crosslibsf/$'";
+ } elsif ($path =~ /^(\/usr)?\/libx32\/($multiarch)?/) {
+ $path = "$crosslibx32/$'";
} elsif ($path =~ /^\/usr\/\w+-\w+(-\w+(-\w+)?)?\//) {
# leave alone
} else {
diff -Nru dpkg-cross-2.6.11/debian/changelog dpkg-cross-2.6.11+nmu1/debian/changelog
--- dpkg-cross-2.6.11/debian/changelog 2013-05-24 21:28:56.000000000 +0200
+++ dpkg-cross-2.6.11+nmu1/debian/changelog 2014-11-30 08:49:56.000000000 +0100
@@ -1,3 +1,10 @@
+dpkg-cross (2.6.11+nmu1) UNRELEASED; urgency=medium
+
+ * Non-maintainer upload.
+ * Support lib{hf,n32,sf,x32}. (Closes: #-1)
+
+ -- Helmut Grohne <helmut@subdivi.de> Sun, 30 Nov 2014 08:49:39 +0100
+
dpkg-cross (2.6.11) unstable; urgency=low
* Upload changes from experimental to unstable.
diff -Nru dpkg-cross-2.6.11/dpkg-cross dpkg-cross-2.6.11+nmu1/dpkg-cross
--- dpkg-cross-2.6.11/dpkg-cross 2013-05-24 21:28:22.000000000 +0200
+++ dpkg-cross-2.6.11+nmu1/dpkg-cross 2014-11-30 08:53:56.000000000 +0100
@@ -12,7 +12,8 @@
use warnings;
use vars qw($verbose $str @removedeps $package %builds $arch $exclude
@keepdeps $dpkg_statfile $progname $debname $anyway $cross2cross $crosstype
-$crossdir $crosslib $crosslib64 $crosslib32 $crossinc $data $len
+$crossdir $crosslib $crosslib64 $crosslib32 $crosslibhf $crosslibn32
+$crosslibsf $crosslibx32 $crossinc $data $len
$retval $dpkg_cmd $mode $pkg @exlist $conffile $removedeps $keepdeps
$DPKGCROSSVERSION $keep_temp $msg $multiarchpackage $multiarch $multiarchconv);
@@ -728,6 +729,10 @@
$crosslib = $$config{'crosslib'};
$crosslib64 = $$config{'crosslib64'};
$crosslib32 = $$config{'crosslib32'};
+ $crosslibhf = $$config{'crosslibhf'};
+ $crosslibn32 = $$config{'crosslibn32'};
+ $crosslibsf = $$config{'crosslibsf'};
+ $crosslibx32 = $$config{'crosslibx32'};
# add extra regexp component for multiarch packages
if ($multiarchpackage) { $multiarch="\Q$crosstype/\E" } else {$multiarch=""};
@@ -796,6 +801,18 @@
} elsif ((m:^/emul/ia32-linux/usr/lib/([^/]+\.[ao])$:)) {
# regular .a or .o file under /emul/ia32-linux/ for #463588
link_file("$src$_", "$dst$crosslib32/$1") or goto fail;
+ } elsif (m:^/usr/libhf/([^/]+\.[ao])$:) {
+ # regular .a or .o file under /usr/libhf
+ link_file("$src$_", "$dst$crosslibhf/$1") or goto fail;
+ } elsif (m:^/usr/libn32/([^/]+\.[ao])$:) {
+ # regular .a or .o file under /usr/libn32
+ link_file("$src$_", "$dst$crosslibn32/$1") or goto fail;
+ } elsif (m:^/usr/libsf/([^/]+\.[ao])$:) {
+ # regular .a or .o file under /usr/libsf
+ link_file("$src$_", "$dst$crosslibsf/$1") or goto fail;
+ } elsif (m:^/usr/libx32/([^/]+\.[ao])$:) {
+ # regular .a or .o file under /usr/libx32
+ link_file("$src$_", "$dst$crosslibx32/$1") or goto fail;
} elsif (m:^(/usr)?/lib/($multiarch)?([^/]+\.so[^/]*)$:) {
# regular .so* file under /lib, /usr/lib, /lib/<triplet>, /usr/lib/<triplet>
if (is_ldscript("$src$_")) {
@@ -831,6 +848,34 @@
} else {
link_file("$src$_", "$dst$crosslib32/$1") or goto fail;
}
+ } elsif (m:^(/usr)?/libhf/([^/]+\.so[^/]*)$:) {
+ # regular .so* file under /libhf, /usr/libhf
+ if (is_ldscript("$src$_")) {
+ fix_ldscript("$src$_", "$dst$crosslibhf/$2") or goto fail;
+ } else {
+ link_file("$src$_", "$dst$crosslibhf/$2") or goto fail;
+ }
+ } elsif (m:^(/usr)?/libn32/([^/]+\.so[^/]*)$:) {
+ # regular .so* file under /libn32, /usr/libn32
+ if (is_ldscript("$src$_")) {
+ fix_ldscript("$src$_", "$dst$crosslibn32/$2") or goto fail;
+ } else {
+ link_file("$src$_", "$dst$crosslibn32/$2") or goto fail;
+ }
+ } elsif (m:^(/usr)?/libsf/([^/]+\.so[^/]*)$:) {
+ # regular .so* file under /libsf, /usr/libsf
+ if (is_ldscript("$src$_")) {
+ fix_ldscript("$src$_", "$dst$crosslibsf/$2") or goto fail;
+ } else {
+ link_file("$src$_", "$dst$crosslibsf/$2") or goto fail;
+ }
+ } elsif (m:^(/usr)?/libx32/([^/]+\.so[^/]*)$:) {
+ # regular .so* file under /libx32, /usr/libx32
+ if (is_ldscript("$src$_")) {
+ fix_ldscript("$src$_", "$dst$crosslibx32/$2") or goto fail;
+ } else {
+ link_file("$src$_", "$dst$crosslibx32/$2") or goto fail;
+ }
} elsif (m:^/usr/lib/$multiarch([^/]+\.la)$:) {
# regular .la file under /usr/lib
fix_la_file("$src$_", "$dst$crosslib/$1", $crosslib) or goto fail;
--- End Message ---
--- Begin Message ---
Source: dpkg-cross
Source-Version: 2.6.12
We believe that the bug you reported is fixed in the latest version of
dpkg-cross, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to 771497@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Wookey <wookey@debian.org> (supplier of updated dpkg-cross package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Format: 1.8
Date: Thu, 22 Jan 2015 19:18:29 +0000
Source: dpkg-cross
Binary: dpkg-cross libdebian-dpkgcross-perl
Architecture: source all
Version: 2.6.12
Distribution: experimental
Urgency: medium
Maintainer: Debian Embedded Group <debian-embedded@lists.debian.org>
Changed-By: Wookey <wookey@debian.org>
Description:
dpkg-cross - tools for cross compiling Debian packages
libdebian-dpkgcross-perl - functions to aid cross-compiling Debian packages
Closes: 649094 741476 771497 772045 776010
Changes:
dpkg-cross (2.6.12) experimental; urgency=medium
.
* Remove ac_cv_sizeof_off_t as supreceded by AC_SYS_LARGEFILE (Closes: 776010)
* Support lib{hf,n32,sf,x32}. (Closes: 771497)
* Ensure multilib ldscripts are fixed up. (Closes: 772045,649094)
* Update uploaders list (Closes: 741476)
* Include support for libo32 multilibs
Checksums-Sha1:
1b337ae9a81ccd23adcf8b5caceb50d811e8b9f4 1783 dpkg-cross_2.6.12.dsc
23518429614c7dc3ebd535cf43e46cebbdae549a 80101 dpkg-cross_2.6.12.tar.gz
7560dd37b850c00cbf9fa8700620c263790eadb2 53912 dpkg-cross_2.6.12_all.deb
5cdbd440e676697c09acfaf645731c83d4202850 29050 libdebian-dpkgcross-perl_2.6.12_all.deb
Checksums-Sha256:
a95137a22076caaaaf0947cc7c8f367b451088a7027e98d07a1c1839682e3545 1783 dpkg-cross_2.6.12.dsc
5e354da53fb8ab79ff67a4cdded507252f11255ff1e6c326efc4f6a5cc34b58e 80101 dpkg-cross_2.6.12.tar.gz
34673376eb21ea716d9110789cb4a8f33691de2bed4d5248b9461e4c0624341b 53912 dpkg-cross_2.6.12_all.deb
0037d43c3953f5b937f0becf020acb6cba0b0d3c51eda299c3728199a19b0b76 29050 libdebian-dpkgcross-perl_2.6.12_all.deb
Files:
ca264c27ca53766c0ea530c5e389b8d7 1783 utils extra dpkg-cross_2.6.12.dsc
df748c6b3d26bfe7afb304bb53685adb 80101 utils extra dpkg-cross_2.6.12.tar.gz
626d545dbc9391fb7da307e133b8ee59 53912 utils extra dpkg-cross_2.6.12_all.deb
0e15f197f8277d3d358c8400a88de48f 29050 perl extra libdebian-dpkgcross-perl_2.6.12_all.deb
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAEBCAAGBQJUwY9IAAoJEPuGMlGob55H0jwQALySklC3dA9rUvDglrgJyz9R
aCrp+MpoYqzNLLIG5rjkbwMzDld6GuIoA9uoPOMuRjV+G04vx8JFeBRlb1cCRIpb
nJ6lZI/KFCh3dW+AVCo5+gBNojZPjAzZ9nc92dBNN0qUVHZm65ZJEtreO4FIV6zJ
4AIt1ZllndOFQq7VPluejU9K/rkrYP77dbln1qD4P32QQp3ekp1DagYwQ4DSy3DL
aB6nqjfHJvhkKzIwRbmC4ZoPILEiR28SrfndpWwGT+XGbMzthHpOp3t8L6Us5ZLy
vUjEQo+MovmkqjJ3JRruUWh1lX9GRnHkTvaa/RdeXx292PKEL1V9CP4rvFz2sJKO
6rbo0b88vAQngk89xYEpexVhNw5aIwR44RtHGtBs1Ijx8B3HFY0vWK/OXEPnTQmZ
gE7vOLFaHg8sahCvhr296YzlsIJIOe5W6lEpPOSFbTbREP3MMk2sIUlm/LTQhTc+
kFpgzytXuoqUUJGe6ugBPNNewTkvsaAYhGenwBiXSzURMyYJX+rEl2osMJWZGvNj
q06OrdbU40Dsqq3VzdmvgvoP6tI2AQcMun0Eyo9tqNziarysqB4mw2dUBoWqDiSR
6Rf6//D6n/qV8xBRsn4M8kiDAFakcHvGjJLzx+68rfFgPSPlUQEFi5gOk9YmrOLe
Qpou45oW/m5I/rRd/MwW
=Ml4j
-----END PGP SIGNATURE-----
--- End Message ---