summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /eclass/perl-module.eclass
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'eclass/perl-module.eclass')
-rw-r--r--eclass/perl-module.eclass547
1 files changed, 547 insertions, 0 deletions
diff --git a/eclass/perl-module.eclass b/eclass/perl-module.eclass
new file mode 100644
index 000000000000..341fa891668f
--- /dev/null
+++ b/eclass/perl-module.eclass
@@ -0,0 +1,547 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+# @ECLASS: perl-module.eclass
+# @MAINTAINER:
+# perl@gentoo.org
+# @AUTHOR:
+# Seemant Kulleen <seemant@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.
+
+inherit eutils multiprocessing unpacker
+[[ ${CATEGORY} == "perl-core" ]] && inherit alternatives
+
+PERL_EXPF="src_unpack src_prepare src_configure src_compile src_test src_install"
+
+case "${EAPI:-0}" in
+ 5)
+ [[ ${CATEGORY} == "perl-core" ]] && \
+ PERL_EXPF+=" pkg_postinst pkg_postrm"
+
+ case "${GENTOO_DEPEND_ON_PERL:-yes}" in
+ yes)
+ case "${GENTOO_DEPEND_ON_PERL_SUBSLOT:-yes}" in
+ yes)
+ DEPEND="dev-lang/perl:=[-build(-)]"
+ ;;
+ *)
+ DEPEND="dev-lang/perl[-build(-)]"
+ ;;
+ esac
+ RDEPEND="${DEPEND}"
+ ;;
+ esac
+ ;;
+ *)
+ die "EAPI=${EAPI} is not supported by perl-module.eclass"
+ ;;
+esac
+
+case "${PERL_EXPORT_PHASE_FUNCTIONS:-yes}" in
+ yes)
+ EXPORT_FUNCTIONS ${PERL_EXPF}
+ ;;
+ no)
+ debug-print "PERL_EXPORT_PHASE_FUNCTIONS=no"
+ ;;
+ *)
+ die "PERL_EXPORT_PHASE_FUNCTIONS=${PERL_EXPORT_PHASE_FUNCTIONS} is not supported by perl-module.eclass"
+ ;;
+esac
+
+LICENSE="${LICENSE:-|| ( Artistic GPL-1+ )}"
+
+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}}.${MODULE_A_EXT:-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}"
+[[ -z "${HOMEPAGE}" ]] && \
+ HOMEPAGE="http://search.cpan.org/dist/${MY_PN:-${PN}}/"
+
+SRC_PREP="no"
+SRC_TEST="skip"
+PREFER_BUILDPL="yes"
+
+pm_echovar=""
+perlinfo_done=false
+
+# @FUNCTION: perl-module_src_unpack
+# @USAGE: perl-module_src_unpack
+# @DESCRIPTION:
+# Unpack the ebuild tarball(s).
+# This function is to be called during the ebuild src_unpack() phase.
+perl-module_src_unpack() {
+ debug-print-function $FUNCNAME "$@"
+
+ unpacker_src_unpack
+}
+
+# @FUNCTION: perl-module_src_prepare
+# @USAGE: perl-module_src_prepare
+# @DESCRIPTION:
+# Get the ebuild sources ready.
+# This function is to be called during the ebuild src_prepare() phase.
+perl-module_src_prepare() {
+ debug-print-function $FUNCNAME "$@"
+ [[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
+ debug-print "$FUNCNAME: applying user patches"
+ epatch_user
+ if [[ ${PERL_RM_FILES[@]} ]]; then
+ debug-print "$FUNCNAME: stripping unneeded files"
+ perl_rm_files "${PERL_RM_FILES[@]}"
+ fi
+ perl_fix_osx_extra
+ esvn_clean
+}
+
+# @FUNCTION: perl-module_src_configure
+# @USAGE: perl-module_src_configure
+# @DESCRIPTION:
+# Configure the ebuild sources.
+# This function is to be called during the ebuild src_configure() phase.
+perl-module_src_configure() {
+ debug-print-function $FUNCNAME "$@"
+
+ [[ ${SRC_PREP} = yes ]] && return 0
+ SRC_PREP="yes"
+
+ perl_check_env
+
+ perl_set_version
+
+ [[ -z ${pm_echovar} ]] && export PERL_MM_USE_DEFAULT=1
+ # Disable ExtUtils::AutoInstall from prompting
+ export PERL_EXTUTILS_AUTOINSTALL="--skipdeps"
+
+ if [[ $(declare -p myconf 2>&-) != "declare -a myconf="* ]]; then
+ local myconf_local=(${myconf})
+ else
+ local myconf_local=("${myconf[@]}")
+ fi
+
+ if [[ ( ${PREFER_BUILDPL} == yes || ! -f Makefile.PL ) && -f Build.PL ]] ; then
+ if grep -q '\(use\|require\)\s*Module::Build::Tiny' Build.PL ; then
+ einfo "Using Module::Build::Tiny"
+ if [[ ${DEPEND} != *dev-perl/Module-Build-Tiny* && ${PN} != Module-Build-Tiny ]]; then
+ eqawarn "QA Notice: The ebuild uses Module::Build::Tiny but doesn't depend on it."
+ eqawarn " Add dev-perl/Module-Build-Tiny to DEPEND!"
+ if [[ -n ${PERLQAFATAL} ]]; then
+ eerror "Bailing out due to PERLQAFATAL=1";
+ die
+ fi
+ fi
+ else
+ einfo "Using Module::Build"
+ if [[ ${DEPEND} != *virtual/perl-Module-Build* && ${DEPEND} != *dev-perl/Module-Build* && ${PN} != Module-Build ]] ; then
+ eqawarn "QA Notice: The ebuild uses Module::Build but doesn't depend on it."
+ eqawarn " Add dev-perl/Module-Build to DEPEND!"
+ if [[ -n ${PERLQAFATAL} ]]; then
+ eerror "Bailing out due to PERLQAFATAL=1";
+ die
+ fi
+ fi
+ fi
+ set -- \
+ --installdirs=vendor \
+ --libdoc= \
+ --destdir="${D}" \
+ --create_packlist=0 \
+ "${myconf_local[@]}"
+ einfo "perl Build.PL" "$@"
+ perl Build.PL "$@" <<< "${pm_echovar}" \
+ || die "Unable to build!"
+ elif [[ -f Makefile.PL ]] ; then
+ einfo "Using ExtUtils::MakeMaker"
+ set -- \
+ PREFIX=${EPREFIX}/usr \
+ INSTALLDIRS=vendor \
+ INSTALLMAN3DIR='none' \
+ DESTDIR="${D}" \
+ "${myconf_local[@]}"
+ einfo "perl Makefile.PL" "$@"
+ perl Makefile.PL "$@" <<< "${pm_echovar}" \
+ || die "Unable to build!"
+ fi
+ if [[ ! -f Build.PL && ! -f Makefile.PL ]] ; then
+ einfo "No Make or Build file detected..."
+ return
+ fi
+}
+
+# @FUNCTION: perl-module_src_compile
+# @USAGE: perl-module_src_compile
+# @DESCRIPTION:
+# Compile the ebuild sources.
+# This function is to be called during the ebuild src_compile() phase.
+perl-module_src_compile() {
+ debug-print-function $FUNCNAME "$@"
+ perl_set_version
+
+ if [[ $(declare -p mymake 2>&-) != "declare -a mymake="* ]]; then
+ local mymake_local=(${mymake})
+ else
+ local mymake_local=("${mymake[@]}")
+ fi
+
+ if [[ -f Build ]] ; then
+ ./Build build \
+ || die "Compilation failed"
+ elif [[ -f Makefile ]] ; then
+ set -- \
+ OTHERLDFLAGS="${LDFLAGS}" \
+ "${mymake_local[@]}"
+ einfo "emake" "$@"
+ emake "$@" \
+ || die "Compilation failed"
+# OPTIMIZE="${CFLAGS}" \
+ fi
+}
+
+# @FUNCTION: perl-module_src-test
+# @USAGE: perl-module_src_test()
+# @DESCRIPTION:
+# 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/portage/make.conf | ENV
+#
+# or 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() {
+ debug-print-function $FUNCNAME "$@"
+ 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$(makeopts_jobs)
+ einfo "Test::Harness Jobs=$(makeopts_jobs)"
+ fi
+ ${perlinfo_done} || perl_set_version
+ if [[ -f Build ]] ; then
+ ./Build test verbose=${TEST_VERBOSE:-0} || die "test failed"
+ elif [[ -f Makefile ]] ; then
+ emake test TEST_VERBOSE=${TEST_VERBOSE:-0} || die "test failed"
+ fi
+ fi
+}
+
+# @FUNCTION: perl-module_src_install
+# @USAGE: perl-module_src_install
+# @DESCRIPTION:
+# Install a Perl ebuild.
+# This function is to be called during the ebuild src_install() phase.
+perl-module_src_install() {
+ debug-print-function $FUNCNAME "$@"
+
+ perl_set_version
+
+ local f
+
+ if [[ -f Build ]]; then
+ mytargets="${mytargets:-install}"
+ mbparams="${mbparams:---pure}"
+ einfo "./Build ${mytargets} ${mbparams}"
+ ./Build ${mytargets} ${mbparams} \
+ || die "./Build ${mytargets} ${mbparams} failed"
+ elif [[ -f Makefile ]]; then
+ case "${CATEGORY}" in
+ dev-perl|perl-core) mytargets="pure_install" ;;
+ *) mytargets="install" ;;
+ esac
+ if [[ $(declare -p myinst 2>&-) != "declare -a myinst="* ]]; then
+ local myinst_local=(${myinst})
+ else
+ local myinst_local=("${myinst[@]}")
+ fi
+ emake "${myinst_local[@]}" ${mytargets} \
+ || die "emake ${myinst_local[@]} ${mytargets} failed"
+ fi
+
+ perl_delete_module_manpages
+ perl_delete_localpod
+ perl_delete_packlist
+ perl_remove_temppath
+
+ for f in Change* CHANGES README* TODO FAQ ${mydoc}; do
+ [[ -s ${f} ]] && dodoc ${f}
+ done
+
+ perl_link_duallife_scripts
+}
+
+# @FUNCTION: perl-module_pkg_postinst
+# @USAGE: perl-module_pkg_postinst
+# @DESCRIPTION:
+# This function is to be called during the pkg_postinst() phase. It only does
+# useful things for the perl-core category, where it handles the file renaming and symbolic
+# links that prevent file collisions for dual-life packages installing scripts.
+# In any other category it immediately exits.
+perl-module_pkg_postinst() {
+ debug-print-function $FUNCNAME "$@"
+ if [[ ${CATEGORY} != perl-core ]] ; then
+ eqawarn "perl-module.eclass: You are calling perl-module_pkg_postinst outside the perl-core category."
+ eqawarn " This does not do anything; the call can be safely removed."
+ return 0
+ fi
+ perl_link_duallife_scripts
+}
+
+# @FUNCTION: perl-module_pkg_postrm
+# @USAGE: perl-module_pkg_postrm
+# @DESCRIPTION:
+# This function is to be called during the pkg_postrm() phase. It only does
+# useful things for the perl-core category, where it handles the file renaming and symbolic
+# links that prevent file collisions for dual-life packages installing scripts.
+# In any other category it immediately exits.
+perl-module_pkg_postrm() {
+ debug-print-function $FUNCNAME "$@"
+ if [[ ${CATEGORY} != perl-core ]] ; then
+ eqawarn "perl-module.eclass: You are calling perl-module_pkg_postrm outside the perl-core category."
+ eqawarn " This does not do anything; the call can be safely removed."
+ return 0
+ 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."
+}