$manifest = 0 if $manifest =~ /^\s*no?\s*$/i;
$stat->do_manifest($manifest);
- my $overlay = catdir(delete($opts{'overlay'}) || '/usr/local/portage',
- CATEGORY);
- $stat->overlay($overlay);
+ $stat->overlay(delete($opts{'overlay'}) || '/usr/local/portage');
$stat->distdir(delete($opts{'distdir'}) || '/usr/portage/distfiles');
$stat->dist($name . '-' . $version);
- my $f = 1;
- $version =~ s/_+/$f ? do { $f = 0; '_p' } : ''/ge;
- 1 while $version =~ s/(_p[^.]*)\.+/$1/;
+ $version =~ s/[^\d._]+//g;
+ $version =~ s/^[._]*//;
+ $version =~ s/[._]*$//;
+ $version =~ s/[._]*_[._]*/_/g;
+ {
+ ($version, my $patch, my @rest) = split /_/, $version;
+ $version .= '_p' . $patch if defined $patch;
+ $version .= join('.', '', @rest) if @rest;
+ }
$stat->eb_version($version);
$stat->eb_name($gentooism{$name} || $name);
- $stat->eb_dir(catdir($overlay, $stat->eb_name));
+ $stat->eb_dir(catdir($stat->overlay, CATEGORY, $stat->eb_name));
my $file = catfile($stat->eb_dir,
$stat->eb_name . '-' . $stat->eb_version . '.ebuild');