summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Fredric <kentnl@gentoo.org>2020-05-04 02:46:42 +1200
committerKent Fredric <kentnl@gentoo.org>2020-05-04 02:49:40 +1200
commit9920419c734ebd89a9522abbe7d2e8982fad69e5 (patch)
treee2a69adf5a658fae872709915e6181268ca6a15a /dev-perl/App-cpanminus
parentdev-perl/Perl-Strip: Add w/v=1.100.0 (diff)
downloadgentoo-9920419c734ebd89a9522abbe7d2e8982fad69e5.tar.gz
gentoo-9920419c734ebd89a9522abbe7d2e8982fad69e5.tar.bz2
gentoo-9920419c734ebd89a9522abbe7d2e8982fad69e5.zip
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 <kentnl@gentoo.org>
Diffstat (limited to 'dev-perl/App-cpanminus')
-rw-r--r--dev-perl/App-cpanminus/App-cpanminus-9999.ebuild108
1 files changed, 108 insertions, 0 deletions
diff --git a/dev-perl/App-cpanminus/App-cpanminus-9999.ebuild b/dev-perl/App-cpanminus/App-cpanminus-9999.ebuild
new file mode 100644
index 000000000000..5c7c7bda4a07
--- /dev/null
+++ b/dev-perl/App-cpanminus/App-cpanminus-9999.ebuild
@@ -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
+}