Check all build requirements against CPAN

- If a module is provided by ourselves: don't add a build dependency
- If a module does not exist on CPAN: don't add a build dependency. It
  is most likely a module shipped by the module itself to support tests
This commit is contained in:
Dennis Kaarsemaker committed 2011-08-31 18:35:03 +02:00
1 parent 28dc8e9339
commit 1cd8735b7c
1 file changed
+19 -5
+19 -5
View File
@@ -586,6 +586,12 @@ while (my $provides=<$rpm>) {
my @args=@ARGV; my @args=@ARGV;
my @processed=(); my @processed=();
update_packages();
$packages=Parse::CPAN::Packages->new($pkgdetails)
if (!defined($packages));
die "Parse::CPAN::Packages->new() failed: $!\n"
if (!defined($packages));
for my $file (@args) { for my $file (@args) {
my ($name,$version,$type); my ($name,$version,$type);
@@ -607,11 +613,6 @@ for my $file (@args) {
$file =~ s/-/::/g; $file =~ s/-/::/g;
# Look up $file in 02packages.details.txt. # Look up $file in 02packages.details.txt.
update_packages();
$packages=Parse::CPAN::Packages->new($pkgdetails)
if (!defined($packages));
die "Parse::CPAN::Packages->new() failed: $!\n"
if (!defined($packages));
my ($m,$d); my ($m,$d);
if ($m=$packages->package($file) and $d=$m->distribution()) { if ($m=$packages->package($file) and $d=$m->distribution()) {
$source=$cpan . "/authors/id/" . $d->prefix(); $source=$cpan . "/authors/id/" . $d->prefix();
@@ -922,6 +923,19 @@ for my $file (@args) {
#print STDERR "$testfile: @{[$extract_o_matic->array()]}\n"; #print STDERR "$testfile: @{[$extract_o_matic->array()]}\n";
for my $dep ($extract_o_matic->array()) { for my $dep ($extract_o_matic->array()) {
next if ($dep eq $module); next if ($dep eq $module);
next if exists $build_requires{$dep};
my $package = $packages->package($dep);
if(!defined($package)) {
# Don't print this for common false positives
unless($dep =~ /^(Config|base|5|lib)/) {
print STDERR "Module not on CPAN, not adding dependency: $dep\n";
}
next;
}
if($package->distribution->dist eq $name) {
print STDERR "Dependency $dep provided by ourselves, not adding dependency\n";
next;
}
$build_requires{$dep} ||= 0; $build_requires{$dep} ||= 0;
} }
} }