forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dev-perl/App-cpanminus: Add -9999 version
This work is based on the existing work in app-admin/rex, as latest cpanm uses Dzil in its build chain. TODO: Provision fatlib entries *exclusively* from installed gentoo stuff, but that might be really tricky. What it currently does is fatpack bundled copies of upstream stuff Package-Manager: Portage-2.3.99, Repoman-2.3.22 Signed-off-by: Kent Fredric <[email protected]>
- Loading branch information
1 parent
d427ea8
commit 9920419
Showing
1 changed file
with
108 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
# 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 | ||
} |