From ba19066d7a0bcfcfa189a527564e7d5eaeeb377f Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 23 Nov 2007 10:55:26 +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. (trunk r8621) svn path=/main/branches/2.1.2/; revision=8622 --- bin/ebuild.sh | 69 ++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 32 deletions(-) (limited to 'bin/ebuild.sh') 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