--- 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.14
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.
Neil Williams <codehelp@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: Tue, 12 Jul 2016 19:09:54 +0100
Source: dpkg-cross
Binary: cross-config dpkg-cross libdebian-dpkgcross-perl
Architecture: source all
Version: 2.6.14
Distribution: unstable
Urgency: medium
Maintainer: Debian Embedded Group <debian-embedded@lists.debian.org>
Changed-By: Neil Williams <codehelp@debian.org>
Description:
cross-config - autotools support for cross-compilation
dpkg-cross - tools for cross compiling Debian packages
libdebian-dpkgcross-perl - functions to aid cross-compiling Debian packages
Closes: 649094 741476 771496 771497 772045 773266 776010
Changes:
dpkg-cross (2.6.14) unstable; urgency=medium
.
* Create cross-config package which will remain after the
deprecated dpkg-cross and libdebian-dpkgcross-perl binares
are removed from this package in time for the Stretch release.
* In light of deprecation of the dpkg-cross binary, drop the
default_arch support and associated debconf support.
(Closes: #771496)
.
dpkg-cross (2.6.13) experimental; urgency=medium
.
* Fix behaviour where DEB_HOST_GNU_TYPE != DEB_HOST_MULTIARCH (e.g. i386)
(Closes: 773266)
* Merge Ubuntu dpkg-cross fixes:
Handle datarootdir specially in .pc files: keep the original prefix
Assume multiarch if encoutering a /usr/include/$crosstype/ file too.
This fixes issues with arch-qualified include files being moved
to doubly-qualified paths.
Handle lines containing '${exec_prefix}/bin' specially in .pc files;
these are normally development tools, so should keep the original
(build arch) prefix. (For example, orbit_idl in ORBit-2.0.pc.)
.
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:
6c8b2e81a914f2d2441b1bd9500179eb0134f43f 1824 dpkg-cross_2.6.14.dsc
a0a06de27f3264463d945253389ac6fc90a6a380 75966 dpkg-cross_2.6.14.tar.gz
96103f78001c0796db3f47253336bd59c572b114 30834 cross-config_2.6.14_all.deb
7e4fad8254a0995023fe763a06dac0e802708fb7 40456 dpkg-cross_2.6.14_all.deb
8736b59c4c2f5b0b24035bcd6147f3330537d5df 29716 libdebian-dpkgcross-perl_2.6.14_all.deb
Checksums-Sha256:
696654b3ede2af83a86ff82391fc64fa92d6cb6e5381e335bb15619cf1d0c924 1824 dpkg-cross_2.6.14.dsc
4462857c0a689a81b44258ae386a8efc467edafbbfd2baa5279ecdce47f4d96a 75966 dpkg-cross_2.6.14.tar.gz
3da7fd39eb72aa3dc200c877bf798d4f82400f3cf84ed40505e71bbd33f006fc 30834 cross-config_2.6.14_all.deb
032ddecd99f1939d5900b9134020c257ee6b5fe09d3ab8221389f6942c80c428 40456 dpkg-cross_2.6.14_all.deb
035c50ffe9c5e5b6b8a0dd887eea8d1630067521084692d5a1ec143385acab2c 29716 libdebian-dpkgcross-perl_2.6.14_all.deb
Files:
a88bb5231cde4a61cebc5ccd3d07b252 1824 utils extra dpkg-cross_2.6.14.dsc
5da420bab771ea830ca286864db3a3e1 75966 utils extra dpkg-cross_2.6.14.tar.gz
33566acb78733785c999de6d6281b39d 30834 utils extra cross-config_2.6.14_all.deb
4a591c1fd28a903c7489e4c089613198 40456 utils extra dpkg-cross_2.6.14_all.deb
8d5b19da6b0f213943648d351d12645d 29716 perl extra libdebian-dpkgcross-perl_2.6.14_all.deb
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAEBCAAGBQJXi1XRAAoJEPFn5DyBQ7aC5/gP/2DMk9CMuZ8GSxkF5cwd16dt
osee6CvbmA2Yx//QJym7lbyUhPsogJn5bNkaz4Sh4QKlcH9YKPFZdJg5YF6MWNsh
QQ8wfAWp2WQ6Lkwz7MsvZPO5sEynSg2vceEnUjjj/BM4YyhdRxjTlfEvxnt8AgT1
LdbTEo0u3UZaM/bR/nQAnlaZvuN4Qv/CrYQvYrvtPFwJvpj2skZhtCga8fxlvbrN
ZwCps2ORfliDm2rzG1YtpBsf9/n/QwIX7OTGItKv/asi6sBv9uOpUfPmTW5fFw59
QqevmpZh/SIufwThTXDEYBEx92g8XHveFGk2no5t1xNQTC8HeAUKIHGxKMBLuYx2
3aji09PZnocE+3B+rXU9/az/uIprZ2iePiD0CptmHO2dFau8plAMzOPHUX2uVUah
taGJ2RofwLIX5pJFjXiUQyZ9nz35YGXQ3shgWmPJMUSFx+xg59W6vX+mE2YSmDKa
7W+SsQlKVT7WmsxKglVMJ2THGEbxGiEtjxSinxBiLBcvfctz2Lm5JD3THMbZ0ECq
ULZbtXg+8EIhLYKhN0PXTqyTRND3dSylJRShuEK3fiivBGoPANtqippP68Fbb2K+
CHrUdPKHVBC8GjoH21QlNNSli6UITfAwpM083cIedIDLX/5ezk1xK2lavx3GfSwW
ROjDtphsTvBJeHpNIUBm
=Cwff
-----END PGP SIGNATURE-----
--- End Message ---