export EBUILD_DEATH_HOOKS="${EBUILD_DEATH_HOOKS} $*"
}
-diefunc() {
- local funcname="$1" lineno="$2" exitcode="$3"
- shift 3
- echo >&2
- echo "!!! ERROR: $CATEGORY/$PF failed." >&2
- dump_trace 2 1>&2
- echo " $(basename "${BASH_SOURCE[1]}"), line ${BASH_LINENO[0]}: Called die" 1>&2
- echo >&2
- echo "!!! ${*:-(no error message)}" >&2
- echo "!!! If you need support, post the topmost build error, and the call stack if relevant." >&2
- echo "!!! A complete build log is located at '${PORTAGE_LOG_FILE}'." >&2
- echo >&2
- if [ -n "${EBUILD_OVERLAY_ECLASSES}" ] ; then
- echo "This ebuild used the following eclasses from overlays:" >&2
- echo >&2
- for x in ${EBUILD_OVERLAY_ECLASSES} ; do
- echo " ${x}" >&2
- done
- echo >&2
- fi
-
- if [ "${EBUILD_PHASE/depend}" == "${EBUILD_PHASE}" ]; then
- local x
- for x in $EBUILD_DEATH_HOOKS; do
- ${x} "$@" >&2 1>&2
- done
- fi
-
- # subshell die support
- kill -s SIGTERM ${EBUILD_MASTER_PID}
- exit 1
-}
-
-shopt -s extdebug &> /dev/null
-
-# usage- first arg is the number of funcs on the stack to ignore.
-# defaults to 1 (ignoring dump_trace)
-dump_trace() {
- local funcname="" sourcefile="" lineno="" n e s="yes"
-
- declare -i strip=1
-
- if [[ -n $1 ]]; then
- strip=$(( $1 ))
- fi
-
- echo "Call stack:"
- for (( n = ${#FUNCNAME[@]} - 1, p = ${#BASH_ARGV[@]} ; n > $strip ; n-- )) ; do
- funcname=${FUNCNAME[${n} - 1]}
- sourcefile=$(basename ${BASH_SOURCE[${n}]})
- lineno=${BASH_LINENO[${n} - 1]}
- # Display function arguments
- args=
- if [[ -n "${BASH_ARGV[@]}" ]]; then
- for (( j = 1 ; j <= ${BASH_ARGC[${n} - 1]} ; ++j )); do
- newarg=${BASH_ARGV[$(( p - j - 1 ))]}
- args="${args:+${args} }'${newarg}'"
- done
- (( p -= ${BASH_ARGC[${n} - 1]} ))
- fi
- echo " ${sourcefile}, line ${lineno}: Called ${funcname}${args:+ ${args}}"
- done
-}
-
-
-
#if no perms are specified, dirs/files will have decent defaults
#(not secretive, but not stupid)
umask 022
alias save_IFS='[ "${IFS:-unset}" != "unset" ] && old_IFS="${IFS}"'
alias restore_IFS='if [ "${old_IFS:-unset}" != "unset" ]; then IFS="${old_IFS}"; unset old_IFS; else unset IFS; fi'
+shopt -s extdebug
+
+# usage- first arg is the number of funcs on the stack to ignore.
+# defaults to 1 (ignoring dump_trace)
+dump_trace() {
+ local funcname="" sourcefile="" lineno="" n e s="yes"
+
+ declare -i strip=1
+
+ if [[ -n $1 ]]; then
+ strip=$(( $1 ))
+ fi
+
+ echo "Call stack:"
+ for (( n = ${#FUNCNAME[@]} - 1, p = ${#BASH_ARGV[@]} ; n > $strip ; n-- )) ; do
+ funcname=${FUNCNAME[${n} - 1]}
+ sourcefile=$(basename ${BASH_SOURCE[${n}]})
+ lineno=${BASH_LINENO[${n} - 1]}
+ # Display function arguments
+ args=
+ if [[ -n "${BASH_ARGV[@]}" ]]; then
+ for (( j = 1 ; j <= ${BASH_ARGC[${n} - 1]} ; ++j )); do
+ newarg=${BASH_ARGV[$(( p - j - 1 ))]}
+ args="${args:+${args} }'${newarg}'"
+ done
+ (( p -= ${BASH_ARGC[${n} - 1]} ))
+ fi
+ echo " ${sourcefile}, line ${lineno}: Called ${funcname}${args:+ ${args}}"
+ done
+}
+
diefunc() {
local funcname="$1" lineno="$2" exitcode="$3"
shift 3