]> git.vpit.fr Git - perl/modules/CPANPLUS-Dist-Gentoo.git/commitdiff
Make fatal the failure to map a dependency to an ebuild
authorVincent Pit <vince@profvince.com>
Thu, 3 Sep 2009 20:01:04 +0000 (22:01 +0200)
committerVincent Pit <vince@profvince.com>
Thu, 3 Sep 2009 20:01:04 +0000 (22:01 +0200)
lib/CPANPLUS/Dist/Gentoo.pm

index 49de89288dce24c55a4f6dbf9b5da1eb899bd76e..70fc27be2dd3797501ea363e526f1261048a5e35 100644 (file)
@@ -389,7 +389,9 @@ sub create {
 
  {
   open my $eb, '>', $file or return $FAIL->("open($file): $!");
-  print $eb $self->ebuild_source;
+  my $source = $self->ebuild_source;
+  return $FAIL->() unless defined $source;
+  print $eb $source;
  }
 
  return $FAIL->() if $stat->do_manifest and not $self->update_manifest;
@@ -423,7 +425,7 @@ sub update_manifest {
 
 =head2 C<ebuild_source>
 
-Returns the source of the ebuild for the current dist object.
+Returns the source of the ebuild for the current dist object, or C<undef> when one of the dependencies couldn't be mapped to an existing ebuild.
 
 =cut
 
@@ -434,11 +436,14 @@ sub ebuild_source {
  # We must resolve the deps now and not inside prepare because _cpan2portage
  # has to see the ebuilds already generated for the dependencies of the current
  # dist.
- my @deps = do {
-  my %seen;
-  sort grep !$seen{$_}++, 'dev-lang/perl',
-                          map $self->_cpan2portage(@$_), @{$stat->deps}
- };
+ my @deps;
+ for (@{$stat->deps}) {
+  my $dep = $self->_cpan2portage(@$_);
+  return unless defined $dep;
+  push @deps, $dep;
+ }
+
+ @deps = do { my %seen; sort grep !$seen{$_}++, 'dev-lang/perl', @deps };
 
  my $d = $stat->header;
  $d   .= "# Generated by CPANPLUS::Dist::Gentoo version $VERSION\n\n";
@@ -492,11 +497,11 @@ sub _cpan2portage {
 
  }
 
- $self->_skip(
+ $self->_abort(
   "Couldn't find an appropriate ebuild for $name in the portage tree"
  );
 
- return '';
+ return;
 }
 
 sub install {