]> git.vpit.fr Git - perl/modules/CPANPLUS-Dist-Gentoo.git/blobdiff - lib/CPANPLUS/Dist/Gentoo.pm
Remove duplicated dependencies
[perl/modules/CPANPLUS-Dist-Gentoo.git] / lib / CPANPLUS / Dist / Gentoo.pm
index 22059a90b65ce689f5ea391267da16a61c9276b4..972fed873f08dcfacf4f0287e110b5a17dc7b009 100644 (file)
@@ -21,11 +21,11 @@ CPANPLUS::Dist::Gentoo - CPANPLUS backend generating Gentoo ebuilds.
 
 =head1 VERSION
 
-Version 0.04
+Version 0.05
 
 =cut
 
-our $VERSION = '0.04';
+our $VERSION = '0.05';
 
 =head1 SYNOPSIS
 
@@ -61,6 +61,8 @@ my $default_keywords;
 my $default_distdir;
 my $main_portdir;
 
+my %forced;
+
 sub _unquote {
  my $s = shift;
  $s =~ s/^["']*//;
@@ -68,11 +70,15 @@ sub _unquote {
  return $s;
 }
 
+my $format_available;
+
 sub format_available {
+ return $format_available if defined $format_available;
+
  for my $prog (qw/emerge ebuild/) {
   unless (can_run($prog)) {
    error "$prog is required to write ebuilds -- aborting";
-   return 0;
+   return $format_available = 0;
   }
  }
 
@@ -102,7 +108,7 @@ sub format_available {
  $default_keywords = [ 'x86' ] unless defined $default_keywords;
  $default_distdir  = '/usr/portage/distfiles' unless defined $default_distdir;
 
- return 1;
+ return $format_available = 1;
 }
 
 sub init {
@@ -110,7 +116,7 @@ sub init {
  my $stat = $self->status;
  my $conf = $self->parent->parent->configure_object;
 
- $stat->mk_accessors(qw/name version author distribution desc uri license
+ $stat->mk_accessors(qw/name version author distribution desc uri src license
                         deps eb_name eb_version eb_dir eb_file fetched_arch
                         portdir_overlay
                         overlay distdir keywords do_manifest header footer
@@ -294,9 +300,10 @@ sub prepare {
 
  if (-e $file) {
   my $skip = 1;
-  if ($stat->force) {
+  if ($stat->force and not $forced{$file}) {
    if (-w $file) {
     1 while unlink $file;
+    $forced{$file} = 1;
     $skip = 0;
    } else {
     error "Can't force rewriting of $file -- skipping";
@@ -322,6 +329,13 @@ sub prepare {
 
  $stat->uri('http://search.cpan.org/dist/' . $name);
 
+ unless ($author =~ /^(.)(.)/) {
+  error 'Wrong author name -- aborting';
+  return 0;
+ }
+ $stat->src("mirror://cpan/modules/by-authors/id/$1/$1$2/$author/"
+            . $mod->package);
+
  $stat->license([ qw/Artistic GPL-2/ ]);
 
  my $prereqs = $mod->status->prereqs;
@@ -386,17 +400,21 @@ sub create {
   }
  }
 
+ my %seen;
+
  my $d = $stat->header;
  $d   .= "# Generated by CPANPLUS::Dist::Gentoo version $VERSION\n\n";
  $d   .= 'MODULE_AUTHOR="' . $stat->author . "\"\ninherit perl-module\n\n";
+ $d   .= 'S="${WORKDIR}/' . $stat->distribution . "\"\n";
  $d   .= 'DESCRIPTION="' . $stat->desc . "\"\n";
- $d   .= 'HOMEPAGE="' . $stat->uri . "\"\n\n";
+ $d   .= 'HOMEPAGE="' . $stat->uri . "\"\n";
+ $d   .= 'SRC_URI="' . $stat->src . "\"\n";
  $d   .= "SLOT=\"0\"\n";
  $d   .= 'LICENSE="|| ( ' . join(' ', sort @{$stat->license}) . " )\"\n";
  $d   .= 'KEYWORDS="' . join(' ', sort @{$stat->keywords}) . "\"\n";
  $d   .= 'DEPEND="' . join("\n",
-  'dev-lang/perl',
-  map $self->_cpan2portage(@$_), @{$stat->deps}
+  sort grep !$seen{$_}++, 'dev-lang/perl',
+                          map $self->_cpan2portage(@$_), @{$stat->deps}
  ) . "\"\n";
  $d   .= "SRC_TEST=\"do\"\n";
  $d   .= $stat->footer;
@@ -553,7 +571,7 @@ Kent Fredric, for testing and suggesting improvements.
 
 =head1 COPYRIGHT & LICENSE
 
-Copyright 2008 Vincent Pit, all rights reserved.
+Copyright 2008-2009 Vincent Pit, all rights reserved.
 
 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.