summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2024-04-25 19:08:53 +0100
committerLeah Rowe <leah@libreboot.org>2024-04-25 19:08:53 +0100
commit08859bb4a56b282cb566c262bd591d7271308ef3 (patch)
tree8c288084785aab7b159c58adbdc88d61260cdef8
parentf5f2c58a0e06d629b28e2dfb14c5dcf169626568 (diff)
lbmk: export TMPDIR from err.sh, not build
lbmk sets TMPDIR to /tmp, and then creates a tmpdir, then exports *that* as the value of TMPDIR. this unified TMPDIR location then contains all subsequent files and directories, when any script or program makes use of /tmp, via mktemp. at least, that's the theory! in practise, because it was only being properly exported from the main build scripts, subscripts that are then called were not exporting it, at least that is my assumption because in some cases, i found that the coreboot build system was leaving errant files behind outside of our own TMPDIR, and that build system did not seem to be setting TMPDIR itself; more debugging is needed. anyway: use the exact same logic, but do it from err.sh. since err.sh is included from every lbmk script, that means it will always be exported when running every single part of lbmk. this should reduce the chance that mktemp creates files and directories outside of our custom TMPDIR location. this is because in lbmk, we mitigate unhandled tmpdirs/files by unifying it in the manner described, then deleting the entire TMPDIR on exit from the main lbmk parent process (the main script that the user called from, which is always the "build" file). in lbmk, effort is made to clean up temporary files properly, without relying on this catch-all, but we can't rely on that. the catch-all should also be as robust as possible. Signed-off-by: Leah Rowe <leah@libreboot.org>
-rwxr-xr-xbuild16
-rwxr-xr-xinclude/err.sh16
2 files changed, 16 insertions, 16 deletions
diff --git a/build b/build
index 14353245..dbcd6939 100755
--- a/build
+++ b/build
@@ -15,23 +15,9 @@ export LC_ALL=C
export LBMK_RELEASE="$lbmk_release"
-eval "$(setvars "" option aur_notice tmpdir)"
+eval "$(setvars "" option aur_notice)"
err="fail"
-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
-
linkpath="${0}"
linkname="${linkpath##*/}"
buildpath="./script/${linkname}"
diff --git a/include/err.sh b/include/err.sh
index 3cadf042..7a6d3fe5 100755
--- a/include/err.sh
+++ b/include/err.sh
@@ -2,7 +2,7 @@
# SPDX-FileCopyrightText: 2022, 2023 Leah Rowe <leah@libreboot.org>
version=""; versiondate=""; projectname=""; _nogit=""
-err="err_"
+err="err_"; tmpdir=""
# 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)
@@ -11,6 +11,20 @@ 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"
+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
}