[devel] perl-5.8.0-alt0.3 (important)
=?iso-8859-1?q?at_=CE=C1_turbinal=2Eorg?=
=?iso-8859-1?q?at_=CE=C1_turbinal=2Eorg?=
Ср Окт 16 08:44:30 MSD 2002
On Wed, Oct 16, 2002 at 05:45:57AM +0400, at на turbinal.org wrote:
>
> В incoming заливается perl-5.8.0-alt0.3.nosrc.rpm.
Залилось. :)
> относительно perl. Для этого я написал скрипт, который можно также
> использовать для анализа перловых зависимостей других пакетов. Скрипт
> прилагается (но он ни на что не претендует; желающие должны его
> доработать и обязательно об этом сообщить). В результате удалось
Доработал.
----------- следующая часть -----------
#!/usr/bin/perl
#
# check whether perl part of the package depends on perl-base only
#
use strict;
sub whatsays($) {
my $command = shift;
local $_ = `$command`;
$? and print qq(warning: $command\n\texecuted with $? status\n);
my @parts = split;
return wantarray ? @parts : $parts[0];
}
my %cache;
my $n_call = 0;
sub whatprovides(@) {
my $prov = shift;
if ($cache{$prov}) {
$n_call++;
} else {
my @pkgs = whatsays qq(rpm -q --whatprovides '$prov');
$cache{$prov} = \@pkgs;
print "warning: $prov is provided by " . join(' AND ' => @pkgs) . "\n"
if @pkgs > 1;
}
return @{$cache{$prov}};
}
my @packages = @ARGV;
my $base = whatsays qq(rpm -q 'perl-base');
foreach my $package (@packages) {
$package = whatsays qq(rpm -q '$package');
my @files = whatsays qq(rpm -ql '$package' '$base' | sort | uniq);
my $n = @files;
print "checking whether perl part of $package package ($n files)\n\tdepends on $base only\n";
foreach my $file (@files) {
my @req = map { /perl\(.+?\)/ ? $& :() } whatsays qq(/usr/lib/rpm/perl.req '$file');
foreach my $req (@req) {
my @prov = whatprovides $req;
print "file $file requires\n\t$req provided by @prov\n"
unless grep { "@prov" =~ /\Q$_/ } ($base, $package);
}
}
}
print "whatprovides: " . keys(%cache) . " entries cached ($n_call fork+exec calls saved)\n";
Подробная информация о списке рассылки Devel