From 770b57e66b98de8bfe59b5947de3a6d2adbfa093 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 23 Nov 2007 10:53:48 +0000 Subject: Try again to make bashrc sourcing compatible with previous behavior. The bashrcs get an opportunity to set aliases that will be expanded during sourcing of ebuilds and eclasses. svn path=/main/trunk/; revision=8621 --- bin/ebuild.sh | 69 ++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 32 deletions(-) (limited to 'bin') diff --git a/bin/ebuild.sh b/bin/ebuild.sh index 22018b3e7..770715a5a 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -1330,6 +1330,37 @@ remove_path_entry() { PATH="${stripped_path}" } +source_all_bashrcs() { + local OCC="${CC}" OCXX="${CXX}" + # source the existing profile.bashrc's. + save_IFS + IFS=$'\n' + local x + for x in ${PROFILE_PATHS}; do + # Must unset it so that it doesn't mess up assumptions in the RCs. + unset IFS + [ -f "${x}/profile.bashrc" ] && qa_source "${x}/profile.bashrc" + done + restore_IFS + + # We assume if people are changing shopts in their bashrc they do so at their + # own peril. This is the ONLY non-portage bit of code that can change shopts + # without a QA violation. + if [ -f "${PORTAGE_BASHRC}" ]; then + # If $- contains x, then tracing has already enabled elsewhere for some + # reason. We preserve it's state so as not to interfere. + if [ "$PORTAGE_DEBUG" != "1" ] || [ "${-/x/}" != "$-" ]; then + source "${PORTAGE_BASHRC}" + else + set -x + source "${PORTAGE_BASHRC}" + set +x + fi + fi + [ ! -z "${OCC}" ] && export CC="${OCC}" + [ ! -z "${OCXX}" ] && export CXX="${OCXX}" +} + READONLY_EBUILD_METADATA="DEPEND DESCRIPTION EAPI HOMEPAGE INHERITED IUSE KEYWORDS LICENSE PDEPEND PROVIDE RDEPEND RESTRICT SLOT SRC_URI" @@ -1576,7 +1607,13 @@ elif ! hasq ${EBUILD_PHASE} depend && [ -f "${T}"/environment ] ; then preprocess_ebuild_env fi source "${T}"/environment + source_all_bashrcs else + + # The bashrcs get an opportunity here to set aliases that will be expanded + # during sourcing of ebuilds and eclasses. + source_all_bashrcs + # *DEPEND and IUSE will be set during the sourcing of the ebuild. # In order to ensure correct interaction between ebuilds and # eclasses, they need to be unset before this process of @@ -1658,38 +1695,6 @@ if [ "${EBUILD_PHASE}" != "depend" ] ; then unset x fi -OCC="${CC}" -OCXX="${CXX}" - -# source the existing profile.bashrc's. -save_IFS -IFS=$'\n' -for x in ${PROFILE_PATHS}; do - # Must unset it so that it doesn't mess up assumptions in the RCs. - unset IFS - [ -f "${x}/profile.bashrc" ] && qa_source "${x}/profile.bashrc" -done -unset x -restore_IFS - -# We assume if people are changing shopts in their bashrc they do so at their -# own peril. This is the ONLY non-portage bit of code that can change shopts -# without a QA violation. -if [ -f "${PORTAGE_BASHRC}" ]; then - # If $- contains x, then tracing has already enabled elsewhere for some - # reason. We preserve it's state so as not to interfere. - if [ "$PORTAGE_DEBUG" != "1" ] || [ "${-/x/}" != "$-" ]; then - source "${PORTAGE_BASHRC}" - else - set -x - source "${PORTAGE_BASHRC}" - set +x - fi -fi - -[ ! -z "$OCC" ] && export CC="$OCC" -[ ! -z "$OCXX" ] && export CXX="$OCXX" - if [ -n "${EBUILD_SH_ARGS}" ] ; then case ${EBUILD_SH_ARGS} in nofetch) -- cgit v1.2.3-1-g7c22