1# The following logging mechanisms are to be used in bash functions of recipes. 2# They are intended to map one to one in intention and output format with the 3# python recipe logging functions of a similar naming convention: bb.plain(), 4# bb.note(), etc. 5 6LOGFIFO = "${T}/fifo.${@os.getpid()}" 7 8# Print the output exactly as it is passed in. Typically used for output of 9# tasks that should be seen on the console. Use sparingly. 10# Output: logs console 11bbplain() { 12 if [ -p ${LOGFIFO} ] ; then 13 printf "%b\0" "bbplain $*" > ${LOGFIFO} 14 else 15 echo "$*" 16 fi 17} 18 19# Notify the user of a noteworthy condition. 20# Output: logs 21bbnote() { 22 if [ -p ${LOGFIFO} ] ; then 23 printf "%b\0" "bbnote $*" > ${LOGFIFO} 24 else 25 echo "NOTE: $*" 26 fi 27} 28 29# Print a warning to the log. Warnings are non-fatal, and do not 30# indicate a build failure. 31# Output: logs console 32bbwarn() { 33 if [ -p ${LOGFIFO} ] ; then 34 printf "%b\0" "bbwarn $*" > ${LOGFIFO} 35 else 36 echo "WARNING: $*" 37 fi 38} 39 40# Print an error to the log. Errors are non-fatal in that the build can 41# continue, but they do indicate a build failure. 42# Output: logs console 43bberror() { 44 if [ -p ${LOGFIFO} ] ; then 45 printf "%b\0" "bberror $*" > ${LOGFIFO} 46 else 47 echo "ERROR: $*" 48 fi 49} 50 51# Print a fatal error to the log. Fatal errors indicate build failure 52# and halt the build, exiting with an error code. 53# Output: logs console 54bbfatal() { 55 if [ -p ${LOGFIFO} ] ; then 56 printf "%b\0" "bbfatal $*" > ${LOGFIFO} 57 else 58 echo "ERROR: $*" 59 fi 60 exit 1 61} 62 63# Like bbfatal, except prevents the suppression of the error log by 64# bitbake's UI. 65# Output: logs console 66bbfatal_log() { 67 if [ -p ${LOGFIFO} ] ; then 68 printf "%b\0" "bbfatal_log $*" > ${LOGFIFO} 69 else 70 echo "ERROR: $*" 71 fi 72 exit 1 73} 74 75# Print debug messages. These are appropriate for progress checkpoint 76# messages to the logs. Depending on the debug log level, they may also 77# go to the console. 78# Output: logs console 79# Usage: bbdebug 1 "first level debug message" 80# bbdebug 2 "second level debug message" 81bbdebug() { 82 USAGE='Usage: bbdebug [123] "message"' 83 if [ $# -lt 2 ]; then 84 bbfatal "$USAGE" 85 fi 86 87 # Strip off the debug level and ensure it is an integer 88 DBGLVL=$1; shift 89 NONDIGITS=$(echo "$DBGLVL" | tr -d "[:digit:]") 90 if [ "$NONDIGITS" ]; then 91 bbfatal "$USAGE" 92 fi 93 94 # All debug output is printed to the logs 95 if [ -p ${LOGFIFO} ] ; then 96 printf "%b\0" "bbdebug $DBGLVL $*" > ${LOGFIFO} 97 else 98 echo "DEBUG: $*" 99 fi 100} 101 102