* Torsten Veller <[email protected]>:
> CPAN and ebuild versions are ordered in different ways. The idea here is
> to change the ebuild versions to be predictable and CPAN compatible.
I've committed dev-perl/Gentoo-PerlMod-Version which contains a perl module and
a scipt to convert the versions. gentoo-perlmod-version.pl maps given
perlish versions to ebuild versions (perl => ebuild):
$ gentoo-perlmod-version.pl 0.9 0.98 0.987 v0.{900,980,987} 0.{900,980,987}.0
0.9 => 0.900
0.98 => 0.980
0.987 => 0.987
v0.900 => 0.900
v0.980 => 0.980
v0.987 => 0.987
0.900.0 => 0.900
0.980.0 => 0.980
0.987.0 => 0.987
gentoo-perlmod-version.pl 0.9 0.08 0.007 0.0006 0.00005 0.000004 0.0000003
0.9 => 0.900
0.08 => 0.80
0.007 => 0.7
0.0006 => 0.0.600
0.00005 => 0.0.50
0.000004 => 0.0.4
0.0000003 => 0.0.0.300
Using version.pm the ebuild and perl versions can be compared:
The ebuild version just needs to be prefixed with a 'v'.
$ perl -wE 'while(@ARGV){say version->parse(shift) <=> version->parse(shift)}'
v1.1 1.001 v1.190 1.19
The given perl distribution version will be recorded as MODULE_VERSION in
the ebuild. (For ease of use s/^MODULE_VERSION=(['"]?)(.+)\1/$2/ should
return the version if not PV.)
Diff of the perl-module.eclass is attached.
The change of versioning will result in ~22 downgrades:
$ find dev-perl -name "*.ebuild" | egrep '\.[1-9][0-9]{3}'
dev-perl/POE-Component-IKC/POE-Component-IKC-0.2200.ebuild
dev-perl/Class-Accessor-Grouped/Class-Accessor-Grouped-0.10000.ebuild
dev-perl/IO-Moose/IO-Moose-0.1004.ebuild
dev-perl/DBD-mysql/DBD-mysql-2.9007.ebuild
dev-perl/text-autoformat/text-autoformat-1.669002.ebuild
dev-perl/text-autoformat/text-autoformat-1.669001.ebuild
dev-perl/CPAN-Mini/CPAN-Mini-1.100630.ebuild
dev-perl/Tie-Cache-LRU/Tie-Cache-LRU-20081023.2116.ebuild
dev-perl/DateTime-Format-Strptime/DateTime-Format-Strptime-1.5000.ebuild
dev-perl/DateTime-Format-Strptime/DateTime-Format-Strptime-1.4000.ebuild
dev-perl/Net-Twitter/Net-Twitter-3.14001.ebuild
dev-perl/Net-Twitter/Net-Twitter-3.13009.ebuild
dev-perl/XML-RAI/XML-RAI-1.3031.ebuild
dev-perl/XML-RAI/XML-RAI-1.3022.ebuild
dev-perl/Algorithm-Diff/Algorithm-Diff-1.1902.ebuild
dev-perl/Throwable/Throwable-0.102080.ebuild
dev-perl/Email-Sender/Email-Sender-0.102370.ebuild
dev-perl/Email-Sender/Email-Sender-0.101760.ebuild
dev-perl/Convert-BER/Convert-BER-1.3200.ebuild
dev-perl/Convert-BER/Convert-BER-1.3101.ebuild
dev-perl/Scalar-Properties/Scalar-Properties-1.100860.ebuild
dev-perl/DateTime-Format-Mail/DateTime-Format-Mail-0.3001.ebuild
dev-perl/File-chdir/File-chdir-0.1002.ebuild
dev-perl/File-chdir/File-chdir-0.1003.ebuild
dev-perl/Net-Netmask/Net-Netmask-1.9015.ebuild
dev-perl/PlRPC/PlRPC-0.2020-r1.ebuild
dev-perl/SQL-Translator/SQL-Translator-0.11006.ebuild
dev-perl/SQL-Translator/SQL-Translator-0.11007.ebuild
dev-perl/Perl6-Junction/Perl6-Junction-1.40000.ebuild
dev-perl/MP3-Tag/MP3-Tag-0.9709.ebuild
- Die on unsupported EAPI
- Die if PERL_EXPORT_PHASE_FUNCTIONS not yes or no
- Add support for MY_PN, MY_PV, MODULE_VERSION
- Allow use of myconf, mymake, myinst as arrays
- Use Module::Build even if Module::Build is not prefered but no Makefile.PL is
found
--- a/eclass/perl-module.eclass
+++ b/eclass/perl-module.eclass
@@ -34,7 +34,7 @@
esac
;;
*)
- DEPEND="EAPI-UNSUPPORTED"
+ die "EAPI=${EAPI} is not supported by perl-module.eclass"
;;
esac
@@ -46,7 +46,7 @@
debug-print "PERL_EXPORT_PHASE_FUNCTIONS=no"
;;
*)
- DEPEND+=" PERL_EXPORT_PHASE_FUNCTIONS-UNSUPPORTED"
+ die "PERL_EXPORT_PHASE_FUNCTIONS=${PERL_EXPORT_PHASE_FUNCTIONS}
is not supported by perl-module.eclass"
;;
esac
@@ -54,6 +54,10 @@
LICENSE="${LICENSE:-|| ( Artistic GPL-1 GPL-2 GPL-3 )}"
+if [[ -n ${MY_PN} || -n ${MY_PV} || -n ${MODULE_VERSION} ]] ; then
+ : ${MY_P:=${MY_PN:-${PN}}-${MY_PV:-${MODULE_VERSION:-${PV}}}}
+ S=${MY_S:-${WORKDIR}/${MY_P}}
+fi
[[ -z "${SRC_URI}" && -z "${MODULE_A}" ]] && MODULE_A="${MY_P:-${P}}.tar.gz"
[[ -z "${SRC_URI}" && -n "${MODULE_AUTHOR}" ]] && \
SRC_URI="mirror://cpan/authors/id/${MODULE_AUTHOR:0:1}/${MODULE_AUTHOR:0:2}/${MODULE_AUTHOR}/${MODULE_SECTION:+${MODULE_SECTION}/}${MODULE_A}"
@@ -97,21 +101,31 @@
# Disable ExtUtils::AutoInstall from prompting
export PERL_EXTUTILS_AUTOINSTALL="--skipdeps"
- if [[ ${PREFER_BUILDPL} == yes && -f Build.PL ]] ; then
+ if [[ $(declare -p myconf 2>&-) != "declare -a myconf="* ]]; then
+ local myconf_local=(${myconf})
+ else
+ local myconf_local=("${myco...@]}")
+ fi
+
+ if [[ ( ${PREFER_BUILDPL} == yes || ! -f Makefile.PL ) && -f Build.PL
]] ; then
einfo "Using Module::Build"
if [[ ${DEPEND} != *virtual/perl-Module-Build* && ${PN} !=
Module-Build ]] ; then
eqawarn "QA Notice: The ebuild uses Module::Build but
doesn't depend on it."
eqawarn " Add virtual/perl-Module-Build to
DEPEND!"
+ if [[ -n ${PERLQAFATAL} ]]; then
+ eerror "Bailing out due to PERLQAFATAL=1";
+ die;
+ fi
fi
set -- \
--installdirs=vendor \
--libdoc= \
--destdir="${D}" \
--create_packlist=0 \
- ${myconf}
+ "${myconf_loc...@]}"
einfo "perl Build.PL" "$@"
perl Build.PL "$@" <<< "${pm_echovar}" \
- || die "Unable to build! (are you using
USE=\"build\"?)"
+ || die "Unable to build!"
elif [[ -f Makefile.PL ]] ; then
einfo "Using ExtUtils::MakeMaker"
set -- \
@@ -119,10 +133,10 @@
INSTALLDIRS=vendor \
INSTALLMAN3DIR='none' \
DESTDIR="${D}" \
- ${myconf}
+ "${myconf_loc...@]}"
einfo "perl Makefile.PL" "$@"
perl Makefile.PL "$@" <<< "${pm_echovar}" \
- || die "Unable to build! (are you using
USE=\"build\"?)"
+ || die "Unable to build!"
fi
if [[ ! -f Build.PL && ! -f Makefile.PL ]] ; then
einfo "No Make or Build file detected..."
@@ -136,14 +150,22 @@
has src_configure ${PERL_EXPF} || perl-module_src_prep
+ if [[ $(declare -p mymake 2>&-) != "declare -a mymake="* ]]; then
+ local mymake_local=(${mymake})
+ else
+ local mymake_local=("${myma...@]}")
+ fi
+
if [[ -f Build ]] ; then
./Build build \
- || die "compilation failed"
+ || die "Compilation failed"
elif [[ -f Makefile ]] ; then
- emake \
+ set -- \
OTHERLDFLAGS="${LDFLAGS}" \
- ${mymake} \
- || die "compilation failed"
+ "${mymake_loc...@]}"
+ einfo "emake" "$@"
+ emake "$@" \
+ || die "Compilation failed"
# OPTIMIZE="${CFLAGS}" \
fi
}
@@ -200,12 +222,18 @@
esac
fi
+ if [[ $(declare -p myinst 2>&-) != "declare -a myinst="* ]]; then
+ local myinst_local=(${myinst})
+ else
+ local myinst_local=("${myin...@]}")
+ fi
+
if [[ -f Build ]] ; then
./Build ${mytargets} \
|| die "./Build ${mytargets} failed"
elif [[ -f Makefile ]] ; then
- emake ${myinst} ${mytargets} \
- || die "emake ${myinst} ${mytargets} failed"
+ emake "${myinst_loc...@]}" ${mytargets} \
+ || die "emake ${myinst_loc...@]} ${mytargets} failed"
fi
perl_delete_module_manpages