xref: /openbmc/openbmc/poky/meta/classes-global/logging.bbclass (revision 96e4b4e121e0e2da1535d7d537d6a982a6ff5bc0)
192b42cb3SPatrick Williams#
292b42cb3SPatrick Williams# Copyright OpenEmbedded Contributors
392b42cb3SPatrick Williams#
492b42cb3SPatrick Williams# SPDX-License-Identifier: MIT
592b42cb3SPatrick Williams#
692b42cb3SPatrick Williams
792b42cb3SPatrick Williams# The following logging mechanisms are to be used in bash functions of recipes.
892b42cb3SPatrick Williams# They are intended to map one to one in intention and output format with the
992b42cb3SPatrick Williams# python recipe logging functions of a similar naming convention: bb.plain(),
1092b42cb3SPatrick Williams# bb.note(), etc.
1192b42cb3SPatrick Williams
1292b42cb3SPatrick WilliamsLOGFIFO = "${T}/fifo.${@os.getpid()}"
1392b42cb3SPatrick Williams
1492b42cb3SPatrick Williams# Print the output exactly as it is passed in. Typically used for output of
1592b42cb3SPatrick Williams# tasks that should be seen on the console. Use sparingly.
1692b42cb3SPatrick Williams# Output: logs console
1792b42cb3SPatrick Williamsbbplain() {
1892b42cb3SPatrick Williams	if [ -p ${LOGFIFO} ] ; then
1992b42cb3SPatrick Williams		printf "%b\0" "bbplain $*" > ${LOGFIFO}
2092b42cb3SPatrick Williams	else
2192b42cb3SPatrick Williams		echo "$*"
2292b42cb3SPatrick Williams	fi
2392b42cb3SPatrick Williams}
2492b42cb3SPatrick Williams
2592b42cb3SPatrick Williams# Notify the user of a noteworthy condition.
2692b42cb3SPatrick Williams# Output: logs
2792b42cb3SPatrick Williamsbbnote() {
2892b42cb3SPatrick Williams	if [ -p ${LOGFIFO} ] ; then
2992b42cb3SPatrick Williams		printf "%b\0" "bbnote $*" > ${LOGFIFO}
3092b42cb3SPatrick Williams	else
3192b42cb3SPatrick Williams		echo "NOTE: $*"
3292b42cb3SPatrick Williams	fi
3392b42cb3SPatrick Williams}
3492b42cb3SPatrick Williams
35*96e4b4e1SPatrick Williams# Notify the user of a noteworthy condition.
36*96e4b4e1SPatrick Williams# Output: logs console
37*96e4b4e1SPatrick Williamsbbverbnote() {
38*96e4b4e1SPatrick Williams        if [ -p ${LOGFIFO} ]; then
39*96e4b4e1SPatrick Williams                printf "%b\0" "bbverbnote $*" > ${LOGFIFO}
40*96e4b4e1SPatrick Williams        else
41*96e4b4e1SPatrick Williams            echo "NOTE: $*"
42*96e4b4e1SPatrick Williams        fi
43*96e4b4e1SPatrick Williams}
44*96e4b4e1SPatrick Williams
4592b42cb3SPatrick Williams# Print a warning to the log. Warnings are non-fatal, and do not
4692b42cb3SPatrick Williams# indicate a build failure.
4792b42cb3SPatrick Williams# Output: logs console
4892b42cb3SPatrick Williamsbbwarn() {
4992b42cb3SPatrick Williams	if [ -p ${LOGFIFO} ] ; then
5092b42cb3SPatrick Williams		printf "%b\0" "bbwarn $*" > ${LOGFIFO}
5192b42cb3SPatrick Williams	else
5292b42cb3SPatrick Williams		echo "WARNING: $*"
5392b42cb3SPatrick Williams	fi
5492b42cb3SPatrick Williams}
5592b42cb3SPatrick Williams
5692b42cb3SPatrick Williams# Print an error to the log. Errors are non-fatal in that the build can
5792b42cb3SPatrick Williams# continue, but they do indicate a build failure.
5892b42cb3SPatrick Williams# Output: logs console
5992b42cb3SPatrick Williamsbberror() {
6092b42cb3SPatrick Williams	if [ -p ${LOGFIFO} ] ; then
6192b42cb3SPatrick Williams		printf "%b\0" "bberror $*" > ${LOGFIFO}
6292b42cb3SPatrick Williams	else
6392b42cb3SPatrick Williams		echo "ERROR: $*"
6492b42cb3SPatrick Williams	fi
6592b42cb3SPatrick Williams}
6692b42cb3SPatrick Williams
6792b42cb3SPatrick Williams# Print a fatal error to the log. Fatal errors indicate build failure
6892b42cb3SPatrick Williams# and halt the build, exiting with an error code.
6992b42cb3SPatrick Williams# Output: logs console
7092b42cb3SPatrick Williamsbbfatal() {
7192b42cb3SPatrick Williams	if [ -p ${LOGFIFO} ] ; then
7292b42cb3SPatrick Williams		printf "%b\0" "bbfatal $*" > ${LOGFIFO}
7392b42cb3SPatrick Williams	else
7492b42cb3SPatrick Williams		echo "ERROR: $*"
7592b42cb3SPatrick Williams	fi
7692b42cb3SPatrick Williams	exit 1
7792b42cb3SPatrick Williams}
7892b42cb3SPatrick Williams
7992b42cb3SPatrick Williams# Like bbfatal, except prevents the suppression of the error log by
8092b42cb3SPatrick Williams# bitbake's UI.
8192b42cb3SPatrick Williams# Output: logs console
8292b42cb3SPatrick Williamsbbfatal_log() {
8392b42cb3SPatrick Williams	if [ -p ${LOGFIFO} ] ; then
8492b42cb3SPatrick Williams		printf "%b\0" "bbfatal_log $*" > ${LOGFIFO}
8592b42cb3SPatrick Williams	else
8692b42cb3SPatrick Williams		echo "ERROR: $*"
8792b42cb3SPatrick Williams	fi
8892b42cb3SPatrick Williams	exit 1
8992b42cb3SPatrick Williams}
9092b42cb3SPatrick Williams
9192b42cb3SPatrick Williams# Print debug messages. These are appropriate for progress checkpoint
9292b42cb3SPatrick Williams# messages to the logs. Depending on the debug log level, they may also
9392b42cb3SPatrick Williams# go to the console.
9492b42cb3SPatrick Williams# Output: logs console
9592b42cb3SPatrick Williams# Usage: bbdebug 1 "first level debug message"
9692b42cb3SPatrick Williams#        bbdebug 2 "second level debug message"
9792b42cb3SPatrick Williamsbbdebug() {
9892b42cb3SPatrick Williams	USAGE='Usage: bbdebug [123] "message"'
9992b42cb3SPatrick Williams	if [ $# -lt 2 ]; then
10092b42cb3SPatrick Williams		bbfatal "$USAGE"
10192b42cb3SPatrick Williams	fi
10292b42cb3SPatrick Williams
10392b42cb3SPatrick Williams	# Strip off the debug level and ensure it is an integer
10492b42cb3SPatrick Williams	DBGLVL=$1; shift
10592b42cb3SPatrick Williams	NONDIGITS=$(echo "$DBGLVL" | tr -d "[:digit:]")
10692b42cb3SPatrick Williams	if [ "$NONDIGITS" ]; then
10792b42cb3SPatrick Williams		bbfatal "$USAGE"
10892b42cb3SPatrick Williams	fi
10992b42cb3SPatrick Williams
11092b42cb3SPatrick Williams	# All debug output is printed to the logs
11192b42cb3SPatrick Williams	if [ -p ${LOGFIFO} ] ; then
11292b42cb3SPatrick Williams		printf "%b\0" "bbdebug $DBGLVL $*" > ${LOGFIFO}
11392b42cb3SPatrick Williams	else
11492b42cb3SPatrick Williams		echo "DEBUG: $*"
11592b42cb3SPatrick Williams	fi
11692b42cb3SPatrick Williams}
11792b42cb3SPatrick Williams
118