dev-perl/App-cpanminus: Add -9999 version
authorKent Fredric <kentnl@gentoo.org>
Sun, 3 May 2020 14:46:42 +0000 (02:46 +1200)
committerKent Fredric <kentnl@gentoo.org>
Sun, 3 May 2020 14:49:40 +0000 (02:49 +1200)
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>
dev-perl/App-cpanminus/App-cpanminus-9999.ebuild [new file with mode: 0644]

diff --git a/dev-perl/App-cpanminus/App-cpanminus-9999.ebuild b/dev-perl/App-cpanminus/App-cpanminus-9999.ebuild
new file mode 100644 (file)
index 0000000..5c7c7bd
--- /dev/null
@@ -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
+}