[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