diff options
Diffstat (limited to 'include/err.sh')
-rwxr-xr-x | include/err.sh | 59 |
1 files changed, 40 insertions, 19 deletions
diff --git a/include/err.sh b/include/err.sh index cab81d02..a25effe6 100755 --- a/include/err.sh +++ b/include/err.sh @@ -1,20 +1,43 @@ # SPDX-License-Identifier: MIT -# SPDX-FileCopyrightText: 2022, 2023 Leah Rowe <leah@libreboot.org> +# SPDX-FileCopyrightText: 2022, 2024 Leah Rowe <leah@libreboot.org> + +export LC_COLLATE=C +export LC_ALL=C version=""; versiondate=""; projectname=""; _nogit="" +err="err_"; tmpdir=""; lbmk_status="" -x_() { - [ $# -lt 1 ] || ${@} || err_exit err ${@} -} -xx_() { - [ $# -lt 1 ] || ${@} || err_exit fail ${@} -} +# if "y": a coreboot target won't be built if target.cfg says release="n" +# (this is used to exclude certain build targets from releases) +lbmk_release= +set | grep LBMK_RELEASE 1>/dev/null 2>/dev/null || lbmk_release="n" || : +[ -z "$lbmk_release" ] && lbmk_release="$LBMK_RELEASE" +[ "$lbmk_release" = "n" ] || [ "$lbmk_release" = "y" ] || lbmk_release="n" +export LBMK_RELEASE="$lbmk_release" -err_exit() -{ - _fail="${1}" && shift 1 - echo "Non-zero exit: $@" - $_fail "Unhandled error" +# if set to n via export, status checks will be skipped during +# all builds, and all targets will be built regardless of status. +# this replicates the old behaviour of lbmk, prior to the checks. +set | grep LBMK_STATUS 1>/dev/null 2>/dev/null && lbmk_status="$LBMK_STATUS" +[ "$lbmk_status" = "y" ] || [ "$lbmk_status" = "n" ] || lbmk_status="y" +export LBMK_STATUS="$lbmk_status" + +tmpdir_was_set="y" +set | grep TMPDIR 1>/dev/null 2>/dev/null || tmpdir_was_set="n" +if [ "${tmpdir_was_set}" = "y" ]; then + [ "${TMPDIR%_*}" = "/tmp/lbmk" ] || tmpdir_was_set="n" +fi +if [ "${tmpdir_was_set}" = "n" ]; then + export TMPDIR="/tmp" + tmpdir="$(mktemp -d -t lbmk_XXXXXXXX)" + export TMPDIR="${tmpdir}" +else + export TMPDIR="${TMPDIR}" + tmpdir="${TMPDIR}" +fi + +x_() { + [ $# -lt 1 ] || ${@} || $err "Unhandled non-zero exit: $@"; return 0 } check_git() @@ -30,8 +53,7 @@ check_git() git_err() { printf "You need to set git name/email, like so:\n%s\n\n" "$1" 1>&2 - fail "Git name/email not configured" || \ - err "Git name/email not configured" + $err "Git name/email not configured" } check_project() @@ -49,9 +71,8 @@ check_project() --pretty='%ct' HEAD)" || versiondate="${versiondate_}" for p in projectname version versiondate; do - eval "[ -n \"\$$p\" ] || fail \"$p unset\" || err \"$p unset\"" - p_="x_ printf \"%s\\n\" \"\$$p\" > $p" - eval "x$p_ || $p_" + eval "[ -n \"\$$p\" ] || $err \"$p unset\"" + eval "x_ printf \"%s\\n\" \"\$$p\" > $p" done export LOCALVERSION="-${projectname}-${version%%-*}" } @@ -59,7 +80,7 @@ check_project() setvars() { _setvars="" - [ $# -lt 2 ] && err "setvars: too few arguments" + [ $# -lt 2 ] && $err "setvars: too few arguments" val="${1}" && shift 1 for var in $@; do _setvars="${var}=\"${val}\"; ${_setvars}" @@ -67,7 +88,7 @@ setvars() printf "%s\n" "${_setvars% }" } -err() +err_() { printf "ERROR %s: %s\n" "${0}" "${1}" 1>&2 exit 1 |