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} -- 2.16.2