=head1 VERSION
-Version 0.04
+Version 0.05
=cut
-our $VERSION = '0.04';
+our $VERSION = '0.05';
=head1 SYNOPSIS
my $default_distdir;
my $main_portdir;
+my %forced;
+
sub _unquote {
my $s = shift;
$s =~ s/^["']*//;
return $s;
}
+my $format_available;
+
sub format_available {
+ return $format_available if defined $format_available;
+
for my $prog (qw/emerge ebuild/) {
unless (can_run($prog)) {
error "$prog is required to write ebuilds -- aborting";
- return 0;
+ return $format_available = 0;
}
}
$default_keywords = [ 'x86' ] unless defined $default_keywords;
$default_distdir = '/usr/portage/distfiles' unless defined $default_distdir;
- return 1;
+ return $format_available = 1;
}
sub init {
my $stat = $self->status;
my $conf = $self->parent->parent->configure_object;
- $stat->mk_accessors(qw/name version author distribution desc uri license
+ $stat->mk_accessors(qw/name version author distribution desc uri src license
deps eb_name eb_version eb_dir eb_file fetched_arch
portdir_overlay
overlay distdir keywords do_manifest header footer
if (-e $file) {
my $skip = 1;
- if ($stat->force) {
+ if ($stat->force and not $forced{$file}) {
if (-w $file) {
1 while unlink $file;
+ $forced{$file} = 1;
$skip = 0;
} else {
error "Can't force rewriting of $file -- skipping";
$stat->uri('http://search.cpan.org/dist/' . $name);
+ unless ($author =~ /^(.)(.)/) {
+ error 'Wrong author name -- aborting';
+ return 0;
+ }
+ $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;
return 1;
}
- $stat->created(0);
- $stat->dist(undef);
-
- $self->SUPER::create(@_);
-
- $stat->created(0);
- $stat->dist(undef);
-
my $dir = $stat->eb_dir;
unless (-d $dir) {
eval { mkpath $dir };
}
}
+ my %seen;
+
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->distribution . "\"\n";
$d .= 'DESCRIPTION="' . $stat->desc . "\"\n";
- $d .= 'HOMEPAGE="' . $stat->uri . "\"\n\n";
+ $d .= 'HOMEPAGE="' . $stat->uri . "\"\n";
+ $d .= 'SRC_URI="' . $stat->src . "\"\n";
$d .= "SLOT=\"0\"\n";
$d .= 'LICENSE="|| ( ' . join(' ', sort @{$stat->license}) . " )\"\n";
$d .= 'KEYWORDS="' . join(' ', sort @{$stat->keywords}) . "\"\n";
$d .= 'DEPEND="' . join("\n",
- 'dev-lang/perl',
- map $self->_cpan2portage(@$_), @{$stat->deps}
+ sort grep !$seen{$_}++, 'dev-lang/perl',
+ map $self->_cpan2portage(@$_), @{$stat->deps}
) . "\"\n";
$d .= "SRC_TEST=\"do\"\n";
$d .= $stat->footer;
print $eb $d;
close $eb;
+ $stat->created(0);
+ $stat->dist(undef);
+
+ $self->SUPER::create(@_);
+
+ $stat->created(0);
+ $stat->dist(undef);
+
if ($stat->do_manifest) {
unless (copy $stat->fetched_arch, $stat->distdir) {
error "Couldn\'t copy the distribution file to distdir ($!) -- aborting";
my @ebuilds = glob catfile($portdir, $category, $atom,"$atom-*.ebuild");
next unless @ebuilds;
- if (defined $version) {
+ if (defined $ver) { # implies that $version is defined
for (@ebuilds) {
next unless /\Q$atom\E-v?([\d._]+).*?\.ebuild$/;
my $eb_ver = eval { version->new($1) };
=head1 COPYRIGHT & LICENSE
-Copyright 2008 Vincent Pit, all rights reserved.
+Copyright 2008-2009 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.