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:
24
cpanspec
24
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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user