summaryrefslogtreecommitdiff
path: root/include/err.sh
diff options
context:
space:
mode:
Diffstat (limited to 'include/err.sh')
-rwxr-xr-xinclude/err.sh57
1 files changed, 39 insertions, 18 deletions
diff --git a/include/err.sh b/include/err.sh
index cab81d02..a94275f3 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>
+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