From 01a779d4ebcdfc7df406263aeb1dffb800eb0220 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 2 Sep 2025 06:21:10 +0100 Subject: 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 --- include/get.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'include/get.sh') 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 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%/*}" -- cgit v1.2.1