]> git.donarmstrong.com Git - debhelper.git/commitdiff
Add support for multiarch.
authorSteve Langasek <steve.langasek@linaro.org>
Fri, 11 Mar 2011 06:28:24 +0000 (22:28 -0800)
committerJoey Hess <joey@kitenet.net>
Sat, 12 Mar 2011 17:59:45 +0000 (13:59 -0400)
Open compat level 9, which incompatibly changes dh_auto_configure behavior
to set --libdir and --libexecdir to the multiarch directory path.  This
requires dpkg-dev 1.16.0 (not yet released) for the multiarch directory
variable, so bump the dependency to this version.

Also set a new substvar, misc:Pre-Depends, to multiarch-support, a virtual
package provided by versions of eglibc that support the multiarch library
paths at runtime; this needs to be a pre-dependency to ensure unpacked but
not-yet-configured libraries can still be found during upgrades, so library
packages converting to multiarch (i.e., switching to compat 9) will need to
add this substitution by hand to debian/control.

Debian/Debhelper/Buildsystem/autoconf.pm
Debian/Debhelper/Dh_Lib.pm
debian/control
dh_makeshlibs

index d7b0bed251b251adcba7fafcdc229706cbb58b96..f0948f3684089e2a76d004203022b7e389ae39f3 100644 (file)
@@ -7,7 +7,7 @@
 package Debian::Debhelper::Buildsystem::autoconf;
 
 use strict;
-use Debian::Debhelper::Dh_Lib qw(dpkg_architecture_value sourcepackage);
+use Debian::Debhelper::Dh_Lib qw(dpkg_architecture_value sourcepackage compat);
 use base 'Debian::Debhelper::Buildsystem::makefile';
 
 sub DESCRIPTION {
@@ -37,7 +37,12 @@ sub configure {
        push @opts, "--infodir=\${prefix}/share/info";
        push @opts, "--sysconfdir=/etc";
        push @opts, "--localstatedir=/var";
-       push @opts, "--libexecdir=\${prefix}/lib/" . sourcepackage();
+       if (! compat(8)) {
+               push @opts, "--libdir=\${prefix}/lib/" . dpkg_architecture_value("DEB_HOST_MULTIARCH");
+               push @opts, "--libexecdir=\${prefix}/lib/" . dpkg_architecture_value("DEB_HOST_MULTIARCH") . "/" . sourcepackage();
+       } else {
+               push @opts, "--libexecdir=\${prefix}/lib/" . sourcepackage();
+       }
        push @opts, "--disable-maintainer-mode";
        push @opts, "--disable-dependency-tracking";
        # Provide --host only if different from --build, as recommended in
index 01777210fde6bcbe53685348464c00232fa9ffa4..dcba4d246cb9adf641333010f2a456ffa7a75d2d 100644 (file)
@@ -20,7 +20,7 @@ use vars qw(@ISA @EXPORT %dh);
            &is_make_jobserver_unavailable &clean_jobserver_makeflags
            &cross_command);
 
-my $max_compat=8;
+my $max_compat=9;
 
 sub init {
        my %params=@_;
index cdf7489cfceddff2030db4168d2bd10fca948917..202f418031cbd767372aff96537c7cf53b14521a 100644 (file)
@@ -10,7 +10,7 @@ Homepage: http://kitenet.net/~joey/code/debhelper/
 
 Package: debhelper
 Architecture: all
-Depends: ${perl:Depends}, ${misc:Depends}, perl-base (>= 5.10), file (>= 3.23), dpkg-dev (>= 1.14.19), html2text, binutils, po-debconf, man-db (>= 2.5.1-1)
+Depends: ${perl:Depends}, ${misc:Depends}, perl-base (>= 5.10), file (>= 3.23), dpkg-dev (>= 1.16.0), html2text, binutils, po-debconf, man-db (>= 2.5.1-1)
 Suggests: dh-make
 Conflicts: dpkg-cross (<< 1.18), python-support (<< 0.5.3), python-central (<< 0.5.6)
 Description: helper programs for debian/rules
index a3c81e15a1d77dbbd9c3a23338e60e03734267a6..5d6f869cb1442cd901a496743c1863a3929d51f7 100755 (executable)
@@ -122,6 +122,7 @@ init(options => {
 });
 
 my $objdump=cross_command("objdump");
+my $multiarch=dpkg_architecture_value("DEB_HOST_MULTIARCH");
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
        next if is_udeb($package);
@@ -130,6 +131,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
 
        my %seen;
        my $need_ldconfig = 0;
+       my $is_multiarch = 0;
 
        doit("rm", "-f", "$tmp/DEBIAN/shlibs");
 
@@ -148,6 +150,9 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
        while (<FIND>) {
                my ($library, $major);
                push @lib_files, $_;
+               if ($multiarch ne '' && $_ =~ m,/$multiarch/,) {
+                       $is_multiarch=1;
+               }
                my $ret=`$objdump -p $_`;
                if ($ret=~m/\s+SONAME\s+(.+)\.so\.(.+)/) {
                        # proper soname format
@@ -240,6 +245,9 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                        doit("rm", "-f", "$tmp/DEBIAN/symbols");
                }
        }
+       if ($is_multiarch) {
+               addsubstvar($package, "misc:Pre-Depends", "multiarch-support");
+       }
 }
 
 =head1 SEE ALSO