X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FCPANPLUS%2FDist%2FGentoo.pm;h=8e1809ccfe7f2598e014cc510374aa6cb1f7fa75;hb=037d26d9eaf3e61639651a8903524e9644f9d067;hp=f2a12085e98e0ff3efdd7f26b2f0b328d77f37d2;hpb=b59e187dfbf5005ed791836f59ac18e0111bcbd4;p=perl%2Fmodules%2FCPANPLUS-Dist-Gentoo.git diff --git a/lib/CPANPLUS/Dist/Gentoo.pm b/lib/CPANPLUS/Dist/Gentoo.pm index f2a1208..8e1809c 100644 --- a/lib/CPANPLUS/Dist/Gentoo.pm +++ b/lib/CPANPLUS/Dist/Gentoo.pm @@ -57,6 +57,14 @@ use constant CATEGORY => 'perl-gcpanp'; my $overlays; my $default_keywords; +my $default_distdir; + +sub _unquote { + my $s = shift; + $s =~ s/^["']*//; + $s =~ s/["']*$//; + return $s; +} sub format_available { for my $prog (qw/emerge ebuild/) { @@ -72,16 +80,13 @@ sub format_available { if ($success) { for (@{$output || []}) { if (/^PORTDIR_OVERLAY=(.*)$/m) { - my $o = $1; - $o =~ s/^["']*//; - $o =~ s/["']*$//; - $overlays = [ map abs_path($_), split ' ', $o ]; + $overlays = [ map abs_path($_), split ' ', _unquote($1) ]; } if (/^ACCEPT_KEYWORDS=(.*)$/m) { - my $k = $1; - $k =~ s/^["']*//; - $k =~ s/["']*$//; - $default_keywords = [ split ' ', $k ]; + $default_keywords = [ split ' ', _unquote($1) ]; + } + if (/^DISTDIR=(.*)$/m) { + $default_distdir = abs_path(_unquote($1)); } } } else { @@ -90,6 +95,7 @@ sub format_available { } $default_keywords = [ 'x86' ] unless defined $default_keywords; + $default_distdir = '/usr/portage/distfiles' unless defined $default_distdir; return 1; } @@ -111,7 +117,7 @@ sub init { return 1; } -my %gentooism = ( +our %gentooism = ( 'ANSIColor' => 'Term-ANSIColor', 'Audio-CD' => 'Audio-CD-disc-cover', 'CGI-Simple' => 'Cgi-Simple', @@ -231,7 +237,7 @@ sub prepare { $stat->overlay($overlay); my $distdir = delete $opts{'distdir'}; - $distdir = (defined $distdir) ? abs_path $distdir : '/usr/portage/distfiles'; + $distdir = (defined $distdir) ? abs_path $distdir : $default_distdir; $stat->distdir($distdir); if ($stat->do_manifest && !-w $stat->distdir) { @@ -244,12 +250,11 @@ sub prepare { my $portdir_overlay; for (@$overlays) { if ($_ eq $overlay or File::Spec::Functions::abs2rel($overlay, $_) eq $cur) { - $portdir_overlay = join ' ', @$overlays; + $portdir_overlay = [ @$overlays ]; last; } } - $portdir_overlay = join ' ', @$overlays, $overlay - unless defined $portdir_overlay; + $portdir_overlay = [ @$overlays, $overlay ] unless $portdir_overlay; $stat->portdir_overlay($portdir_overlay); my $name = $mod->package_name; @@ -464,7 +469,7 @@ sub _run { my $stat = $self->status; my ($success, $errmsg, $output) = do { - local $ENV{PORTDIR_OVERLAY} = $stat->portdir_overlay; + local $ENV{PORTDIR_OVERLAY} = join ' ', @{$stat->portdir_overlay}; local $ENV{PORTAGE_RO_DISTDIRS} = $stat->distdir; run command => $cmd, verbose => $verbose; };