Vincent Pit


CPANPLUS::Dist::Gentoo - CPANPLUS backend generating Gentoo ebuilds.


Version 0.12


    # 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="# Begin" \
              --dist-opts footer="# End" \
              Any::Module You::Like


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 perl-gcpanp category. They favour depending on a virtual, on perl-core, dev-perl or perl-gcpan (in that order) rather than perl-gcpanp. Existing ebuilds will be searched into the main PORTDIR portage tree and then into the overlays listed in PORTDIR_OVERLAY.


You can pass specific options to cpan2dist by using the --dist-opts command-line argument followed by a key=value pair, where key is the option name and value is what it is set to. --dist-opts can be used several times.

The valid option keys are :

  • manifest

    A boolean that indicates whether the Manifest file should be generated by running ebuild manifest onto the generated ebuilds.

    Defaults to yes.

  • overlay

    The path of the overlay in which the generated ebuilds will be written.

    Defaults to the first overlay listed in PORTDIR_OVERLAY (as returned by emerge --info) or /usr/local/portage if this variable is empty.

  • distdir

    The directory where ebuild expects to find the source tarballs. You need write permissions on this directory.

    Defaults to the value of DISTDIR (as returned by emerge --info) or /usr/portage/distfiles if this variable is empty.

  • keywords

    The valid KEYWORDS for the generated ebuilds.

    Defaults to the value of ACCEPT_KEYWORDS (as returned by emerge --info) or 'x86' if this variable is empty.

  • header

    A chunk of text that is prepended to every ebuild.

    Defaults to the generic Gentoo Foundation header.

  • footer

    A chunk of text that is appended to every ebuild.

    Defaults to nothing.

cpan2dist itself takes other options, most notably :

  • --buildprereq generates an ebuild for every dependency, even for those that are already up-to-date. Setting this option is recommended.

  • --force forcefully regenerates ebuilds even if they already exist.

  • --install installs the ebuilds after generating them.

  • --skiptest skips tests while building, which speeds up the building process.

  • --verbose shows a lot more information.

Please refer to cpan2dist documentation for a complete coverage of its abilities.


Before installing this module, you should append perl-gcpanp to your /etc/portage/categories file.

You have two ways for installing this module :

  • Use the perl overlay located at It contains an ebuild for CPANPLUS::Dist::Gentoo which will most likely be up-to-date given the reactivity of Gentoo's Perl herd.

  • Bootstrap an ebuild for CPANPLUS::Dist::Gentoo using itself.

    First, make sure your system perl is 5.10 or greater, so that the CPANPLUS toolchain is available.

        $ perl -v
        This is perl 5, version 12, subversion 2 (v5.12.2)...

    perl 5.12 is the current stable Perl version in Gentoo. If you still have perl 5.8.x, you can upgrade it by running the following commands as root :

        # emerge -tv ">=dev-lang/perl-5.10"
        # perl-cleaner --all

    Then, fetch the CPANPLUS::Dist::Gentoo tarball :

        $ cd /tmp
        $ wget

    Log in as root and unpack it in e.g. your home directory :

        # cd
        # tar xzf /tmp/CPANPLUS-Dist-Gentoo-0.12.tar.gz
        # cd CPANPLUS-Dist-Gentoo-0.12

    Bootstrap CPANPLUS::Dist::Gentoo using the bundled shell script g-cpanp :

        # perl Makefile.PL
        # make
        # PERL5LIB=blib/lib samples/g-cpanp CPANPLUS::Dist::Gentoo

    Finally, emerge the CPANPLUS-Dist-Gentoo ebuild you've just generated :

        # emerge -tv CPANPLUS-Dist-Gentoo


This module inherits all the methods from CPANPLUS::Dist::Base. Please refer to its documentation for precise information on what's done at each step.


Returns the contents of the META.yml or META.json files as parsed by Parse::CPAN::Meta.


Returns an array reference to a list of Gentoo licences identifiers under which the current distribution is released.


Updates the Manifest file for the ebuild associated to the current dist object.


Returns the source of the ebuild for the current dist object, or undef when one of the dependencies couldn't be mapped to an existing ebuild.


Gentoo (

CPANPLUS, IPC::Cmd (core modules since 5.9.5), Parse::CPAN::Meta (since 5.10.1).

Cwd, Carp (since perl 5), File::Path (5.001), File::Copy (5.002), File::Spec (5.00405), List::Util (5.007003).



CPANPLUS::Dist::Base, CPANPLUS::Dist::Deb, CPANPLUS::Dist::Mdv.


Vincent Pit, <perl at>,

You can contact me by mail or on (vincent).


Please report any bugs or feature requests to bug-cpanplus-dist-gentoo at, or through the web interface at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


You can find documentation for this module with the perldoc command.

    perldoc CPANPLUS::Dist::Gentoo


The module was inspired by CPANPLUS::Dist::Deb and CPANPLUS::Dist::Mdv.

Kent Fredric, for testing and suggesting improvements.


Copyright 2008,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.