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