diff options
-rwxr-xr-x | bin/ebuild.sh | 1 | ||||
-rw-r--r-- | bin/isolated-functions.sh | 91 | ||||
-rw-r--r-- | bin/phase-functions.sh | 2 | ||||
-rw-r--r-- | bin/save-ebuild-env.sh | 93 |
4 files changed, 95 insertions, 92 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh index 1cb9269df..1d014167a 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -20,6 +20,7 @@ source "${PORTAGE_BIN_PATH}/isolated-functions.sh" || exit 1 if [[ $EBUILD_PHASE != depend ]] ; then source "${PORTAGE_BIN_PATH}/phase-functions.sh" || die + source "${PORTAGE_BIN_PATH}/save-ebuild-env.sh" || die source "${PORTAGE_BIN_PATH}/phase-helpers.sh" || die source "${PORTAGE_BIN_PATH}/bashrc-functions.sh" || die else diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh index c5adc0cc5..5247e7e26 100644 --- a/bin/isolated-functions.sh +++ b/bin/isolated-functions.sh @@ -541,95 +541,4 @@ has() { return 1 } -# @FUNCTION: save_ebuild_env -# @DESCRIPTION: -# echo the current environment to stdout, filtering out redundant info. -# -# --exclude-init-phases causes pkg_nofetch and src_* phase functions to -# be excluded from the output. These function are not needed for installation -# or removal of the packages, and can therefore be safely excluded. -# -save_ebuild_env() { - ( - - if has --exclude-init-phases $* ; then - unset S _E_DOCDESTTREE_ _E_EXEDESTTREE_ - if [[ -n $PYTHONPATH ]] ; then - export PYTHONPATH=${PYTHONPATH/${PORTAGE_PYM_PATH}:} - [[ -z $PYTHONPATH ]] && unset PYTHONPATH - fi - fi - - # misc variables inherited from the calling environment - unset COLORTERM DISPLAY EDITOR LESS LESSOPEN LOGNAME LS_COLORS PAGER \ - TERM TERMCAP USER ftp_proxy http_proxy no_proxy - - # other variables inherited from the calling environment - unset CVS_RSH ECHANGELOG_USER GPG_AGENT_INFO \ - SSH_AGENT_PID SSH_AUTH_SOCK STY WINDOW XAUTHORITY - - # CCACHE and DISTCC config - unset ${!CCACHE_*} ${!DISTCC_*} - - # There's no need to bloat environment.bz2 with internally defined - # functions and variables, so filter them out if possible. - - for x in pkg_setup pkg_nofetch src_unpack src_prepare src_configure \ - src_compile src_test src_install pkg_preinst pkg_postinst \ - pkg_prerm pkg_postrm ; do - unset -f default_$x _eapi{0,1,2,3,4}_$x - done - unset x - - unset -f assert assert_sigpipe_ok dump_trace die diefunc \ - quiet_mode vecho elog_base eqawarn elog \ - esyslog einfo einfon ewarn eerror ebegin _eend eend KV_major \ - KV_minor KV_micro KV_to_int get_KV unset_colors set_colors has \ - has_phase_defined_up_to \ - hasv hasq qa_source qa_call \ - addread addwrite adddeny addpredict _sb_append_var \ - use usev useq has_version portageq \ - best_version use_with use_enable register_die_hook \ - keepdir unpack strip_duplicate_slashes econf einstall \ - dyn_setup dyn_unpack dyn_clean into insinto exeinto docinto \ - insopts diropts exeopts libopts docompress \ - abort_handler abort_prepare abort_configure abort_compile \ - abort_test abort_install dyn_prepare dyn_configure \ - dyn_compile dyn_test dyn_install \ - dyn_preinst dyn_help debug-print debug-print-function \ - debug-print-section inherit EXPORT_FUNCTIONS remove_path_entry \ - save_ebuild_env filter_readonly_variables preprocess_ebuild_env \ - set_unless_changed unset_unless_changed source_all_bashrcs \ - ebuild_main ebuild_phase ebuild_phase_with_hooks \ - _ebuild_arg_to_phase _ebuild_phase_funcs default \ - _hasg _hasgq _unpack_tar \ - ${QA_INTERCEPTORS} - - # portage config variables and variables set directly by portage - unset ACCEPT_LICENSE BAD BRACKET BUILD_PREFIX COLS \ - DISTCC_DIR DISTDIR DOC_SYMLINKS_DIR \ - EBUILD_FORCE_TEST EBUILD_MASTER_PID \ - ECLASS_DEPTH ENDCOL FAKEROOTKEY \ - GOOD HILITE HOME \ - LAST_E_CMD LAST_E_LEN LD_PRELOAD MISC_FUNCTIONS_ARGS MOPREFIX \ - NOCOLOR NORMAL PKGDIR PKGUSE PKG_LOGDIR PKG_TMPDIR \ - PORTAGE_BASHRCS_SOURCED PORTAGE_NONFATAL PORTAGE_QUIET \ - PORTAGE_SANDBOX_DENY PORTAGE_SANDBOX_PREDICT \ - PORTAGE_SANDBOX_READ PORTAGE_SANDBOX_WRITE PREROOTPATH \ - QA_INTERCEPTORS \ - RC_DEFAULT_INDENT RC_DOT_PATTERN RC_ENDCOL RC_INDENTATION \ - ROOT ROOTPATH RPMDIR TEMP TMP TMPDIR USE_EXPAND \ - WARN XARGS _RC_GET_KV_CACHE - - # user config variables - unset DOC_SYMLINKS_DIR INSTALL_MASK PKG_INSTALL_MASK - - declare -p - declare -fp - if [[ ${BASH_VERSINFO[0]} == 3 ]]; then - export - fi - ) -} - true diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh index f1db257f5..164b309e8 100644 --- a/bin/phase-functions.sh +++ b/bin/phase-functions.sh @@ -167,7 +167,7 @@ preprocess_ebuild_env() { # by the above source command. To protect ourselves, we override it # here with our own version. ${PORTAGE_BIN_PATH} is safe to use here # because it's already filtered above. - source "${PORTAGE_BIN_PATH}/isolated-functions.sh" || exit $? + source "${PORTAGE_BIN_PATH}/save-ebuild-env.sh" || exit $? # Rely on save_ebuild_env() to filter out any remaining variables # and functions that could interfere with the current environment. diff --git a/bin/save-ebuild-env.sh b/bin/save-ebuild-env.sh new file mode 100644 index 000000000..3bb8255ab --- /dev/null +++ b/bin/save-ebuild-env.sh @@ -0,0 +1,93 @@ +#!/bin/bash +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +# @FUNCTION: save_ebuild_env +# @DESCRIPTION: +# echo the current environment to stdout, filtering out redundant info. +# +# --exclude-init-phases causes pkg_nofetch and src_* phase functions to +# be excluded from the output. These function are not needed for installation +# or removal of the packages, and can therefore be safely excluded. +# +save_ebuild_env() { + ( + if has --exclude-init-phases $* ; then + unset S _E_DOCDESTTREE_ _E_EXEDESTTREE_ + if [[ -n $PYTHONPATH ]] ; then + export PYTHONPATH=${PYTHONPATH/${PORTAGE_PYM_PATH}:} + [[ -z $PYTHONPATH ]] && unset PYTHONPATH + fi + fi + + # misc variables inherited from the calling environment + unset COLORTERM DISPLAY EDITOR LESS LESSOPEN LOGNAME LS_COLORS PAGER \ + TERM TERMCAP USER ftp_proxy http_proxy no_proxy + + # other variables inherited from the calling environment + unset CVS_RSH ECHANGELOG_USER GPG_AGENT_INFO \ + SSH_AGENT_PID SSH_AUTH_SOCK STY WINDOW XAUTHORITY + + # CCACHE and DISTCC config + unset ${!CCACHE_*} ${!DISTCC_*} + + # There's no need to bloat environment.bz2 with internally defined + # functions and variables, so filter them out if possible. + + for x in pkg_setup pkg_nofetch src_unpack src_prepare src_configure \ + src_compile src_test src_install pkg_preinst pkg_postinst \ + pkg_prerm pkg_postrm ; do + unset -f default_$x _eapi{0,1,2,3,4}_$x + done + unset x + + unset -f assert assert_sigpipe_ok dump_trace die diefunc \ + quiet_mode vecho elog_base eqawarn elog \ + esyslog einfo einfon ewarn eerror ebegin _eend eend KV_major \ + KV_minor KV_micro KV_to_int get_KV unset_colors set_colors has \ + has_phase_defined_up_to \ + hasv hasq qa_source qa_call \ + addread addwrite adddeny addpredict _sb_append_var \ + use usev useq has_version portageq \ + best_version use_with use_enable register_die_hook \ + keepdir unpack strip_duplicate_slashes econf einstall \ + dyn_setup dyn_unpack dyn_clean into insinto exeinto docinto \ + insopts diropts exeopts libopts docompress \ + abort_handler abort_prepare abort_configure abort_compile \ + abort_test abort_install dyn_prepare dyn_configure \ + dyn_compile dyn_test dyn_install \ + dyn_preinst dyn_help debug-print debug-print-function \ + debug-print-section inherit EXPORT_FUNCTIONS remove_path_entry \ + save_ebuild_env filter_readonly_variables preprocess_ebuild_env \ + set_unless_changed unset_unless_changed source_all_bashrcs \ + ebuild_main ebuild_phase ebuild_phase_with_hooks \ + _ebuild_arg_to_phase _ebuild_phase_funcs default \ + _hasg _hasgq _unpack_tar \ + ${QA_INTERCEPTORS} + + # portage config variables and variables set directly by portage + unset ACCEPT_LICENSE BAD BRACKET BUILD_PREFIX COLS \ + DISTCC_DIR DISTDIR DOC_SYMLINKS_DIR \ + EBUILD_FORCE_TEST EBUILD_MASTER_PID \ + ECLASS_DEPTH ENDCOL FAKEROOTKEY \ + GOOD HILITE HOME \ + LAST_E_CMD LAST_E_LEN LD_PRELOAD MISC_FUNCTIONS_ARGS MOPREFIX \ + NOCOLOR NORMAL PKGDIR PKGUSE PKG_LOGDIR PKG_TMPDIR \ + PORTAGE_BASHRCS_SOURCED PORTAGE_NONFATAL PORTAGE_QUIET \ + PORTAGE_SANDBOX_DENY PORTAGE_SANDBOX_PREDICT \ + PORTAGE_SANDBOX_READ PORTAGE_SANDBOX_WRITE PREROOTPATH \ + QA_INTERCEPTORS \ + RC_DEFAULT_INDENT RC_DOT_PATTERN RC_ENDCOL RC_INDENTATION \ + ROOT ROOTPATH RPMDIR TEMP TMP TMPDIR USE_EXPAND \ + WARN XARGS _RC_GET_KV_CACHE + + # user config variables + unset DOC_SYMLINKS_DIR INSTALL_MASK PKG_INSTALL_MASK + + declare -p + declare -fp + if [[ ${BASH_VERSINFO[0]} == 3 ]]; then + export + fi + ) +} |