]> git.vpit.fr Git - perl/modules/CPANPLUS-Dist-Gentoo.git/blobdiff - lib/CPANPLUS/Dist/Gentoo.pm
Better perl -> ebuild version conversion
[perl/modules/CPANPLUS-Dist-Gentoo.git] / lib / CPANPLUS / Dist / Gentoo.pm
index 15424d3e52edf980e3ee72048370c3dbd3ed92c5..196683b03e06a7b6315d211911e41d7cfafb52f9 100644 (file)
@@ -107,9 +107,7 @@ sub prepare {
  $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');
 
@@ -127,14 +125,20 @@ sub prepare {
 
  $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');