Re: [gentoo-dev] perl-module.class review

2009-09-21 Thread Ciaran McCreesh
On Sun, 20 Sep 2009 20:28:54 +0200
Torsten Veller t...@gentoo.org wrote:
 +EXPORTED_FUNCTIONS=src_unpack src_compile src_test src_install

You're probably not the only one using this trick, so it might be wise
to use PERL_EXPORTED_FUNCTIONS or somesuch to avoid name collisions
with other eclasses.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


[gentoo-dev] perl-module.class review

2009-09-20 Thread Torsten Veller
Attached is a diff of the current and the prospective perl-module.class.
Please review.

Thanks.


--- perl-module.eclass
+++ perl-module.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2004 Gentoo Foundation
+# Copyright 1999-2009 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: /var/cvsroot/gentoo-x86/eclass/perl-module.eclass,v 1.116 
2009/03/29 17:32:31 tove Exp $
 #
@@ -13,13 +13,18 @@
 # modules, and their incorporation into the Gentoo Linux system.
 
 inherit eutils base
+[[ ${CATEGORY} == perl-core ]]  inherit alternatives
+
+EXPORTED_FUNCTIONS=src_unpack src_compile src_test src_install
 
 case ${EAPI:-0} in
0|1)
-   EXPORT_FUNCTIONS pkg_setup pkg_preinst pkg_postinst pkg_prerm 
pkg_postrm src_compile src_install src_test src_unpack
+   EXPORTED_FUNCTIONS=${EXPORTED_FUNCTIONS} pkg_setup pkg_preinst 
pkg_postinst pkg_prerm pkg_postrm
;;
2)
-   EXPORT_FUNCTIONS src_unpack src_prepare src_configure 
src_compile src_test src_install
+   EXPORTED_FUNCTIONS=${EXPORTED_FUNCTIONS} src_prepare 
src_configure
+   [[ ${CATEGORY} == perl-core ]]  \
+   EXPORTED_FUNCTIONS=${EXPORTED_FUNCTIONS} pkg_postinst 
pkg_postrm
 
case ${GENTOO_DEPEND_ON_PERL:-yes} in
yes)
@@ -30,6 +35,8 @@
;;
 esac
 
+EXPORT_FUNCTIONS ${EXPORTED_FUNCTIONS}
+
 DESCRIPTION=Based on the $ECLASS eclass
 
 LICENSE=${LICENSE:-|| ( Artistic GPL-2 )}
@@ -56,7 +63,7 @@
 
 perl-module_src_unpack() {
base_src_unpack unpack
-   has ${EAPI:-0} 0 1  perl-module_src_prepare
+   has src_prepare ${EXPORTED_FUNCTIONS} || perl-module_src_prepare
 }
 
 perl-module_src_prepare() {
@@ -110,7 +117,7 @@
 perl-module_src_compile() {
${perlinfo_done} || perlinfo
 
-   has ${EAPI:-0} 0 1  perl-module_src_prep
+   has src_configure ${EXPORTED_FUNCTIONS} || perl-module_src_prep
 
if [[ -f Build ]] ; then
./Build build \
@@ -124,13 +131,38 @@
fi
 }
 
+# For testers:
+#  This code attempts to work out your threadingness from MAKEOPTS
+#  and apply them to Test::Harness.
+#
+#  If you want more verbose testing, set TEST_VERBOSE=1
+#  in your bashrc | /etc/make.conf | ENV
+#
+# For ebuild writers:
+#  If you wish to enable default tests w/ 'make test' ,
+#
+#   SRC_TEST=do
+#
+#  If you wish to have threads run in parallel ( using the users makeopts )
+#  all of the following have been tested to work.
+#
+#   SRC_TEST=do parallel
+#   SRC_TEST=parallel
+#   SRC_TEST=parallel do
+#   SRC_TEST=parallel
+#
+
 perl-module_src_test() {
-   if [[ ${SRC_TEST} == do ]] ; then
+   if has 'do' ${SRC_TEST} || has 'parallel' ${SRC_TEST} ; then
+   if has ${TEST_VERBOSE:-0} 0  has 'parallel' ${SRC_TEST} ; 
then
+   export HARNESS_OPTIONS=j$(echo -j1 ${MAKEOPTS} | sed -r 
s/.*(-j\s*|--jobs=)([0-9]+).*/\2/ )
+   einfo Test::Harness Jobs=${HARNESS_OPTIONS}
+   fi
${perlinfo_done} || perlinfo
if [[ -f Build ]] ; then
-   ./Build test || die test failed
+   ./Build test verbose=${TEST_VERBOSE:-0} || die test 
failed
elif [[ -f Makefile ]] ; then
-   emake test || die test failed
+   emake test TEST_VERBOSE=${TEST_VERBOSE:-0} || die test 
failed
fi
fi
 }
@@ -162,7 +194,7 @@
 
fixlocalpod
 
-   for f in Change* CHANGES README* ${mydoc}; do
+   for f in Change* CHANGES README* TODO ${mydoc}; do
[[ -s ${f} ]]  dodoc ${f}
done
 
@@ -174,10 +206,12 @@
 
find ${D} -type f -not -name '*.so' -print0 | while read -rd '' f ; do
if file ${f} | grep -q -i  text ; then
-if grep -q ${D} ${f} ; then ewarn QA: File contains a temporary path 
${f} ;fi
+   grep -q ${D} ${f}  ewarn QA: File contains a 
temporary path ${f}
sed -i -e s:${D}:/:g ${f}
fi
done
+
+   linkduallifescripts
 }
 
 perl-module_pkg_setup() {
@@ -188,20 +222,21 @@
${perlinfo_done} || perlinfo
 }
 
-perl-module_pkg_postinst() { : ; }
-#  einfo Man pages are not installed for most modules now.
-#  einfo Please use perldoc instead.
-#}
+perl-module_pkg_postinst() {
+   linkduallifescripts
+}
 
-perl-module_pkg_prerm() { : ; }
+perl-module_pkg_postrm() {
+   linkduallifescripts
+}
 
-perl-module_pkg_postrm() { : ; }
+perl-module_pkg_prerm() { : ; }
 
 perlinfo() {
perlinfo_done=true
 
-   local f version install{site{arch,lib},archlib,vendor{arch,lib}}
-   for f in version install{site{arch,lib},archlib,vendor{arch,lib}} ; do
+   local f version install{{site,vendor}{arch,lib},archlib}
+   for f in version install{{site,vendor}{arch,lib},archlib} ; do