X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FCPANPLUS%2FDist%2FGentoo.pm;h=67428ed265a4e71135a40bf0948bb82eb01e302e;hb=6ea8cf92ee3ae046edc579f391c7874d1d871595;hp=e71c0410e1c3873c71348e06fad5daceffabbc03;hpb=abf3358ef3aa7a4a2ecda76d04ad71aa3c64e0c1;p=perl%2Fmodules%2FCPANPLUS-Dist-Gentoo.git diff --git a/lib/CPANPLUS/Dist/Gentoo.pm b/lib/CPANPLUS/Dist/Gentoo.pm index e71c041..67428ed 100644 --- a/lib/CPANPLUS/Dist/Gentoo.pm +++ b/lib/CPANPLUS/Dist/Gentoo.pm @@ -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 { @@ -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"; @@ -376,14 +383,6 @@ sub create { return 1; } - $stat->created(0); - $stat->dist(undef); - - $self->SUPER::create(@_); - - $stat->created(0); - $stat->dist(undef); - my $dir = $stat->eb_dir; unless (-d $dir) { eval { mkpath $dir }; @@ -393,6 +392,8 @@ 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"; @@ -404,8 +405,8 @@ sub create { $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; @@ -418,6 +419,14 @@ sub create { print $eb $d; close $eb; + $stat->created(0); + $stat->dist(undef); + + $self->SUPER::create(@_); + + $stat->created(0); + $stat->dist(undef); + if ($stat->do_manifest) { unless (copy $stat->fetched_arch, $stat->distdir) { error "Couldn\'t copy the distribution file to distdir ($!) -- aborting";