blob: 0ff45a0593b5eeff9d2fb1077a4037371c86a9b2 [file] [log] [blame]
From 3f179bf13081f9dde0535a17864ceeba685ab907 Mon Sep 17 00:00:00 2001
From: Tom Anderson <thomasanderson@chromium.org>
Date: Wed, 8 Jan 2020 12:11:56 -0800
Subject: [PATCH 2/2] Fix compatibility for Chromium
* Add debug() and g_() functions in case the system dpkg doesn't have it.
* Implement List::Util::any and List::Util::none for older versions of perl.
---
scripts/dpkg-shlibdeps.pl | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/scripts/dpkg-shlibdeps.pl b/scripts/dpkg-shlibdeps.pl
index e3d8c7200..654dfa898 100755
--- a/scripts/dpkg-shlibdeps.pl
+++ b/scripts/dpkg-shlibdeps.pl
@@ -21,11 +21,10 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
-use strict;
use warnings;
use feature qw(state);
-use List::Util qw(any none);
+use List::Util qw(reduce);
use Cwd qw(realpath);
use File::Basename qw(dirname);
@@ -51,6 +50,11 @@ use constant {
WARN_NOT_NEEDED => 4,
};
+sub none (&@) { my $code=shift; reduce { $a && !$code->(local $_ = $b) } 1, @_; }
+sub any (&@) { my $code=shift; reduce { $a || $code->(local $_ = $b) } 0, @_; }
+
+sub g_ { return shift; }
+
# By increasing importance
my @depfields = qw(Suggests Recommends Depends Pre-Depends);
my $i = 0; my %depstrength = map { $_ => $i++ } @depfields;
@@ -153,6 +157,11 @@ sub ignore_pkgdir {
return any { $path =~ /^\Q$_\E/ } @pkg_dir_to_ignore;
}
+sub debug {
+ my $level = shift;
+ print @_ if $level <= $debug;
+}
+
if (-d 'debian') {
push @pkg_symbols, grep { !ignore_pkgdir($_) } glob 'debian/*/DEBIAN/symbols';
push @pkg_shlibs, grep { !ignore_pkgdir($_) } glob 'debian/*/DEBIAN/shlibs';
@@ -198,18 +207,17 @@ foreach my $file (keys %exec) {
my %soname_notfound;
my %alt_soname;
foreach my $soname (@sonames) {
- my @libs = my_find_library($soname, $obj->{RPATH}, $obj->{exec_abi}, $file);
+ my @libs = my_find_library($soname, $obj->{RPATH}, $obj->{exec_abi} || $obj->{format}, $file);
unless (scalar @libs) {
$soname_notfound{$soname} = 1;
$global_soname_notfound{$soname} = 1;
my $msg = g_('cannot find library %s needed by %s (ELF ' .
"format: '%s' abi: '%s'; RPATH: '%s')");
- my $exec_abi = unpack 'H*', $obj->{exec_abi};
if (scalar(split_soname($soname))) {
- errormsg($msg, $soname, $file, $obj->{format}, $exec_abi, join(':', @{$obj->{RPATH}}));
+ errormsg($msg, $soname, $file, $obj->{format}, join(':', @{$obj->{RPATH}}));
$error_count++;
} else {
- warning($msg, $soname, $file, $obj->{format}, $exec_abi, join(':', @{$obj->{RPATH}}));
+ warning($msg, $soname, $file, $obj->{format}, join(':', @{$obj->{RPATH}}));
}
next;
}
--
2.25.0.rc1.283.g88dfdc4193-goog