commit:     6a6f9cad155f25b3a6bcdb9cf12df83cd057aac9
Author:     Kent Fredric <kentfredric <AT> gmail <DOT> com>
AuthorDate: Sat Jun 20 20:30:29 2015 +0000
Commit:     Kent Fredric <kentfredric <AT> gmail <DOT> com>
CommitDate: Sat Jun 20 20:30:29 2015 +0000
URL:        https://gitweb.gentoo.org/proj/perl-overlay.git/commit/?id=6a6f9cad

[eclass] Split all non-phase functions in use into perl-functions.eclass

 eclass/perl-functions.eclass | 355 +++++++++++++++++++++++++++++++++++++++++++
 eclass/perl-module.eclass    | 343 +----------------------------------------
 2 files changed, 356 insertions(+), 342 deletions(-)

diff --git a/eclass/perl-functions.eclass b/eclass/perl-functions.eclass
new file mode 100644
index 0000000..d9a5343
--- /dev/null
+++ b/eclass/perl-functions.eclass
@@ -0,0 +1,355 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+# @ECLASS: perl-functions.eclass
+# @MAINTAINER:
+# p...@gentoo.org
+# Seemant Kulleen <seem...@gentoo.org>
+# @BLURB: perl utility functions
+# @DESCRIPTION:
+# The perl-functions eclass is a collection of perl-specific utilities
+# that may be useful in non-CPAN based ebuilds.
+
+perl_diagnostics() {
+       local d
+       d=${T}/perl-diagnostics.log
+       [[ -e ${d} ]] && return
+       : > $d
+
+       {
+               echo "perl: $(type -p perl)"
+               echo
+               echo "ENV values:"
+               env | grep -E '^(PERL|HOME=|MANPATH|PATH|TEST|GENTOO_PERL)'
+               echo
+               echo "perl -V:"
+               perl -V 2>&1
+               echo
+               if type -p perl-info 2>/dev/null ; then
+                       echo "perl-info output:"
+                       echo
+                       perl-info
+                       echo
+               fi
+               echo "Corelist Versions:"
+               perl -MModule::CoreList -e 'for $mod ( 
Module::CoreList->find_modules(qr/^/) ) { eval "require $mod; print q[$mod : ] 
. \$${mod}::VERSION . qq[\n]; 1" or print qq{\e[31mNA: $mod\e[0m\n};}'
+       } >> $d
+
+       eerror
+       eerror "-- Gentoo Perl Team specific bug reporting request --"
+       eerror "Please attach the contents of the following file with your bug 
report:"
+       eerror " $d"
+       eerror
+}
+
+perl_check_module_version() {
+       local REAL_PV
+       local gpmv="$(type -p gentoo-perlmod-version.pl)"
+       [[ -n ${MODULE_VERSION} && -n ${gpmv} && -x ${gpmv} ]] || return
+       REAL_PV=$( ${gpmv} --oneshot "${MODULE_VERSION}" )
+       if [[ -n ${REAL_PV} && ${REAL_PV} != ${PV} ]] ; then
+               eqawarn "QA Notice: Based on MODULE_VERSION=${MODULE_VERSION} 
the ebuild version ${PV} is wrong!"
+               eqawarn "           The ebuild version should be ${REAL_PV}"
+               perl_qafatal "version" "${REAL_PV} != ${PV}"
+       fi
+}
+
+# @FUNCTION: perl_set_version
+# @USAGE: perl_set_version
+# @DESCRIPTION:
+# Extract version information and installation paths from the current Perl
+# interpreter.
+#
+# This sets the following variables: PERL_VERSION, SITE_ARCH, SITE_LIB,
+# ARCH_LIB, VENDOR_LIB, VENDOR_ARCH
+#
+# This function used to be called perlinfo as well.
+perl_set_version() {
+       debug-print-function $FUNCNAME "$@"
+       debug-print "$FUNCNAME: perlinfo_done=${perlinfo_done}"
+       ${perlinfo_done} && return 0
+       perlinfo_done=true
+
+       perl_check_module_version
+
+       local f version install{{site,vendor}{arch,lib},archlib}
+       eval "$(perl -V:{version,install{{site,vendor}{arch,lib},archlib}} )"
+       PERL_VERSION=${version}
+       SITE_ARCH=${installsitearch}
+       SITE_LIB=${installsitelib}
+       ARCH_LIB=${installarchlib}
+       VENDOR_LIB=${installvendorlib}
+       VENDOR_ARCH=${installvendorarch}
+}
+
+# @FUNCTION: perl_delete_localpod
+# @USAGE: perl_delete_localpod
+# @DESCRIPTION:
+# Remove stray perllocal.pod files in the temporary install directory D.
+#
+# This function used to be called fixlocalpod as well.
+perl_delete_localpod() {
+       debug-print-function $FUNCNAME "$@"
+
+       find "${D}" -type f -name perllocal.pod -delete
+       find "${D}" -depth -mindepth 1 -type d -empty -delete
+}
+
+# @FUNCTION: perl_fix_osx_extra
+# @USAGE: perl_fix_osx_extra
+# @DESCRIPTION:
+# Look through ${S} for AppleDouble encoded files and get rid of them.
+perl_fix_osx_extra() {
+       debug-print-function $FUNCNAME "$@"
+
+       # Remove "AppleDouble encoded Macintosh file"
+       local f
+       find "${S}" -type f -name "._*" -print0 | while read -rd '' f ; do
+               einfo "Removing AppleDouble encoded Macintosh file: ${f#${S}/}"
+               rm -f "${f}"
+               f=${f#${S}/}
+       #       f=${f//\//\/}
+       #       f=${f//\./\.}
+       #       sed -i "/${f}/d" "${S}"/MANIFEST || die
+               grep -q "${f}" "${S}"/MANIFEST && \
+                       elog "AppleDouble encoded Macintosh file in MANIFEST: 
${f#${S}/}"
+       done
+}
+
+# @FUNCTION: perl_delete_module_manpages
+# @USAGE: perl_delete_module_manpages
+# @DESCRIPTION:
+# Bump off manpages installed by the current module such as *.3pm files as well
+# as empty directories.
+perl_delete_module_manpages() {
+       debug-print-function $FUNCNAME "$@"
+
+       perl_set_eprefix
+
+       if [[ -d "${ED}"/usr/share/man ]] ; then
+#              einfo "Cleaning out stray man files"
+               find "${ED}"/usr/share/man -type f -name "*.3pm" -delete
+               find "${ED}"/usr/share/man -depth -type d -empty -delete
+       fi
+}
+
+# @FUNCTION: perl_delete_packlist
+# @USAGE: perl_delete_packlist
+# @DESCRIPTION:
+# Look through ${D} for .packlist files, empty .bs files and empty directories,
+# and get rid of items found.
+perl_delete_packlist() {
+       debug-print-function $FUNCNAME "$@"
+       perl_set_version
+       if [[ -d ${D}/${VENDOR_ARCH} ]] ; then
+               find "${D}/${VENDOR_ARCH}" -type f -a \( -name .packlist \
+                       -o \( -name '*.bs' -a -empty \) \) -delete
+               find "${D}" -depth -mindepth 1 -type d -empty -delete
+       fi
+}
+
+# @FUNCTION: perl_remove_temppath
+# @USAGE: perl_remove_temppath
+# @DESCRIPTION:
+# Look through ${D} for text files containing the temporary installation
+# folder (i.e. ${D}). If the pattern is found (i.e. " text"), replace it with 
`/'.
+perl_remove_temppath() {
+       debug-print-function $FUNCNAME "$@"
+
+       find "${D}" -type f -not -name '*.so' -print0 | while read -rd '' f ; do
+               if file "${f}" | grep -q -i " text" ; then
+                       grep -q "${D}" "${f}" && ewarn "QA: File contains a 
temporary path ${f}"
+                       sed -i -e "s:${D}:/:g" "${f}"
+               fi
+       done
+}
+
+# @FUNCTION: perl_rm_files
+# @USAGE: perl_rm_files "file_1" "file_2"
+# @DESCRIPTION:
+# Remove certain files from a Perl release and remove them from the MANIFEST
+# while we're there.
+#
+# Most useful in src_prepare for nuking bad tests, and is highly recommended
+# for any tests like 'pod.t', 'pod-coverage.t' or 'kwalitee.t', as what they
+# test is completely irrelevant to end users, and frequently fail simply
+# because the authors of Test::Pod... changed their recommendations, and thus
+# failures are only useful feedback to Authors, not users.
+#
+# Removing from MANIFEST also avoids needless log messages warning
+# users about files "missing from their kit".
+perl_rm_files() {
+       debug-print-function $FUNCNAME "$@"
+       local skipfile="${T}/.gentoo_makefile_skip"
+       local manifile="${S}/MANIFEST"
+       local manitemp="${T}/.gentoo_manifest_temp"
+       oldifs="$IFS"
+       IFS="\n"
+       for filename in "$@"; do
+               einfo "Removing un-needed ${filename}";
+               # Remove the file
+               rm -f "${S}/${filename}"
+               [[ -e "${manifile}" ]] && echo "${filename}" >> "${skipfile}"
+       done
+       if [[ -e "${manifile}" && -e "${skipfile}" ]]; then
+               einfo "Fixing Manifest"
+               grep -v -F -f "${skipfile}" "${manifile}" > "${manitemp}"
+               mv -f -- "${manitemp}" "${manifile}"
+               rm -- "${skipfile}";
+       fi
+       IFS="$oldifs"
+}
+
+# @FUNCTION: perl_link_duallife_scripts
+# @USAGE: perl_link_duallife_scripts
+# @DESCRIPTION:
+# Moves files and generates symlinks so dual-life packages installing scripts 
do not
+# lead to file collisions. Mainly for use in pkg_postinst and pkg_postrm, and 
makes
+# only sense for perl-core packages.
+perl_link_duallife_scripts() {
+       debug-print-function $FUNCNAME "$@"
+       if [[ ${CATEGORY} != perl-core ]] || ! has_version 
">=dev-lang/perl-5.8.8-r8" ; then
+               return 0
+       fi
+
+       perl_set_eprefix
+
+       local i ff execdir mandir
+
+       execdir="usr/share/perl-${P}/bin"
+       mandir="usr/share/perl-${P}/man/man1"
+
+       if has "${EBUILD_PHASE:-none}" "postinst" "postrm" ; then
+               for i in "${DUALLIFESCRIPTS[@]}" ; do
+                       alternatives_auto_makesym "/${i}-${PV}" 
"${EROOT}${execdir}/${i##*/}"
+                       alternatives_auto_makesym "/${i}" "/${i}-[0-9]*"
+               done
+               for i in "${DUALLIFEMAN[@]}" ; do
+                       # Expand $i to a full path as it was installed,
+                       # which may add .gz or whatever to the end during 
compress.
+                       # then boil it till you just get ".gz"
+                       ff="${EROOT}${mandir}/${i##*/}";
+                       ff=$( echo ${ff%.1}.1* );
+                       ff=${ff##*.1}
+                       alternatives_auto_makesym "/${i%.1}-${PV}.1${ff}" 
"${EROOT}${mandir}/${i##*/}${ff}"
+                       alternatives_auto_makesym "/${i}${ff}" 
"/${i%.1}-[0-9]*.1${ff}"
+               done
+       else
+               pushd "${ED}" > /dev/null
+               for i in $(find usr/bin -maxdepth 1 -type f 2>/dev/null) ; do
+                       mkdir -p "${D}/${execdir}" || die
+                       mv ${i} "${D}/${execdir}/${i##*/}" || die
+                       #DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i##*/}
+                       DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i}
+               done
+               for i in $(find usr/share/man/man1 -maxdepth 1 -type f 
2>/dev/null) ; do
+                       mkdir -p "${D}/${mandir}" || die
+                       mv ${i} "${D}/${mandir}/${i##*/}" || die
+                       DUALLIFEMAN[${#DUALLIFEMAN[*]}]=${i}
+               done
+
+               einfo "Cleaning empty directories"
+               perl_trim_empty_dirs "${EROOT}/usr/bin"
+
+               popd > /dev/null
+       fi
+}
+
+# @FUNCTION: perl_qafatal
+# @USAGE: perl_qafatal TYPE "Die reason"
+# @DESCRIPTION:
+# Invoking this method after eqawarn's allows an entry point for the eclass to 
trigger
+# a fatal exit if the user has PERL_QAFATAL set.
+#
+# The value TYPE will be used to optionally allow the user to filter certain 
QA Types.
+# TYPE = eapi                   : Legacy EAPI warnings
+# TYPE = modulebuild    : Failure to include Module-Build as a dependency.
+# TYPE = modulebuildtiny : Failure to include Module-Build-Tiny as a dependency
+# TYPE = function       : Use of a deprecated function
+# TYPE = version        : version and expected version missmatch
+#
+# PERL_QAFATAL:
+#  == "1"              - Fatal for all types
+#  has "all"   - Fatal for all types
+#  has "$type"         - Fatal for "$type"
+perl_qafatal() {
+       local failtype=$1
+       local failreason=$2
+       if [[ "${PERLQAFATAL:-0}" == 1 ]]; then
+               eerror "Bailing out due to PERLQAFATAL including $failtype 
(==1)";
+               die "$failtype: $failreason"
+       fi
+       if has 'all' ${PERLQAFATAL}; then
+               eerror "Bailing out due to PERLQAFATAL including $failtype 
(all)";
+               die "$failtype: $failreason"
+       fi
+       if has $failtype ${PERLQAFATAL}; then
+               eerror "Bailing out due to PERLQAFATAL including $1";
+               die "$failtype: $failreason"
+       fi
+}
+
+perl_set_eprefix() {
+       debug-print-function $FUNCNAME "$@"
+       case ${EAPI:-0} in
+               0|1|2)
+                       if ! use prefix; then
+                               EPREFIX=
+                               ED=${D}
+                               EROOT=${ROOT}
+                       fi
+                       ;;
+       esac
+}
+
+# @FUNCTION: perl_check_env
+# @USAGE: perl_check_env
+# @DESCRIPTION:
+# Checks a blacklist of known-suspect ENV values that can be accidentally set 
by users
+# doing personal perl work, which may accidentally leak into portage and break 
the
+# system perl installaton.
+# Dies if any of the suspect fields are found, and tell the user what needs to 
be unset.
+# There's a workaround, but you'll have to read the code for it.
+perl_check_env() {
+       local errored value;
+
+       for i in PERL_MM_OPT PERL5LIB PERL5OPT PERL_MB_OPT PERL_CORE 
PERLPREFIX; do
+               # Next unless match
+               [ -v $i ] || continue;
+
+               # Warn only once, and warn only when one of the bad values are 
set.
+               # record failure here.
+               if [ ${errored:-0} == 0 ]; then
+                       if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
+                               elog "perl-module.eclass: Suspicious 
environment values found.";
+                       else
+                               eerror "perl-module.eclass: Suspicious 
environment values found.";
+                       fi
+               fi
+               errored=1
+
+               # Read ENV Value
+               eval "value=\$$i";
+
+               # Print ENV name/value pair
+               if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
+                       elog "    $i=\"$value\"";
+               else
+                       eerror "    $i=\"$value\"";
+               fi
+       done
+
+       # Return if there were no failures
+       [ ${errored:-0} == 0 ] && return;
+
+       # Return if user knows what they're doing
+       if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
+               elog "Continuing anyway, seems you know what you're doing."
+               return
+       fi
+
+       eerror "Your environment settings may lead to undefined behavior and/or 
build failures."
+       die "Please fix your environment ( ~/.bashrc, package.env, ... ), see 
above for details."
+}
+

diff --git a/eclass/perl-module.eclass b/eclass/perl-module.eclass
index d4d73ad..d2e5522 100644
--- a/eclass/perl-module.eclass
+++ b/eclass/perl-module.eclass
@@ -12,7 +12,7 @@
 # The perl-module eclass is designed to allow easier installation of perl
 # modules, and their incorporation into the Gentoo Linux system.
 
-inherit eutils multiprocessing unpacker
+inherit eutils multiprocessing unpacker perl-functions
 [[ ${CATEGORY} == "perl-core" ]] && inherit alternatives
 
 PERL_EXPF="src_unpack src_compile src_test src_install"
@@ -430,77 +430,6 @@ perl-module_pkg_postrm() {
 
 has perl_diagnostics ${EBUILD_DEATH_HOOKS} || EBUILD_DEATH_HOOKS+=" 
perl_diagnostics"
 
-perl_diagnostics() {
-       local d
-       d=${T}/perl-diagnostics.log
-       [[ -e ${d} ]] && return
-       : > $d
-
-       {
-               echo "perl: $(type -p perl)"
-               echo
-               echo "ENV values:"
-               env | grep -E '^(PERL|HOME=|MANPATH|PATH|TEST|GENTOO_PERL)'
-               echo
-               echo "perl -V:"
-               perl -V 2>&1
-               echo
-               if type -p perl-info 2>/dev/null ; then
-                       echo "perl-info output:"
-                       echo
-                       perl-info
-                       echo
-               fi
-               echo "Corelist Versions:"
-               perl -MModule::CoreList -e 'for $mod ( 
Module::CoreList->find_modules(qr/^/) ) { eval "require $mod; print q[$mod : ] 
. \$${mod}::VERSION . qq[\n]; 1" or print qq{\e[31mNA: $mod\e[0m\n};}'
-       } >> $d
-
-       eerror
-       eerror "-- Gentoo Perl Team specific bug reporting request --"
-       eerror "Please attach the contents of the following file with your bug 
report:"
-       eerror " $d"
-       eerror
-}
-
-perl_check_module_version() {
-       local REAL_PV
-       local gpmv="$(type -p gentoo-perlmod-version.pl)"
-       [[ -n ${MODULE_VERSION} && -n ${gpmv} && -x ${gpmv} ]] || return
-       REAL_PV=$( ${gpmv} --oneshot "${MODULE_VERSION}" )
-       if [[ -n ${REAL_PV} && ${REAL_PV} != ${PV} ]] ; then
-               eqawarn "QA Notice: Based on MODULE_VERSION=${MODULE_VERSION} 
the ebuild version ${PV} is wrong!"
-               eqawarn "           The ebuild version should be ${REAL_PV}"
-               perl_qafatal "version" "${REAL_PV} != ${PV}"
-       fi
-}
-
-# @FUNCTION: perl_set_version
-# @USAGE: perl_set_version
-# @DESCRIPTION:
-# Extract version information and installation paths from the current Perl
-# interpreter.
-#
-# This sets the following variables: PERL_VERSION, SITE_ARCH, SITE_LIB,
-# ARCH_LIB, VENDOR_LIB, VENDOR_ARCH
-#
-# This function used to be called perlinfo as well.
-perl_set_version() {
-       debug-print-function $FUNCNAME "$@"
-       debug-print "$FUNCNAME: perlinfo_done=${perlinfo_done}"
-       ${perlinfo_done} && return 0
-       perlinfo_done=true
-
-       perl_check_module_version
-
-       local f version install{{site,vendor}{arch,lib},archlib}
-       eval "$(perl -V:{version,install{{site,vendor}{arch,lib},archlib}} )"
-       PERL_VERSION=${version}
-       SITE_ARCH=${installsitearch}
-       SITE_LIB=${installsitelib}
-       ARCH_LIB=${installarchlib}
-       VENDOR_LIB=${installvendorlib}
-       VENDOR_ARCH=${installvendorarch}
-}
 
 # @FUNCTION: perlinfo
 # @USAGE: perlinfo
@@ -514,19 +443,6 @@ perlinfo() {
        perl_set_version
 }
 
-# @FUNCTION: perl_delete_localpod
-# @USAGE: perl_delete_localpod
-# @DESCRIPTION:
-# Remove stray perllocal.pod files in the temporary install directory D.
-#
-# This function used to be called fixlocalpod as well.
-perl_delete_localpod() {
-       debug-print-function $FUNCNAME "$@"
-
-       find "${D}" -type f -name perllocal.pod -delete
-       find "${D}" -depth -mindepth 1 -type d -empty -delete
-}
-
 # @FUNCTION: fixlocalpod
 # @USAGE: fixlocalpod
 # @DESCRIPTION:
@@ -538,260 +454,3 @@ fixlocalpod() {
        ewarn "perl-modules.eclass: fixlocalpod is deprecated and will be 
removed. Please use perl_delete_localpod instead."
        perl_delete_localpod
 }
-
-# @FUNCTION: perl_fix_osx_extra
-# @USAGE: perl_fix_osx_extra
-# @DESCRIPTION:
-# Look through ${S} for AppleDouble encoded files and get rid of them.
-perl_fix_osx_extra() {
-       debug-print-function $FUNCNAME "$@"
-
-       # Remove "AppleDouble encoded Macintosh file"
-       local f
-       find "${S}" -type f -name "._*" -print0 | while read -rd '' f ; do
-               einfo "Removing AppleDouble encoded Macintosh file: ${f#${S}/}"
-               rm -f "${f}"
-               f=${f#${S}/}
-       #       f=${f//\//\/}
-       #       f=${f//\./\.}
-       #       sed -i "/${f}/d" "${S}"/MANIFEST || die
-               grep -q "${f}" "${S}"/MANIFEST && \
-                       elog "AppleDouble encoded Macintosh file in MANIFEST: 
${f#${S}/}"
-       done
-}
-
-# @FUNCTION: perl_delete_module_manpages
-# @USAGE: perl_delete_module_manpages
-# @DESCRIPTION:
-# Bump off manpages installed by the current module such as *.3pm files as well
-# as empty directories.
-perl_delete_module_manpages() {
-       debug-print-function $FUNCNAME "$@"
-
-       perl_set_eprefix
-
-       if [[ -d "${ED}"/usr/share/man ]] ; then
-#              einfo "Cleaning out stray man files"
-               find "${ED}"/usr/share/man -type f -name "*.3pm" -delete
-               find "${ED}"/usr/share/man -depth -type d -empty -delete
-       fi
-}
-
-# @FUNCTION: perl_delete_packlist
-# @USAGE: perl_delete_packlist
-# @DESCRIPTION:
-# Look through ${D} for .packlist files, empty .bs files and empty directories,
-# and get rid of items found.
-perl_delete_packlist() {
-       debug-print-function $FUNCNAME "$@"
-       perl_set_version
-       if [[ -d ${D}/${VENDOR_ARCH} ]] ; then
-               find "${D}/${VENDOR_ARCH}" -type f -a \( -name .packlist \
-                       -o \( -name '*.bs' -a -empty \) \) -delete
-               find "${D}" -depth -mindepth 1 -type d -empty -delete
-       fi
-}
-
-# @FUNCTION: perl_remove_temppath
-# @USAGE: perl_remove_temppath
-# @DESCRIPTION:
-# Look through ${D} for text files containing the temporary installation
-# folder (i.e. ${D}). If the pattern is found (i.e. " text"), replace it with 
`/'.
-perl_remove_temppath() {
-       debug-print-function $FUNCNAME "$@"
-
-       find "${D}" -type f -not -name '*.so' -print0 | while read -rd '' f ; do
-               if file "${f}" | grep -q -i " text" ; then
-                       grep -q "${D}" "${f}" && ewarn "QA: File contains a 
temporary path ${f}"
-                       sed -i -e "s:${D}:/:g" "${f}"
-               fi
-       done
-}
-
-# @FUNCTION: perl_rm_files
-# @USAGE: perl_rm_files "file_1" "file_2"
-# @DESCRIPTION:
-# Remove certain files from a Perl release and remove them from the MANIFEST
-# while we're there.
-#
-# Most useful in src_prepare for nuking bad tests, and is highly recommended
-# for any tests like 'pod.t', 'pod-coverage.t' or 'kwalitee.t', as what they
-# test is completely irrelevant to end users, and frequently fail simply
-# because the authors of Test::Pod... changed their recommendations, and thus
-# failures are only useful feedback to Authors, not users.
-#
-# Removing from MANIFEST also avoids needless log messages warning
-# users about files "missing from their kit".
-perl_rm_files() {
-       debug-print-function $FUNCNAME "$@"
-       local skipfile="${T}/.gentoo_makefile_skip"
-       local manifile="${S}/MANIFEST"
-       local manitemp="${T}/.gentoo_manifest_temp"
-       oldifs="$IFS"
-       IFS="\n"
-       for filename in "$@"; do
-               einfo "Removing un-needed ${filename}";
-               # Remove the file
-               rm -f "${S}/${filename}"
-               [[ -e "${manifile}" ]] && echo "${filename}" >> "${skipfile}"
-       done
-       if [[ -e "${manifile}" && -e "${skipfile}" ]]; then
-               einfo "Fixing Manifest"
-               grep -v -F -f "${skipfile}" "${manifile}" > "${manitemp}"
-               mv -f -- "${manitemp}" "${manifile}"
-               rm -- "${skipfile}";
-       fi
-       IFS="$oldifs"
-}
-
-# @FUNCTION: perl_link_duallife_scripts
-# @USAGE: perl_link_duallife_scripts
-# @DESCRIPTION:
-# Moves files and generates symlinks so dual-life packages installing scripts 
do not
-# lead to file collisions. Mainly for use in pkg_postinst and pkg_postrm, and 
makes
-# only sense for perl-core packages.
-perl_link_duallife_scripts() {
-       debug-print-function $FUNCNAME "$@"
-       if [[ ${CATEGORY} != perl-core ]] || ! has_version 
">=dev-lang/perl-5.8.8-r8" ; then
-               return 0
-       fi
-
-       perl_set_eprefix
-
-       local i ff execdir mandir
-
-       execdir="usr/share/perl-${P}/bin"
-       mandir="usr/share/perl-${P}/man/man1"
-
-       if has "${EBUILD_PHASE:-none}" "postinst" "postrm" ; then
-               for i in "${DUALLIFESCRIPTS[@]}" ; do
-                       alternatives_auto_makesym "/${i}-${PV}" 
"${EROOT}${execdir}/${i##*/}"
-                       alternatives_auto_makesym "/${i}" "/${i}-[0-9]*"
-               done
-               for i in "${DUALLIFEMAN[@]}" ; do
-                       # Expand $i to a full path as it was installed,
-                       # which may add .gz or whatever to the end during 
compress.
-                       # then boil it till you just get ".gz"
-                       ff="${EROOT}${mandir}/${i##*/}";
-                       ff=$( echo ${ff%.1}.1* );
-                       ff=${ff##*.1}
-                       alternatives_auto_makesym "/${i%.1}-${PV}.1${ff}" 
"${EROOT}${mandir}/${i##*/}${ff}"
-                       alternatives_auto_makesym "/${i}${ff}" 
"/${i%.1}-[0-9]*.1${ff}"
-               done
-       else
-               pushd "${ED}" > /dev/null
-               for i in $(find usr/bin -maxdepth 1 -type f 2>/dev/null) ; do
-                       mkdir -p "${D}/${execdir}" || die
-                       mv ${i} "${D}/${execdir}/${i##*/}" || die
-                       #DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i##*/}
-                       DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i}
-               done
-               for i in $(find usr/share/man/man1 -maxdepth 1 -type f 
2>/dev/null) ; do
-                       mkdir -p "${D}/${mandir}" || die
-                       mv ${i} "${D}/${mandir}/${i##*/}" || die
-                       DUALLIFEMAN[${#DUALLIFEMAN[*]}]=${i}
-               done
-
-               einfo "Cleaning empty directories"
-               perl_trim_empty_dirs "${EROOT}/usr/bin"
-
-               popd > /dev/null
-       fi
-}
-
-# @FUNCTION: perl_qafatal
-# @USAGE: perl_qafatal TYPE "Die reason"
-# @DESCRIPTION:
-# Invoking this method after eqawarn's allows an entry point for the eclass to 
trigger
-# a fatal exit if the user has PERL_QAFATAL set.
-#
-# The value TYPE will be used to optionally allow the user to filter certain 
QA Types.
-# TYPE = eapi                   : Legacy EAPI warnings
-# TYPE = modulebuild    : Failure to include Module-Build as a dependency.
-# TYPE = modulebuildtiny : Failure to include Module-Build-Tiny as a dependency
-# TYPE = function       : Use of a deprecated function
-# TYPE = version        : version and expected version missmatch
-#
-# PERL_QAFATAL:
-#  == "1"              - Fatal for all types
-#  has "all"   - Fatal for all types
-#  has "$type"         - Fatal for "$type"
-perl_qafatal() {
-       local failtype=$1
-       local failreason=$2
-       if [[ "${PERLQAFATAL:-0}" == 1 ]]; then
-               eerror "Bailing out due to PERLQAFATAL including $failtype 
(==1)";
-               die "$failtype: $failreason"
-       fi
-       if has 'all' ${PERLQAFATAL}; then
-               eerror "Bailing out due to PERLQAFATAL including $failtype 
(all)";
-               die "$failtype: $failreason"
-       fi
-       if has $failtype ${PERLQAFATAL}; then
-               eerror "Bailing out due to PERLQAFATAL including $1";
-               die "$failtype: $failreason"
-       fi
-}
-
-perl_set_eprefix() {
-       debug-print-function $FUNCNAME "$@"
-       case ${EAPI:-0} in
-               0|1|2)
-                       if ! use prefix; then
-                               EPREFIX=
-                               ED=${D}
-                               EROOT=${ROOT}
-                       fi
-                       ;;
-       esac
-}
-
-# @FUNCTION: perl_check_env
-# @USAGE: perl_check_env
-# @DESCRIPTION:
-# Checks a blacklist of known-suspect ENV values that can be accidentally set 
by users
-# doing personal perl work, which may accidentally leak into portage and break 
the
-# system perl installaton.
-# Dies if any of the suspect fields are found, and tell the user what needs to 
be unset.
-# There's a workaround, but you'll have to read the code for it.
-perl_check_env() {
-       local errored value;
-
-       for i in PERL_MM_OPT PERL5LIB PERL5OPT PERL_MB_OPT PERL_CORE 
PERLPREFIX; do
-               # Next unless match
-               [ -v $i ] || continue;
-
-               # Warn only once, and warn only when one of the bad values are 
set.
-               # record failure here.
-               if [ ${errored:-0} == 0 ]; then
-                       if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
-                               elog "perl-module.eclass: Suspicious 
environment values found.";
-                       else
-                               eerror "perl-module.eclass: Suspicious 
environment values found.";
-                       fi
-               fi
-               errored=1
-
-               # Read ENV Value
-               eval "value=\$$i";
-
-               # Print ENV name/value pair
-               if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
-                       elog "    $i=\"$value\"";
-               else
-                       eerror "    $i=\"$value\"";
-               fi
-       done
-
-       # Return if there were no failures
-       [ ${errored:-0} == 0 ] && return;
-
-       # Return if user knows what they're doing
-       if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
-               elog "Continuing anyway, seems you know what you're doing."
-               return
-       fi
-
-       eerror "Your environment settings may lead to undefined behavior and/or 
build failures."
-       die "Please fix your environment ( ~/.bashrc, package.env, ... ), see 
above for details."
-}

Reply via email to