mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-19 19:23:24 +02:00
init.sh: move TMPDIR handling to own functions
this makes xbmk_set_env easier to read Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
+65
-55
@@ -15,7 +15,7 @@ projectsite="https://libreboot.org/"
|
|||||||
|
|
||||||
eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \
|
eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \
|
||||||
datadir version xbmkpwd relname xbmkpwd xbtmp python pyver xbloc \
|
datadir version xbmkpwd relname xbmkpwd xbtmp python pyver xbloc \
|
||||||
xbmklock cvxbmk cvchk xbmkpath`"
|
xbmklock cvxbmk cvchk xbmkpath is_child`"
|
||||||
|
|
||||||
xbmk_init()
|
xbmk_init()
|
||||||
{
|
{
|
||||||
@@ -70,65 +70,13 @@ xbmk_set_env()
|
|||||||
[ -f "$xbmklock" ] && is_child="y"
|
[ -f "$xbmklock" ] && is_child="y"
|
||||||
|
|
||||||
if [ "$is_child" = "y" ]; then
|
if [ "$is_child" = "y" ]; then
|
||||||
eval `setvars "" xbtmp badtmp xbtmpchk xbtmpname`
|
xbmk_child_set_tmp
|
||||||
|
|
||||||
[ -z "${TMPDIR+x}" ] && export TMPDIR="/tmp"
|
|
||||||
|
|
||||||
# extremely pedantic safety checks on TMPDIR
|
|
||||||
xbtmpchk="`findpath "$TMPDIR" || err`" || err
|
|
||||||
[ "$xbtmpchk" = "${xbtmpchk#/tmp/}" ] && \
|
|
||||||
badtmp="not a subdirectory in /tmp"
|
|
||||||
[ -z "$badtmp" ] && xbtmpname="${xbtmpchk#/tmp/}" && \
|
|
||||||
[ -z "$xbtmpchk" ] && badtmp="name after /tmp is empty"
|
|
||||||
[ -z "$badtmp" ] && [ "$xbtmpname" != "${xbtmpname#*/}" ] && \
|
|
||||||
badtmp="'$TMPDIR' is a subdirectory in a subdir of /tmp"
|
|
||||||
[ -z "$badtmp" ] && [ -L "$xbtmpchk" ] && badtmp="is a symlink"
|
|
||||||
[ -z "$badtmp" ] && [ ! -d "$xbtmpchk" ] && \
|
|
||||||
badtmp="not a directory"
|
|
||||||
if [ -z "$badtmp" ]; then
|
|
||||||
# final check: check if TMPDIR changed
|
|
||||||
locktmp=""
|
|
||||||
read -r locktmp < "$xbmklock" || err "!read $xbmklock"
|
|
||||||
[ "$locktmp" = "$xbtmpchk" ] || \
|
|
||||||
badtmp="TMPDIR '$xbtmpchk' changed; was '$locktmp'"
|
|
||||||
fi
|
|
||||||
[ -n "$badtmp" ] && \
|
|
||||||
printf "bad TMPDIR initialisation, '%s': %s\n" \
|
|
||||||
"$TMPDIR" "$badtmp" 1>&2
|
|
||||||
[ -n "$badtmp" ] && err \
|
|
||||||
"'$xbmklock' present with bad tmpdir. is a build running?"
|
|
||||||
|
|
||||||
xbtmp="$xbtmpchk"
|
|
||||||
export TMPDIR="$xbtmpchk"
|
|
||||||
|
|
||||||
[ -z "${XBMK_CACHE+x}" ] && err "XBMK_CACHE unset on child"
|
|
||||||
[ -z "${XBMK_THREADS+x}" ] && xbmk_set_threads
|
|
||||||
e "lock" f missing && err "lock file absent on child"
|
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# parent instance of xbmk, so continue.
|
# parent instance of xbmk, so continue.
|
||||||
|
|
||||||
export TMPDIR="/tmp"
|
xbmk_parent_check_tmp
|
||||||
|
|
||||||
xbmklist="`mktemp || err "can't make tmplist"`" || err
|
|
||||||
x_ rm -f "$xbmklist"
|
|
||||||
x_ touch "$xbmklist"
|
|
||||||
for xtmpdir in /tmp/xbmk_*; do
|
|
||||||
[ -e "$xtmpdir" ] || continue
|
|
||||||
printf "%s\n" "$xtmpdir" >> "$xbmklist" || \
|
|
||||||
err "can't write '$xtmpdir' to file: '$xbmklist'"; :
|
|
||||||
done
|
|
||||||
|
|
||||||
# set up a unified temporary directory, for common deletion later:
|
|
||||||
export TMPDIR="`mktemp -d -t xbmk_XXXXXXXX || err`" || err
|
|
||||||
xbtmp="$TMPDIR"
|
|
||||||
|
|
||||||
while read -r xtmpdir; do
|
|
||||||
[ "$xtmpdir" = "$xbtmp" ] && err \
|
|
||||||
"'$xbtmp' existed previously (possible race condition)"; :
|
|
||||||
done < "$xbmklist" || err "Couldn't read xbmklist: '$xbmklist'"
|
|
||||||
x_ rm -f "$xbmklist"
|
|
||||||
|
|
||||||
[ -f "$xbmklock" ] && err "'$xbmklock' exists. Is a build running?"
|
[ -f "$xbmklock" ] && err "'$xbmklock' exists. Is a build running?"
|
||||||
printf "%s\n" "$xbtmp" > "$xbmklock" || \
|
printf "%s\n" "$xbtmp" > "$xbmklock" || \
|
||||||
@@ -157,6 +105,68 @@ xbmk_set_env()
|
|||||||
xbmk_set_pyver
|
xbmk_set_pyver
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xbmk_child_set_tmp()
|
||||||
|
{
|
||||||
|
eval `setvars "" xbtmp badtmp xbtmpchk xbtmpname`
|
||||||
|
|
||||||
|
[ -z "${TMPDIR+x}" ] && export TMPDIR="/tmp"
|
||||||
|
|
||||||
|
# extremely pedantic safety checks on TMPDIR
|
||||||
|
xbtmpchk="`findpath "$TMPDIR" || err`" || err
|
||||||
|
[ "$xbtmpchk" = "${xbtmpchk#/tmp/}" ] && \
|
||||||
|
badtmp="not a subdirectory in /tmp"
|
||||||
|
[ -z "$badtmp" ] && xbtmpname="${xbtmpchk#/tmp/}" && \
|
||||||
|
[ -z "$xbtmpchk" ] && badtmp="name after /tmp is empty"
|
||||||
|
[ -z "$badtmp" ] && [ "$xbtmpname" != "${xbtmpname#*/}" ] && \
|
||||||
|
badtmp="'$TMPDIR' is a subdirectory in a subdir of /tmp"
|
||||||
|
[ -z "$badtmp" ] && [ -L "$xbtmpchk" ] && badtmp="is a symlink"
|
||||||
|
[ -z "$badtmp" ] && [ ! -d "$xbtmpchk" ] && \
|
||||||
|
badtmp="not a directory"
|
||||||
|
if [ -z "$badtmp" ]; then
|
||||||
|
# final check: check if TMPDIR changed
|
||||||
|
locktmp=""
|
||||||
|
read -r locktmp < "$xbmklock" || err "!read $xbmklock"
|
||||||
|
[ "$locktmp" = "$xbtmpchk" ] || \
|
||||||
|
badtmp="TMPDIR '$xbtmpchk' changed; was '$locktmp'"
|
||||||
|
fi
|
||||||
|
[ -n "$badtmp" ] && \
|
||||||
|
printf "bad TMPDIR initialisation, '%s': %s\n" \
|
||||||
|
"$TMPDIR" "$badtmp" 1>&2
|
||||||
|
[ -n "$badtmp" ] && err \
|
||||||
|
"'$xbmklock' present with bad tmpdir. is a build running?"
|
||||||
|
|
||||||
|
xbtmp="$xbtmpchk"
|
||||||
|
export TMPDIR="$xbtmpchk"
|
||||||
|
|
||||||
|
[ -z "${XBMK_CACHE+x}" ] && err "XBMK_CACHE unset on child"
|
||||||
|
[ -z "${XBMK_THREADS+x}" ] && xbmk_set_threads
|
||||||
|
e "lock" f missing && err "lock file absent on child"
|
||||||
|
}
|
||||||
|
|
||||||
|
xbmk_parent_check_tmp()
|
||||||
|
{
|
||||||
|
export TMPDIR="/tmp"
|
||||||
|
|
||||||
|
xbmklist="`mktemp || err "can't make tmplist"`" || err
|
||||||
|
x_ rm -f "$xbmklist"
|
||||||
|
x_ touch "$xbmklist"
|
||||||
|
for xtmpdir in /tmp/xbmk_*; do
|
||||||
|
[ -e "$xtmpdir" ] || continue
|
||||||
|
printf "%s\n" "$xtmpdir" >> "$xbmklist" || \
|
||||||
|
err "can't write '$xtmpdir' to file: '$xbmklist'"; :
|
||||||
|
done
|
||||||
|
|
||||||
|
# set up a unified temporary directory, for common deletion later:
|
||||||
|
export TMPDIR="`mktemp -d -t xbmk_XXXXXXXX || err`" || err
|
||||||
|
xbtmp="$TMPDIR"
|
||||||
|
|
||||||
|
while read -r xtmpdir; do
|
||||||
|
[ "$xtmpdir" = "$xbtmp" ] && err \
|
||||||
|
"'$xbtmp' existed previously (possible race condition)"; :
|
||||||
|
done < "$xbmklist" || err "Couldn't read xbmklist: '$xbmklist'"
|
||||||
|
x_ rm -f "$xbmklist"
|
||||||
|
}
|
||||||
|
|
||||||
xbmk_set_threads()
|
xbmk_set_threads()
|
||||||
{
|
{
|
||||||
[ -z "${XBMK_THREADS+x}" ] && export XBMK_THREADS=1
|
[ -z "${XBMK_THREADS+x}" ] && export XBMK_THREADS=1
|
||||||
|
|||||||
Reference in New Issue
Block a user