commit: 4abc0cf75db47cf0389e3bd126487168e5ded370 Author: Kent Fredric <kentfredric <AT> gmail <DOT> com> AuthorDate: Sun Mar 15 03:28:14 2015 +0000 Commit: Kent Fredric <kentfredric <AT> gmail <DOT> com> CommitDate: Sun Mar 15 03:32:17 2015 +0000 URL: https://gitweb.gentoo.org/proj/perl-overlay.git/commit/?id=4abc0cf7
[perl-module.eclass] Add perl_check_env patch re bug 543042 eclass/perl-module.eclass | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/eclass/perl-module.eclass b/eclass/perl-module.eclass index 593a030..dcf8620 100644 --- a/eclass/perl-module.eclass +++ b/eclass/perl-module.eclass @@ -131,6 +131,8 @@ perl-module_src_configure() { [[ ${SRC_PREP} = yes ]] && return 0 SRC_PREP="yes" + perl_check_env + perl_set_version perl_set_eprefix @@ -726,3 +728,46 @@ perl_set_eprefix() { ;; 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 tells users the circumvention options +# for the problem, whether it be unsetting the bad fields, or setting +# I_KNOW_WHAT_IM_DOING=1 + +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. + [ ${errored:-0} == 0 ] && \ + ewarn "perl-module.eclass: Suspect ENV values found."; + + errored=1 + + # Read ENV Value + eval "value=\$$i"; + + # Print ENV name/value pair + ewarn " $i=\"$value\""; + done + + # Return if there were no failures + [ ${errored:-0} == 0 ] && return; + + # Return if user knows what they're doing + if [ ${I_KNOW_WHAT_IM_DOING:-0} == 1 ]; then + ewarn "Continuing due to I_KNOW_WHAT_IM_DOING=1" + return + fi + + die "Please unset from ENV ( ~/.bashrc, package.env, etc ) or set I_KNOW_WHAT_IM_DOING=1" +}