Files
poky/meta/classes/logging.bbclass
Paul Eggleton 757be608a5 classes/base: fix die() to print the full log
The recent change to connect through the shell logging functions caused
a regression - bb.error() and bb.fatal() cause a flag to be set
internally such that BitBake's UI will not print the full task log on
failure; unfortunately we have in a lot of places called die() or
bbfatal() within shell functions with a very terse message as a means of
exiting out, where we still want to see the full log (and we were
previously). We do still want to have fatal errors with proper messages
that don't result in the full log being printed, however we can't ignore
the typical usage of die(). Having added a mechanism to BitBake to log an
error and reset the flag, create a bbfatal_log() function that uses this
and call it from die() to restore the previous behaviour.

(From OE-Core rev: beec1cf3d22d7dbe85f332a055c72649f4bd3e92)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-07-16 15:09:23 +01:00

74 lines
2.0 KiB
Plaintext

# The following logging mechanisms are to be used in bash functions of recipes.
# They are intended to map one to one in intention and output format with the
# python recipe logging functions of a similar naming convention: bb.plain(),
# bb.note(), etc.
LOGFIFO = "${T}/fifo.${@os.getpid()}"
# Print the output exactly as it is passed in. Typically used for output of
# tasks that should be seen on the console. Use sparingly.
# Output: logs console
bbplain() {
printf "%b\0" "bbplain $*" > ${LOGFIFO}
}
# Notify the user of a noteworthy condition.
# Output: logs
bbnote() {
printf "%b\0" "bbnote $*" > ${LOGFIFO}
}
# Print a warning to the log. Warnings are non-fatal, and do not
# indicate a build failure.
# Output: logs console
bbwarn() {
printf "%b\0" "bbwarn $*" > ${LOGFIFO}
}
# Print an error to the log. Errors are non-fatal in that the build can
# continue, but they do indicate a build failure.
# Output: logs console
bberror() {
printf "%b\0" "bberror $*" > ${LOGFIFO}
}
# Print a fatal error to the log. Fatal errors indicate build failure
# and halt the build, exiting with an error code.
# Output: logs console
bbfatal() {
printf "%b\0" "bbfatal $*" > ${LOGFIFO}
exit 1
}
# Like bbfatal, except prevents the suppression of the error log by
# bitbake's UI.
# Output: logs console
bbfatal_log() {
printf "%b\0" "bbfatal_log $*" > ${LOGFIFO}
exit 1
}
# Print debug messages. These are appropriate for progress checkpoint
# messages to the logs. Depending on the debug log level, they may also
# go to the console.
# Output: logs console
# Usage: bbdebug 1 "first level debug message"
# bbdebug 2 "second level debug message"
bbdebug() {
USAGE='Usage: bbdebug [123] "message"'
if [ $# -lt 2 ]; then
bbfatal "$USAGE"
fi
# Strip off the debug level and ensure it is an integer
DBGLVL=$1; shift
NONDIGITS=$(echo "$DBGLVL" | tr -d [:digit:])
if [ "$NONDIGITS" ]; then
bbfatal "$USAGE"
fi
# All debug output is printed to the logs
printf "%b\0" "bbdebug $DBGLVL $*" > ${LOGFIFO}
}