diff options
author | Leah Rowe <leah@libreboot.org> | 2025-09-02 06:21:10 +0100 |
---|---|---|
committer | Leah Rowe <leah@libreboot.org> | 2025-09-02 06:33:31 +0100 |
commit | 01a779d4ebcdfc7df406263aeb1dffb800eb0220 (patch) | |
tree | 801eeb07853aa9c2926471c09f79c2f40ab761de /include/get.sh | |
parent | 0d107ad872b1eb87dcd46e8dc66963696ad08d82 (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.sh | 13 |
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%/*}" |