summaryrefslogtreecommitdiff
path: root/include/get.sh
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2025-09-02 06:21:10 +0100
committerLeah Rowe <leah@libreboot.org>2025-09-02 06:33:31 +0100
commit01a779d4ebcdfc7df406263aeb1dffb800eb0220 (patch)
tree801eeb07853aa9c2926471c09f79c2f40ab761de /include/get.sh
parent0d107ad872b1eb87dcd46e8dc66963696ad08d82 (diff)
get.sh: put tmpclone dirs in xbtmp
and generate them, don't hardcode them - this reduces the chance of race conditions, which we have seen in the past and which current execution flow in xbmk even mitigates in a few places, by doing things in a certain order. this change makes the code more robust and easier to maintain. Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'include/get.sh')
-rw-r--r--include/get.sh13
1 files changed, 8 insertions, 5 deletions
diff --git a/include/get.sh b/include/get.sh
index 4926699b..9290ebe3 100644
--- a/include/get.sh
+++ b/include/get.sh
@@ -3,10 +3,7 @@
# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com>
eval "`setvars "" loc url bkup_url subcurl subhash subgit subgit_bkup \
- depend subcurl_bkup`"
-
-tmpgit="$xbtmp/gitclone"
-tmpgitcache="$XBMK_CACHE/tmpgit"
+ depend subcurl_bkup tmpgit`"
fetch_targets()
{
@@ -31,7 +28,7 @@ clone_project()
loc="$XBMK_CACHE/clone/$project" && singletree "$project" && \
loc="src/$project"
- e "$loc" d missing && remkdir "${tmpgit%/*}" && git_prep \
+ e "$loc" d missing && git_prep \
"$url" "$bkup_url" "$xbmkpwd/config/$project/patches" "$loc"; :
}
@@ -42,6 +39,10 @@ git_prep()
_patchdir="$3"
_loc="$4" # $1 and $2 are gitrepo and gitrepo_backup
+ tmpgit="`mktemp -d || err "can't make tmpgit"`" || err
+ x_ rm -Rf "$tmpgit"
+ x_ mkdir -p "${tmpgit%/*}"
+
chkvars rev
xbget git "$1" "$2" "$tmpgit" "$rev" "$_patchdir"
if singletree "$project" || [ $# -gt 4 ]; then
@@ -134,7 +135,9 @@ try_copy()
try_git()
{
gitdest="`findpath "$1"`" || err "Can't get readpath for '$1'"
+ tmpgitcache="`mktemp -d || err "can't make tmpgitcache"`" || err
x_ rm -Rf "$tmpgitcache"
+ x_ mkdir -p "${tmpgitcache%/*}"
[ -d "$gitdest" ] || ( x_ git clone "$2" "$tmpgitcache" ) || return 1
[ -d "$gitdest" ] || x_ mkdir -p "${gitdest%/*}"