summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2024-06-07 14:16:58 +0100
committerLeah Rowe <leah@libreboot.org>2024-06-07 14:16:58 +0100
commitd43247683b49e24bd01da6ac9b9676b6b0689568 (patch)
tree81f731e18f073faf605b8a82cb86a9ef7011ea2e
parenta4549e935e29ec8635b9737497d49adc98e2a3d3 (diff)
git.sh: download "depend" projects *before*
don't do it after, because that means the main project is saved under src/ before we know whether the subrepo was downloaded. the "depend" variable (in config/git/) is no longer used for projects that go in subdirectories of a parent; now, we use config/submodules/ for this type of dependency. download the "depend" projects (as per config/git/) first. this way, if they fail, the main one will fail, but if they succeed and main fails, you can just run the main download again and it won't fail. this fixes a bug where, depending on how you download a set of projects and depending on the order which you do so, a given project can become un-downloadable on current design, because git will complain that a directory already exists. this fix is done not only in code (by this commit), but by prior configuration changes. Signed-off-by: Leah Rowe <leah@libreboot.org>
-rwxr-xr-xinclude/git.sh6
-rwxr-xr-xscript/trees2
2 files changed, 3 insertions, 5 deletions
diff --git a/include/git.sh b/include/git.sh
index 17333a86..2ebefc71 100755
--- a/include/git.sh
+++ b/include/git.sh
@@ -57,11 +57,10 @@ fetch_project_repo()
[ -z "${loc+x}" ] && $err "fetch_project_repo $project: loc not set"
[ -z "${url+x}" ] && $err "fetch_project_repo $project: url not set"
- clone_project
[ -z "$depend" ] || for d in $depend ; do
x_ ./update trees -f $d
done
- rm -Rf "$tmpgit" || $err "fetch_repo: !rm -Rf $tmpgit"
+ clone_project
for x in config/git/*; do
[ -f "$x" ] && nuke "${x##*/}" "src/${x##*/}"; continue
@@ -74,6 +73,8 @@ clone_project()
loc="src/$loc"
e "$loc" d && return 0
+ remkdir "${tmpgit%/*}"
+
git clone $url "$tmpgit" || git clone $bkup_url "$tmpgit" \
|| $err "clone_project: could not download $project"
git_prep "$PWD/config/$project/patches" "$loc"
@@ -107,7 +108,6 @@ prep_submodules()
[ -n "$tree" ] && mdir="$mdir/$tree"
[ -f "$mdir/module.list" ] || return 0
-
cat "$mdir/module.list" > "$tmpdir/modules" || \
$err "!cp $mdir/module.list $tmpdir/modules"
diff --git a/script/trees b/script/trees
index 9cceeab4..faaddc5f 100755
--- a/script/trees
+++ b/script/trees
@@ -39,8 +39,6 @@ main()
cfgsdir="config/$project"
listfile="$datadir/build.list" # needed on multi, optional on single
- remkdir "${tmpgit%/*}"
-
_cmd="build_projects"
singletree "$project" || _cmd="build_targets"
$_cmd $@