Here's an updated patch:
 - covering dh_makeshlibs as well
 - dropping superfluous quotes from the first patch
 - against git

-- 
Loïc Minier
>From dec5c3b352f18e6d8d97e4f113bb6fbe5f4f0087 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Minier?= <[email protected]>
Date: Tue, 20 Apr 2010 10:22:57 +0200
Subject: [PATCH] Use cross-binutils helpers when cross-compiling

dh_strip, dh_makeshlibs: use triplet-objdump, triplet-objcopy and
triplet-strip from cross-binutils when cross-compiling; closes: #412118.
---
 dh_makeshlibs |    9 ++++++++-
 dh_strip      |   19 ++++++++++++++-----
 2 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/dh_makeshlibs b/dh_makeshlibs
index 03a54f9..652def3 100755
--- a/dh_makeshlibs
+++ b/dh_makeshlibs
@@ -121,6 +121,13 @@ init(options => {
 	"add-udeb=s" => \$dh{SHLIBS_UDEB},
 });
 
+my $od = "objdump";
+# cross-compiling?
+if (dpkg_architecture_value("DEB_BUILD_GNU_TYPE")
+    ne dpkg_architecture_value("DEB_HOST_GNU_TYPE")) {
+	$od=dpkg_architecture_value("DEB_HOST_GNU_TYPE") . "-objdump";
+}
+
 foreach my $package (@{$dh{DOPACKAGES}}) {
 	next if is_udeb($package);
 	
@@ -146,7 +153,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
 	open (FIND, "find $tmp -type f \\( -name '*.so' -or -name '*.so.*' \\) $exclude |");
 	while (<FIND>) {
 		my ($library, $major);
-		my $objdump=`objdump -p $_`;
+		my $objdump=`$od -p $_`;
 		if ($objdump=~m/\s+SONAME\s+(.+)\.so\.(.+)/) {
 			# proper soname format
 			$library=$1;
diff --git a/dh_strip b/dh_strip
index 0da2e1e..d112249 100755
--- a/dh_strip
+++ b/dh_strip
@@ -86,6 +86,15 @@ if (defined $ENV{DEB_BUILD_OPTIONS} && $ENV{DEB_BUILD_OPTIONS} =~ /nostrip/) {
 	exit;
 }
 
+my $objcopy = "objcopy";
+my $strip = "strip";
+# cross-compiling?
+if (dpkg_architecture_value("DEB_BUILD_GNU_TYPE")
+    ne dpkg_architecture_value("DEB_HOST_GNU_TYPE")) {
+	$objcopy=dpkg_architecture_value("DEB_HOST_GNU_TYPE") . "-objcopy";
+	$strip=dpkg_architecture_value("DEB_HOST_GNU_TYPE") . "-strip";
+}
+
 # I could just use `file $_[0]`, but this is safer
 sub get_file_type {
 	my $file=shift;
@@ -163,7 +172,7 @@ sub make_debug {
 	if (! -d $debug_dir) {
 		doit("install", "-d", $debug_dir);
 	}
-	doit("objcopy", "--only-keep-debug", $file, $debug_path);
+	doit($objcopy, "--only-keep-debug", $file, $debug_path);
 	# No reason for this to be executable.
 	doit("chmod", 644, $debug_path);
 	return $debug_path;
@@ -172,7 +181,7 @@ sub make_debug {
 sub attach_debug {
 	my $file=shift;
 	my $debug_path=shift;
-	doit("objcopy", "--add-gnu-debuglink", $debug_path, $file);
+	doit($objcopy, "--add-gnu-debuglink", $debug_path, $file);
 }
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
@@ -207,20 +216,20 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
 		my $debug_path = make_debug($_, $tmp, $debugtmp) if $keep_debug;
 		# Note that all calls to strip on shared libs
 		# *must* inclde the --strip-unneeded.
-		doit("strip","--remove-section=.comment",
+		doit($strip,"--remove-section=.comment",
 			"--remove-section=.note","--strip-unneeded",$_);
 		attach_debug($_, $debug_path) if defined $debug_path;
 	}
 	
 	foreach (@executables) {
 		my $debug_path = make_debug($_, $tmp, $debugtmp) if $keep_debug;
-		doit("strip","--remove-section=.comment",
+		doit($strip,"--remove-section=.comment",
 			"--remove-section=.note",$_);
  		attach_debug($_, $debug_path) if defined $debug_path;
 	}
 
 	foreach (@static_libs) {
-		doit("strip","--strip-debug",$_);
+		doit($strip,"--strip-debug",$_);
 	}
 }
 
-- 
1.7.0.4

Reply via email to