X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FCPANPLUS%2FDist%2FGentoo%2FMaps.pm;h=884b24fa2d8bc1324be775da6b62324949a09dab;hb=7278013a1296d32f2f2b4dc61d4463dc1ba30812;hp=d118edc2361f13cbb1e7cb94f2fc9d2396998830;hpb=7e2aca98057c17b7728aa3028a07dacd2fdd0d62;p=perl%2Fmodules%2FCPANPLUS-Dist-Gentoo.git diff --git a/lib/CPANPLUS/Dist/Gentoo/Maps.pm b/lib/CPANPLUS/Dist/Gentoo/Maps.pm index d118edc..884b24f 100644 --- a/lib/CPANPLUS/Dist/Gentoo/Maps.pm +++ b/lib/CPANPLUS/Dist/Gentoo/Maps.pm @@ -9,11 +9,11 @@ CPANPLUS::Dist::Gentoo::Maps - Map CPAN objects to Gentoo and vice versa. =head1 VERSION -Version 0.05 +Version 0.08 =cut -our $VERSION = '0.05'; +our $VERSION = '0.08'; =head1 DESCRPITON @@ -40,6 +40,97 @@ sub name_c2g { return $gentooisms{$name} || $name; } +=head2 C + +Maps F C tag values to the corresponding list of Gentoo licenses identifiers. +Duplicates are stripped off. + +The included data was gathered from L and L. + +=cut + +my %licenses = ( + apache => [ 'Apache-2.0' ], + artistic => [ 'Artistic' ], + artistic_2 => [ 'Artistic-2' ], + bsd => [ 'BSD' ], + gpl => [ 'GPL-1' ], + gpl2 => [ 'GPL-2' ], + gpl3 => [ 'GPL-3' ], + lgpl => [ 'LGPL-2.1' ], + lgpl2 => [ 'LGPL-2.1' ], + lgpl3 => [ 'LGPL-3' ], + mit => [ 'MIT' ], + mozilla => [ 'MPL-1.1' ], + perl => [ 'Artistic', 'GPL-2' ], +); + +sub license_c2g { + my %seen; + grep !$seen{$_}++, map @{$licenses{+lc} || []}, @_; +} + +=head2 C + +Converts a CPAN version to a Gentoo version. + +=cut + +sub version_c2g { + my ($v) = @_; + + $v =~ y/-/_/; + $v =~ y/0-9._//cd; + + $v =~ s/^[._]*//; + $v =~ s/[._]*$//; + $v =~ s/([._])[._]*/$1/g; + + ($v, my $patch, my @rest) = split /_/, $v; + $v .= '_p' . $patch if defined $patch; + $v .= join('.', '', @rest) if @rest; + + return $v; +} + +=head2 C + +Compares two Gentoo versions. + +=cut + +sub version_gcmp { + my ($a, $b) = map { defined() ? $_ : 0 } @_; + + for ($a, $b) { + s/^[._]+//g; + s/[._]+$//g; + if (/^([\d.]*\d)\.*(?:_p\.*(\d[\d.]*))?\.*(?:-r(\d+))?$/) { + $_ = { + v => [ split /\.+/, $1 ], + p => [ split /\.+/, $2 || 0 ], + r => [ $3 || 0 ], + }; + } else { + require Carp; + Carp::croak("Couldn't parse version string '$_'"); + } + } + + for my $k (qw/v p r/) { + my $xa = $a->{$k}; + my $xb = $b->{$k}; + while (@$xa or @$xb) { + my $na = shift(@$xa) || 0; + my $nb = shift(@$xb) || 0; + my $c = $na <=> $nb; + return $c if $c; + } + } + + return 0; +} + =head1 SEE ALSO L. @@ -72,6 +163,7 @@ This program is free software; you can redistribute it and/or modify it under th __DATA__ ANSIColor Term-ANSIColor +AcePerl Ace Audio-CD Audio-CD-disc-cover CGI-Simple Cgi-Simple Cache-Mmap cache-mmap @@ -127,6 +219,7 @@ Net-Server net-server OLE-Storage_Lite OLE-StorageLite Ogg-Vorbis-Header ogg-vorbis-header PathTools File-Spec +Perl-Tidy perltidy Pod-Parser PodParser Regexp-Common regexp-common SDL_Perl sdl-perl