blob: f3b522f64ed7c1a76e139d934e588fec2830dae2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#! /usr/bin/perl
# Copyright (c) 2002-2016, Dirk Krause. All rights reserved.
# SPDX-License-Identifier: BSD-3-Clause
my $ifh = undef;
my $args = undef;
my $arg = undef;
my $line;
my $libname;
my $pkgname;
my $architecture;
my $lastname;
my $namefound;
my %libnames;
my %pkgnames;
while($#ARGV > -1) {
$arg = shift @ARGV;
if (defined($args)) {
$args = "$args $arg";
} else {
$args = "$arg";
}
}
if (open($ifh, "objdump -p $args |")) {
while(<$ifh>) {
$line = $_; chomp $line;
if ($line =~ /^\s+NEEDED\s+(\S+)/o) {
$libname = $1;
$libnames{"$libname"} = 1;
}
}
close($ifh);
foreach $libname (sort (keys %libnames)) {
$ifh = undef;
if (open($ifh, "dpkg -S $libname |")) {
while(<$ifh>) {
$line = $_; chomp $line;
if ($line =~ /^\s*(\S+)\s+(\S+)/o) {
$pkgname = $1; $namefound = $2;
if ($pkgname =~ /^([^:]+):/o) {
$pkgname = $1;
}
$lastname = undef;
if ($namefound =~ /\/lib\/[^\/]+\/(lib[^\/]+)/o) {
$lastname = $1;
}
if ($namefound =~ /\/usr\/lib\/[^\/]+\/(lib[^\/]+)/o) {
$lastname = $1;
}
if (defined($lastname)) {
if ("$lastname" eq "$libname") {
$pkgnames{"$pkgname"} = 1;
}
}
}
}
close($ifh);
}
}
foreach $pkgname (sort (keys %pkgnames)) {
print "$pkgname\n";
}
}
|