commit: 2b62104633008cc30df24808029430516a6d9a7b Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Thu Sep 21 14:24:23 2017 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Sun Mar 4 21:03:52 2018 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=2b621046
isolated-functions.sh: Ensure informational command output to stderr Ensure that einfo, elog, ewarn... commands direct all output to stderr consistently. This ensures that various logging messages won't pollute stdout, and therefore be accidentally caught in $(). This satisfies the 'output commands do not pollute' stdout requirement that is tentatively included in EAPI 7. Bug: https://bugs.gentoo.org/483240 bin/isolated-functions.sh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh index 1ca959bb3..0acb81607 100644 --- a/bin/isolated-functions.sh +++ b/bin/isolated-functions.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2016 Gentoo Foundation +# Copyright 1999-2018 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH}/eapi.sh" || exit 1 @@ -247,7 +247,7 @@ __quiet_mode() { } __vecho() { - __quiet_mode || echo "$@" + __quiet_mode || echo "$@" >&2 } # Internal logging function, don't use this in ebuilds @@ -273,9 +273,9 @@ __elog_base() { eqawarn() { __elog_base QA "$*" - [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo + [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 echo -e "$@" | while read -r ; do - __vecho " $WARN*$NORMAL $REPLY" >&2 + __vecho " $WARN*$NORMAL $REPLY" done LAST_E_CMD="eqawarn" return 0 @@ -283,9 +283,9 @@ eqawarn() { elog() { __elog_base LOG "$*" - [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo + [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 echo -e "$@" | while read -r ; do - echo " $GOOD*$NORMAL $REPLY" + echo " $GOOD*$NORMAL $REPLY" >&2 done LAST_E_CMD="elog" return 0 @@ -293,9 +293,9 @@ elog() { einfo() { __elog_base INFO "$*" - [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo + [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 echo -e "$@" | while read -r ; do - echo " $GOOD*$NORMAL $REPLY" + echo " $GOOD*$NORMAL $REPLY" >&2 done LAST_E_CMD="einfo" return 0 @@ -303,15 +303,15 @@ einfo() { einfon() { __elog_base INFO "$*" - [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo - echo -ne " ${GOOD}*${NORMAL} $*" + [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 + echo -ne " ${GOOD}*${NORMAL} $*" >&2 LAST_E_CMD="einfon" return 0 } ewarn() { __elog_base WARN "$*" - [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo + [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 echo -e "$@" | while read -r ; do echo " $WARN*$NORMAL $RC_INDENTATION$REPLY" >&2 done @@ -321,7 +321,7 @@ ewarn() { eerror() { __elog_base ERROR "$*" - [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo + [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 echo -e "$@" | while read -r ; do echo " $BAD*$NORMAL $RC_INDENTATION$REPLY" >&2 done @@ -339,7 +339,7 @@ ebegin() { msg="${msg} ..." fi einfon "${msg}" - [[ ${RC_ENDCOL} == "yes" ]] && echo + [[ ${RC_ENDCOL} == "yes" ]] && echo >&2 LAST_E_LEN=$(( 3 + ${#RC_INDENTATION} + ${#msg} )) LAST_E_CMD="ebegin" return 0 @@ -359,10 +359,10 @@ __eend() { fi if [[ ${RC_ENDCOL} == "yes" ]] ; then - echo -e "${ENDCOL} ${msg}" + echo -e "${ENDCOL} ${msg}" >&2 else [[ ${LAST_E_CMD} == ebegin ]] || LAST_E_LEN=0 - printf "%$(( COLS - LAST_E_LEN - 7 ))s%b\n" '' "${msg}" + printf "%$(( COLS - LAST_E_LEN - 7 ))s%b\n" '' "${msg}" >&2 fi return ${retval}
