You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
2.8 KiB

# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
if [[ ${PV} == 9999 ]]; then
GITHUB_USER=miyagawa
GITHUB_REPO=cpanminus
EGIT_REPO_URI="https://github.com/${GITHUB_USER}/${GITHUB_REPO}.git"
EGIT_BRANCH="devel"
EGIT_CHECKOUT_DIR="${WORKDIR}/${PN}-git"
VCS_ECLASS="git-r3"
else
DIST_AUTHOR=MIYAGAWA
DIST_VERSION=1.7044
KEYWORDS="amd64 ~ppc x86"
fi
inherit perl-module ${VCS_ECLASS}
DESCRIPTION="Get, unpack, build and install modules from CPAN"
SLOT="0"
IUSE="test"
RESTRICT="!test? ( test )"
GIT_DEPENDS="
dev-perl/Dist-Milla
dev-perl/Dist-Zilla
dev-perl/Dist-Zilla-Plugin-Run
dev-perl/Perl-Version
dev-perl/App-FatPacker
dev-perl/Module-Install
dev-perl/Module-Signature
dev-perl/Perl-Strip
"
BDEPEND="${RDEPEND}
virtual/perl-ExtUtils-MakeMaker
test? ( virtual/perl-Test-Simple )
"
[[ ${PV} == 9999 ]] && BDEPEND+=" ${GIT_DEPENDS}"
dzil_env_setup() {
# NextRelease noise :(
mkdir -p ~/.dzil/
local user="$(whoami)"
local host="$(hostname)"
printf '[%%User]\nname = %s\nemail = %s' "${user}" "${user}@${host}" >> ~/.dzil/config.ini
}
dzil_to_distdir() {
local dzil_root dest has_missing modname dzil_version
dzil_root="$1"
dest="$2"
cd "${dzil_root}" || die "Can't enter git workdir '${dzil_root}'";
dzil_env_setup
dzil_version="$(dzil version)" || die "Error invoking 'dzil version'"
einfo "Generating CPAN dist with ${dzil_version}"
has_missing=""
einfo "Checking dzil authordeps"
while IFS= read -d $'\n' -r modname; do
if [[ -z "${has_missing}" ]]; then
has_missing=1
eerror "'dzil authordeps' indicates missing build dependencies"
eerror "These will prevent building, please report a bug"
eerror "Missing:"
fi
eerror " ${modname}"
done < <( dzil authordeps --missing --versions )
[[ -z "${has_missing}" ]] || die "Satisfy all missing authordeps first"
einfo "Checking dzil build deps"
while IFS= read -d $'\n' -r modname; do
if [[ -z "${has_missing}" ]]; then
has_missing=1
ewarn "'dzil listdeps' indicates missing build dependencies"
ewarn "These may prevent building, please report a bug if they do"
ewarn "Missing:"
fi
ewarn " ${modname}"
done < <( dzil listdeps --missing --versions --author )
einfo "Generating release"
dzil build --notgz --in "${dest}" || die "Unable to build CPAN dist in '${dest}'"
}
src_unpack() {
if [[ ${PV} == 9999 ]]; then
"${VCS_ECLASS}"_src_unpack
mkdir -p "${S}" || die "Can't make ${S}"
else
default
fi
}
src_prepare() {
if [[ ${PV} == 9999 ]]; then
# Uses git sources in WORKDIR/rex-git
# to generate a CPAN-style tree in ${S}
# before letting perl-module.eclass do the rest
dzil_to_distdir "${EGIT_CHECKOUT_DIR}/App-cpanminus" "${S}"
fi
cd "${S}" || die "Can't enter build dir"
perl-module_src_prepare
}