X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FCPANPLUS%2FDist%2FGentoo%2FMaps.pm;h=7ba1e945ad1cbbd2005bb69c0eed7687750b79e5;hb=19eae8789c3ed2068bfde084ba9a8c711526c589;hp=957450dd6621206e832dde99186d5705b4223eae;hpb=363cb060a54409c7ae3032978b3db8eadbead176;p=perl%2Fmodules%2FCPANPLUS-Dist-Gentoo.git diff --git a/lib/CPANPLUS/Dist/Gentoo/Maps.pm b/lib/CPANPLUS/Dist/Gentoo/Maps.pm index 957450d..7ba1e94 100644 --- a/lib/CPANPLUS/Dist/Gentoo/Maps.pm +++ b/lib/CPANPLUS/Dist/Gentoo/Maps.pm @@ -3,17 +3,20 @@ package CPANPLUS::Dist::Gentoo::Maps; use strict; use warnings; +use File::Spec; +use POSIX (); + =head1 NAME CPANPLUS::Dist::Gentoo::Maps - Map CPAN distribution names, version numbers and license identifiers to their Gentoo counterparts. =head1 VERSION -Version 0.11 +Version 0.12 =cut -our $VERSION = '0.11'; +our $VERSION = '0.12'; =head1 DESCRIPTION @@ -29,7 +32,9 @@ close DATA; =head1 FUNCTIONS -=head2 C +=head2 C + + my $gentoo_pkg = name_c2g($cpan_dist); Maps a CPAN distribution name to the corresponding Gentoo package name. @@ -40,7 +45,9 @@ sub name_c2g { return $name_mismatch{$name} || $name; } -=head2 C +=head2 C + + my @gentoo_licenses = license_c2g(@meta_licenses); Maps F C tag values to the corresponding list of Gentoo license identifiers. Duplicates are stripped off. @@ -74,7 +81,9 @@ sub license_c2g { @_; } -=head2 C +=head2 C + + my $gentoo_version = version_c2g($cpan_dist, $cpan_version); Converts the C<$version> of a CPAN distribution C<$name> to a Gentoo version number. @@ -139,7 +148,7 @@ my $default_but_no_strip_2 = sub { }; my $insert_dot_every = sub { - my ($version, $step) = @_; + my ($version, $step, $strip) = @_; my $is_dev = $version =~ /_/; @@ -157,7 +166,9 @@ my $insert_dot_every = sub { my $pat = sprintf '.{1,%d}', $step || 1; push @parts, $subversion =~ /($pat)/g; - s/^0+([^0]|0\z)/$1/ for @parts; + if ($strip) { + s/^0+([^0]|0\z)/$1/ for @parts; + } $version = join '.', @parts; $version .= '_rc' if $is_dev; @@ -218,13 +229,12 @@ $version_mismatch{$_} = $default_but_ignore_v for qw< $version_mismatch{$_} = $default_but_no_strip_1 for qw< Crypt-RC4 + FLV-AudioExtractor File-Grep MogileFS-Client-Async MogileFS-Network ->; - -$version_mismatch{$_} = $default_but_no_strip_2 for qw< - Net-IMAP-Simple + Test-Command-Simple + Unix-Getrusage >; $version_mismatch{$_} = sub { $insert_dot_every->($_[0], 1) } for qw< @@ -233,29 +243,25 @@ $version_mismatch{$_} = sub { $insert_dot_every->($_[0], 1) } for qw< >; $version_mismatch{$_} = sub { $insert_dot_every->($_[0], 3) } for qw< - POE-Component-IKC + Data-Diver >; $version_mismatch{$_} = $simple_cleanup for qw< - Alien-SDL CGI-SpeedyCGI Class-ISA - Data-Uniqid - ExtUtils-Install - File-Path - Getopt-GUI-Long + CryptX + Data-HexDump Gtk2-Notify HTML-Table I18N-LangTags IO IPC-System-Simple Lab-Measurement - Log-TraceMessages - MusicBrainz-DiscID - Net-IRC Net-Ping + REST-Client SDL SOAP-WSDL + TAP-Parser-SourceHandler-pgTAP TeX-Encode Tie-Simple Time-Piece @@ -263,7 +269,6 @@ $version_mismatch{$_} = $simple_cleanup for qw< >; $version_mismatch{$_} = $simple_and_correct_suffixes for qw< - Gimp XML-Grove >; @@ -288,7 +293,9 @@ sub version_c2g { return $handler->($v); } -=head2 C +=head2 C + + my $gentoo_version = perl_version_c2g($perl_version); Converts a perl version number as you can find it in CPAN prerequisites to a Gentoo version number. @@ -313,6 +320,58 @@ sub perl_version_c2g { return join '.', map int, @parts; } +=head2 C + + my $timestamp = get_portage_timestamp($portage); + +Get the numerical timestamp associated with the portage tree located at C<$portage>. +Requires L, and returns C if it is not available. + +=cut + +sub get_portage_timestamp { + my ($portage) = @_; + + { + local $@; + eval { require POSIX::strptime } or return; + } + + my $file = File::Spec->catfile($portage, 'metadata', 'timestamp.chk'); + return unless -e $file; + + my $timestamp = do { + open my $fh, '<', $file or return; + local $/; + <$fh>; + }; + s/^\s*//, s/\s*$// for $timestamp; + + my $shift = 0; + if ($timestamp =~ s/\s+([+-])([0-9]{2})([0-9]{2})$//) { + $shift = ($2 * 60 + $3) * 60; + $shift = -$shift if $1 eq '-'; + } + + my $old_lc_all = POSIX::setlocale(POSIX::LC_ALL()); + POSIX::setlocale(POSIX::LC_ALL(), 'C'); + $timestamp = POSIX::mktime( + POSIX::strptime($timestamp, '%a, %d %b %Y %H:%M:%S') + ); + POSIX::setlocale(POSIX::LC_ALL(), $old_lc_all); + $timestamp += $shift; + + return $timestamp; +} + +=head2 C + +Numerical timestamp associated with the revision of the portage tree that was used for generating the corrections to the natural cpan-to-gentoo mapping listed in this module. + +=cut + +sub TIMESTAMP () { 1367759701 } + =head1 SEE ALSO L. @@ -336,7 +395,7 @@ You can find documentation for this module with the perldoc command. =head1 COPYRIGHT & LICENSE -Copyright 2009,2010,2011 Vincent Pit, all rights reserved. +Copyright 2009,2010,2011,2012 Vincent Pit, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. @@ -348,7 +407,6 @@ __DATA__ AcePerl Ace CGI-Simple Cgi-Simple CGI-SpeedyCGI SpeedyCGI -CPAN-Mini-Phalanx100 CPAN-Mini-Phalanx Cache-Mmap cache-mmap Class-Loader class-loader Class-ReturnValue class-returnvalue @@ -372,7 +430,6 @@ Digest-MD2 digest-md2 ExtUtils-Depends extutils-depends ExtUtils-PkgConfig extutils-pkgconfig Frontier-RPC frontier-rpc -Gimp gimp-perl Glib glib-perl Gnome2 gnome2-perl Gnome2-Canvas gnome2-canvas @@ -419,7 +476,6 @@ Tie-EncryptedHash tie-encryptedhash Time-Period Period Tk perl-tk Wx wxperl -XML-Sablotron XML-Sablot YAML yaml gettext Locale-gettext txt2html TextToHTML