summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas K. Huettel (dilfridge) <dilfridge@gentoo.org>2015-11-22 21:52:23 +0100
committerAndreas K. Huettel (dilfridge) <dilfridge@gentoo.org>2015-11-28 21:38:54 +0100
commitba4702709755b69cab98d7ab284c42ebe18f830d (patch)
treeb651565ccaf82af76d34f3e71a6106bf0c10317a /eclass/perl-module.eclass
parentnet-firewall/iptables: control nfsynproxy tool via USE=pcap #566886 (diff)
downloadgentoo-ba4702709755b69cab98d7ab284c42ebe18f830d.tar.gz
gentoo-ba4702709755b69cab98d7ab284c42ebe18f830d.tar.bz2
gentoo-ba4702709755b69cab98d7ab284c42ebe18f830d.zip
perl-modules.eclass: Separate phases and helpers into two eclasses
Diffstat (limited to 'eclass/perl-module.eclass')
-rw-r--r--eclass/perl-module.eclass230
1 files changed, 4 insertions, 226 deletions
diff --git a/eclass/perl-module.eclass b/eclass/perl-module.eclass
index 341fa891668f..5a476d2a7549 100644
--- a/eclass/perl-module.eclass
+++ b/eclass/perl-module.eclass
@@ -7,13 +7,15 @@
# perl@gentoo.org
# @AUTHOR:
# Seemant Kulleen <seemant@gentoo.org>
+# Andreas K. Huettel <dilfridge@gentoo.org>
# @BLURB: eclass for perl modules
# @DESCRIPTION:
# The perl-module eclass is designed to allow easier installation of perl
# modules, and their incorporation into the Gentoo Linux system.
+# All exported functions from perl-functions.eclass (inherited here)
+# explicitly also belong to the interface of perl-module.eclass.
-inherit eutils multiprocessing unpacker
-[[ ${CATEGORY} == "perl-core" ]] && inherit alternatives
+inherit eutils multiprocessing unpacker perl-functions
PERL_EXPF="src_unpack src_prepare src_configure src_compile src_test src_install"
@@ -321,227 +323,3 @@ perl-module_pkg_postrm() {
fi
perl_link_duallife_scripts
}
-
-# @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
-
- 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 "$@"
-
- 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}/}
- 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 "$@"
-
- if [[ -d "${ED}"/usr/share/man ]] ; then
- 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
-
- local i ff
- if has "${EBUILD_PHASE:-none}" "postinst" "postrm" ; then
- for i in "${DUALLIFESCRIPTS[@]}" ; do
- alternatives_auto_makesym "/${i}" "/${i}-[0-9]*"
- done
- for i in "${DUALLIFEMAN[@]}" ; do
- ff=`echo "${EROOT}"/${i%.1}-${PV}-${P}.1*`
- ff=${ff##*.1}
- alternatives_auto_makesym "/${i}${ff}" "/${i%.1}-[0-9]*"
- done
- else
- pushd "${ED}" > /dev/null
- for i in $(find usr/bin -maxdepth 1 -type f 2>/dev/null) ; do
- mv ${i}{,-${PV}-${P}} || die
- #DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i##*/}
- DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i}
- done
- for i in $(find usr/share/man/man1 -maxdepth 1 -type f 2>/dev/null) ; do
- mv ${i} ${i%.1}-${PV}-${P}.1 || die
- DUALLIFEMAN[${#DUALLIFEMAN[*]}]=${i}
- done
- popd > /dev/null
- fi
-}
-
-# @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."
-}