diff options
Diffstat (limited to 'meta/classes/logging.bbclass')
| -rw-r--r-- | meta/classes/logging.bbclass | 71 |
1 files changed, 50 insertions, 21 deletions
diff --git a/meta/classes/logging.bbclass b/meta/classes/logging.bbclass index 78d65bda3a..06c7c31c3e 100644 --- a/meta/classes/logging.bbclass +++ b/meta/classes/logging.bbclass @@ -2,48 +2,73 @@ # 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. -# -# For the time being, all of these print only to the task logs. Future -# enhancements may integrate these calls with the bitbake logging -# infrastructure, allowing for printing to the console as appropriate. The -# interface and intention statements reflect that future goal. Once it is -# in place, no changes will be necessary to recipes using these logging -# mechanisms. + +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 -# NOTE: console output is not currently implemented. bbplain() { - echo "$*" + if [ -p ${LOGFIFO} ] ; then + printf "%b\0" "bbplain $*" > ${LOGFIFO} + else + echo "$*" + fi } # Notify the user of a noteworthy condition. -# Output: logs console -# NOTE: console output is not currently implemented. +# Output: logs bbnote() { - echo "NOTE: $*" + if [ -p ${LOGFIFO} ] ; then + printf "%b\0" "bbnote $*" > ${LOGFIFO} + else + echo "NOTE: $*" + fi } # Print a warning to the log. Warnings are non-fatal, and do not # indicate a build failure. -# Output: logs +# Output: logs console bbwarn() { - echo "WARNING: $*" + if [ -p ${LOGFIFO} ] ; then + printf "%b\0" "bbwarn $*" > ${LOGFIFO} + else + echo "WARNING: $*" + fi } # 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 +# Output: logs console bberror() { - echo "ERROR: $*" + if [ -p ${LOGFIFO} ] ; then + printf "%b\0" "bberror $*" > ${LOGFIFO} + else + echo "ERROR: $*" + fi } # Print a fatal error to the log. Fatal errors indicate build failure # and halt the build, exiting with an error code. -# Output: logs +# Output: logs console bbfatal() { - echo "ERROR: $*" + if [ -p ${LOGFIFO} ] ; then + printf "%b\0" "bbfatal $*" > ${LOGFIFO} + else + echo "ERROR: $*" + fi + exit 1 +} + +# Like bbfatal, except prevents the suppression of the error log by +# bitbake's UI. +# Output: logs console +bbfatal_log() { + if [ -p ${LOGFIFO} ] ; then + printf "%b\0" "bbfatal_log $*" > ${LOGFIFO} + else + echo "ERROR: $*" + fi exit 1 } @@ -53,7 +78,6 @@ bbfatal() { # Output: logs console # Usage: bbdebug 1 "first level debug message" # bbdebug 2 "second level debug message" -# NOTE: console output is not currently implemented. bbdebug() { USAGE='Usage: bbdebug [123] "message"' if [ $# -lt 2 ]; then @@ -62,11 +86,16 @@ bbdebug() { # Strip off the debug level and ensure it is an integer DBGLVL=$1; shift - if ! [[ "$DBGLVL" =~ ^[0-9]+ ]]; then + NONDIGITS=$(echo "$DBGLVL" | tr -d [:digit:]) + if [ "$NONDIGITS" ]; then bbfatal "$USAGE" fi # All debug output is printed to the logs - echo "DEBUG: $*" + if [ -p ${LOGFIFO} ] ; then + printf "%b\0" "bbdebug $DBGLVL $*" > ${LOGFIFO} + else + echo "DEBUG: $*" + fi } |
