X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FCPANPLUS%2FDist%2FGentoo.pm;h=be152cf2fc8c883c2d2a9394e73038b96b50f8d6;hb=3a050b81e76326ba8f52af389822964486487839;hp=2c8c0cfcb64aee4073e79959bf90dbd5e8ea1c2c;hpb=9c53ec7b95ee71dd074d77e6c0aa29d7d3b3e03e;p=perl%2Fmodules%2FCPANPLUS-Dist-Gentoo.git diff --git a/lib/CPANPLUS/Dist/Gentoo.pm b/lib/CPANPLUS/Dist/Gentoo.pm index 2c8c0cf..be152cf 100644 --- a/lib/CPANPLUS/Dist/Gentoo.pm +++ b/lib/CPANPLUS/Dist/Gentoo.pm @@ -3,6 +3,7 @@ package CPANPLUS::Dist::Gentoo; use strict; use warnings; +use Cwd qw/abs_path/; use File::Copy qw/copy/; use File::Path qw/mkpath/; use File::Spec::Functions qw/catdir catfile/; @@ -19,11 +20,11 @@ CPANPLUS::Dist::Gentoo - CPANPLUS backend generating Gentoo ebuilds. =head1 VERSION -Version 0.03 +Version 0.04 =cut -our $VERSION = '0.03'; +our $VERSION = '0.04'; =head1 SYNOPSIS @@ -32,6 +33,8 @@ our $VERSION = '0.03'; --dist-opts distdir=/usr/portage/distfiles \ --dist-opts manifest=yes \ --dist-opts keywords=x86 \ + --dist-opts header="# Copyright 1999-2008 Gentoo Foundation" \ + --dist-opts footer="# End" \ Any::Module You::Like =head1 DESCRPITON @@ -69,7 +72,7 @@ sub init { $stat->mk_accessors(qw/name version author dist desc uri src license deps eb_name eb_version eb_dir eb_file fetched_arch - overlay distdir keywords do_manifest + overlay distdir keywords do_manifest header footer force verbose/); $stat->force($conf->get_conf('force')); @@ -79,13 +82,16 @@ sub init { } my %gentooism = ( + 'Crypt-RSA' => 'crypt-rsa', 'Digest' => 'digest-base', 'Locale-Maketext' => 'locale-maketext', + 'Math-Pari' => 'math-pari', 'Net-Ping' => 'net-ping', 'PathTools' => 'File-Spec', 'PodParser' => 'Pod-Parser', 'Set-Scalar' => 'set-scalar', 'Tie-EncryptedHash' => 'tie-encryptedhash', + 'YAML' => 'yaml', ); sub prepare { @@ -97,6 +103,8 @@ sub prepare { my %opts = @_; + $stat->prepared(0); + my $keywords = delete $opts{'keywords'}; $keywords = 'x86' unless defined $keywords; $keywords = [ split ' ', $keywords ]; @@ -107,9 +115,30 @@ sub prepare { $manifest = 0 if $manifest =~ /^\s*no?\s*$/i; $stat->do_manifest($manifest); - $stat->overlay(delete($opts{'overlay'}) || '/usr/local/portage'); + my $header = delete $opts{'header'}; + if (defined $header) { + 1 while chomp $header; + $header .= "\n\n"; + } else { + $header = ''; + } + $stat->header($header); + + my $footer = delete $opts{'footer'}; + if (defined $footer) { + $footer = "\n" . $footer; + } else { + $footer = ''; + } + $stat->footer($footer); + + my $overlay = delete $opts{'overlay'}; + $overlay = (defined $overlay) ? abs_path $overlay : '/usr/local/portage'; + $stat->overlay($overlay); - $stat->distdir(delete($opts{'distdir'}) || '/usr/portage/distfiles'); + my $distdir = delete $opts{'distdir'}; + $distdir = (defined $distdir) ? abs_path $distdir : '/usr/portage/distfiles'; + $stat->distdir($distdir); if ($stat->do_manifest && !-w $stat->distdir) { error 'distdir isn\'t writable -- aborting'; @@ -173,16 +202,16 @@ sub prepare { $stat->uri('http://search.cpan.org/dist/' . $name); - unless ($name =~ /^([^-]+)/) { - error 'Wrong distribution name -- aborting'; + unless ($author =~ /^(.)(.)/) { + error 'Wrong author name -- aborting'; return 0; } - $stat->src('mirror://cpan/modules/by-module/' . $1 . '/' . $mod->package); + $stat->src("mirror://cpan/modules/by-authors/id/$1/$1$2/$author/" + . $mod->package); $stat->license([ qw/Artistic GPL-2/ ]); my $prereqs = $mod->status->prereqs; - $prereqs = { map { ($gentooism{$_} || $_) => $prereqs->{$_} } keys %$prereqs }; my @depends; for my $prereq (sort keys %$prereqs) { next if $prereq =~ /^perl(?:-|\z)/; @@ -206,6 +235,7 @@ sub prepare { } $stat->deps(\@depends); + $stat->prepared(1); return 1; } @@ -234,7 +264,8 @@ sub create { } } - my $d = "# Generated by CPANPLUS::Dist::Gentoo\n\n"; + my $d = $stat->header; + $d .= "# Generated by CPANPLUS::Dist::Gentoo version $VERSION\n\n"; $d .= 'MODULE_AUTHOR="' . $stat->author . "\"\ninherit perl-module\n\n"; $d .= 'S="${WORKDIR}/' . $stat->dist . "\"\n"; $d .= 'DESCRIPTION="' . $stat->desc . "\"\n"; @@ -247,6 +278,7 @@ sub create { 'dev-lang/perl', map { my $a = $_->[0]->package_name; + $a = $gentooism{$a} || $a; my $x = ''; if (defined $_->[1]) { $x = '>='; @@ -258,6 +290,7 @@ sub create { } @{$stat->deps}; $d .= "\"\n"; $d .= "SRC_TEST=\"do\"\n"; + $d .= $stat->footer; my $file = $stat->eb_file; open my $eb, '>', $file or do { @@ -336,7 +369,7 @@ Gentoo (L). L, L (core modules since 5.9.5). -L (since 5.001), L (5.002), L (5.00504). +L (since perl 5) L (5.001), L (5.002), L (5.00504). =head1 SEE ALSO @@ -364,6 +397,8 @@ You can find documentation for this module with the perldoc command. The module is to some extend cargo-culted from L and L. +Kent Fredric, for testing and suggesting improvements. + =head1 COPYRIGHT & LICENSE Copyright 2008 Vincent Pit, all rights reserved.