From 1cd8735b7cb9e73853082a70e9463bd87da59209 Mon Sep 17 00:00:00 2001 From: Dennis Kaarsemaker Date: Fri, 19 Aug 2011 08:58:10 +0200 Subject: [PATCH] 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 --- cpanspec | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/cpanspec b/cpanspec index 475cd0a..37249d8 100755 --- a/cpanspec +++ b/cpanspec @@ -586,6 +586,12 @@ while (my $provides=<$rpm>) { my @args=@ARGV; 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) { my ($name,$version,$type); @@ -607,11 +613,6 @@ for my $file (@args) { $file =~ s/-/::/g; # 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); if ($m=$packages->package($file) and $d=$m->distribution()) { $source=$cpan . "/authors/id/" . $d->prefix(); @@ -922,6 +923,19 @@ for my $file (@args) { #print STDERR "$testfile: @{[$extract_o_matic->array()]}\n"; for my $dep ($extract_o_matic->array()) { 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; } }