=head1 VERSION
-Version 0.10
+Version 0.11
=cut
-our $VERSION = '0.10';
+our $VERSION = '0.11';
=head1 SYNOPSIS
+ # Using default values from your make.conf
+ cpan2dist --format=CPANPLUS::Dist::Gentoo --buildprereq Some::Module
+
+ # Specifying your own options
cpan2dist --format=CPANPLUS::Dist::Gentoo \
--dist-opts overlay=/usr/local/portage \
--dist-opts distdir=/usr/portage/distfiles \
--dist-opts manifest=yes \
--dist-opts keywords=x86 \
- --dist-opts header="# Copyright 1999-2008 Gentoo Foundation" \
+ --dist-opts header="# Begin" \
--dist-opts footer="# End" \
Any::Module You::Like
-=head1 DESCRPITON
+=head1 DESCRIPTION
-This module is a CPANPLUS backend that recursively generates Gentoo ebuilds for a given package in the specified overlay (defaults to F</usr/local/portage>), updates the manifest, and even emerges it (together with its dependencies) if the user requires it.
-You need write permissions on the directory where Gentoo fetches its source files (usually F</usr/portage/distfiles>).
-The valid C<KEYWORDS> for the generated ebuilds are by default those given in C<ACCEPT_KEYWORDS>, but you can specify your own with the C<keywords> dist-option.
+This module is a CPANPLUS backend that recursively generates Gentoo ebuilds for a given package in the default overlay, updates the manifest, and even emerges it (together with its dependencies) if the user requires it.
The generated ebuilds are placed into the C<perl-gcpanp> category.
They favour depending on a C<virtual>, on C<perl-core>, C<dev-perl> or C<perl-gcpan> (in that order) rather than C<perl-gcpanp>.
+Existing ebuilds will be searched into the main C<PORTDIR> portage tree and then into the overlays listed in C<PORTDIR_OVERLAY>.
+
+=head1 OPTIONS
+
+You can pass specific options to L<cpan2dist> by using the C<--dist-opts> command-line argument followed by a C<key=value> pair, where C<key> is the option name and C<value> is what it is set to.
+C<--dist-opts> can be used several times.
+
+The valid option C<key>s are :
+
+=over 4
+
+=item *
+
+C<manifest>
+
+A boolean that indicates whether the F<Manifest> file should be generated by running C<ebuild manifest> onto the generated ebuilds.
+
+Defaults to C<yes>.
+
+=item *
+
+C<overlay>
+
+The path of the overlay in which the generated ebuilds will be written.
+
+Defaults to the first overlay listed in C<PORTDIR_OVERLAY> (as returned by C<emerge --info>) or F</usr/local/portage> if this variable is empty.
+
+=item *
+
+C<distdir>
+
+The directory where C<ebuild> expects to find the source tarballs.
+You need write permissions on this directory.
+
+Defaults to the value of C<DISTDIR> (as returned by C<emerge --info>) or F</usr/portage/distfiles> if this variable is empty.
+
+=item *
+
+C<keywords>
+
+The valid C<KEYWORDS> for the generated ebuilds.
+
+Defaults to the value of C<ACCEPT_KEYWORDS> (as returned by C<emerge --info>) or C<'x86'> if this variable is empty.
+
+=item *
+
+C<header>
+
+A chunk of text that is prepended to every ebuild.
+
+Defaults to the generic Gentoo Foundation header.
+
+=item *
+
+C<footer>
+
+A chunk of text that is appended to every ebuild.
+
+Defaults to nothing.
+
+=back
+
+L<cpan2dist> itself takes other options, most notably :
+
+=over 4
+
+=item *
+
+C<--buildprereq> generates an ebuild for every dependency, even for those that are already up-to-date.
+Setting this option is recommended.
+
+=item *
+
+C<--force> forcefully regenerates ebuilds even if they already exist.
+
+=item *
+
+C<--install> installs the ebuilds after generating them.
+
+=item *
+
+C<--skiptest> skips tests while building, which speeds up the building process.
+
+=item *
+
+C<--verbose> shows a lot more information.
+
+=back
+
+Please refer to L<cpan2dist> documentation for a complete coverage of its abilities.
=head1 INSTALLATION
First, make sure your system C<perl> is C<5.10> or greater, so that the L<CPANPLUS> toolchain is available.
$ perl -v
- This is perl 5, version 12, subversion 2 (v5.12.2) built for x86_64-linux
- ...
+ This is perl 5, version 12, subversion 2 (v5.12.2)...
C<perl> C<5.12> is the current stable Perl version in Gentoo.
If you still have C<perl> C<5.8.x>, you can upgrade it by running the following commands as root :
Then, fetch the L<CPANPLUS::Dist::Gentoo> tarball :
$ cd /tmp
- $ wget http://search.cpan.org/CPAN/authors/id/V/VP/VPIT/CPANPLUS-Dist-Gentoo-0.10.tar.gz
+ $ wget http://search.cpan.org/CPAN/authors/id/V/VP/VPIT/CPANPLUS-Dist-Gentoo-0.11.tar.gz
Log in as root and unpack it in e.g. your home directory :
# cd
- # tar xzf /tmp/CPANPLUS-Dist-Gentoo-0.10.tar.gz
- # cd CPANPLUS-Dist-Gentoo-0.10
+ # tar xzf /tmp/CPANPLUS-Dist-Gentoo-0.11.tar.gz
+ # cd CPANPLUS-Dist-Gentoo-0.11
Bootstrap L<CPANPLUS::Dist::Gentoo> using the bundled shell script C<g-cpanp> :
+ # perl Makefile.PL
+ # make
# PERL5LIB=blib/lib samples/g-cpanp CPANPLUS::Dist::Gentoo
Finally, emerge the C<CPANPLUS-Dist-Gentoo> ebuild you've just generated :
sub format_available {
return $format_available if defined $format_available;
+ unless (IPC::Cmd->can_capture_buffer) {
+ my $msg = 'IPC::Cmd must be able to capture buffers.';
+ unless (do { local $@; eval { require IPC::Run; 1 } }) {
+ $msg .= ' Try installing IPC::Run (dev-perl/IPC-Run on Gentoo).';
+ }
+ __PACKAGE__->_abort($msg);
+ return $format_available = 0;
+ }
+
for my $prog (qw<emerge ebuild>) {
unless (IPC::Cmd::can_run($prog)) {
__PACKAGE__->_abort("$prog is required to write ebuilds");
}
}
- if (IPC::Cmd->can_capture_buffer) {
+ {
my $buffers;
my ($success, $errmsg) = IPC::Cmd::run(
command => [ qw<emerge --info> ],
}
} else {
__PACKAGE__->_abort($errmsg);
+ return $format_available = 0;
}
}
$stat->footer($footer);
my $overlay = delete $opts{overlay};
- $overlay = (defined $overlay) ? Cwd::abs_path($overlay) : '/usr/local/portage';
+ if (defined $overlay) {
+ $overlay = Cwd::abs_path($overlay);
+ } else {
+ $overlay = $overlays->[0];
+ $overlay = '/usr/local/portage' unless defined $overlay;
+ }
$stat->overlay($overlay);
my $distdir = delete $opts{distdir};
=head1 COPYRIGHT & LICENSE
-Copyright 2008,2009,2010 Vincent Pit, all rights reserved.
+Copyright 2008,2009,2010,2011 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.