summaryrefslogtreecommitdiff
path: root/include/git.sh
diff options
context:
space:
mode:
Diffstat (limited to 'include/git.sh')
-rw-r--r--include/git.sh72
1 files changed, 31 insertions, 41 deletions
diff --git a/include/git.sh b/include/git.sh
index 21a1f3b7..4fa904ba 100644
--- a/include/git.sh
+++ b/include/git.sh
@@ -5,6 +5,8 @@
eval "`setvars "" loc url bkup_url subfile subhash subrepo subrepo_bkup \
depend subfile_bkup repofail`"
+tmpgit="$xbmkpwd/tmp/gitclone"
+
fetch_targets()
{
[ -n "$tree_depend" ] && [ "$tree_depend" != "$tree" ] && \
@@ -12,8 +14,9 @@ fetch_targets()
e "src/$project/$tree" d && return 0
printf "Creating %s tree %s\n" "$project" "$tree"
- git_prep "$loc" "$loc" "$PWD/$configdir/$tree/patches" \
- "src/$project/$tree" u; nuke "$project/$tree" "$project/$tree"
+ git_prep "$loc" "$loc" "$xbmkpwd/$configdir/$tree/patches" \
+ "src/$project/$tree" with_submodules
+ nuke "$project/$tree" "$project/$tree"
}
fetch_project()
@@ -31,8 +34,8 @@ fetch_project()
clone_project
for x in config/git/*; do
- [ -d "$x" ] && nuke "${x##*/}" "src/${x##*/}" 2>/dev/null
- done; return 0
+ [ -d "$x" ] && nuke "${x##*/}" "src/${x##*/}" 2>/dev/null; :
+ done; :
}
clone_project()
@@ -42,37 +45,39 @@ clone_project()
printf "Downloading project '%s' to '%s'\n" "$project" "$loc"
e "$loc" d missing && remkdir "${tmpgit%/*}" && git_prep \
- "$url" "$bkup_url" "$PWD/config/$project/patches" "$loc"; :
+ "$url" "$bkup_url" "$xbmkpwd/config/$project/patches" "$loc"; :
}
git_prep()
{
- _patchdir="$3"; _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup
+ _patchdir="$3"
+ _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup
- chkvars rev; tmpclone "$1" "$2" "$tmpgit" "$rev" "$_patchdir"
+ chkvars rev
+ tmpclone "$1" "$2" "$tmpgit" "$rev" "$_patchdir"
if singletree "$project" || [ $# -gt 4 ]; then
- prep_submodules "$_loc"; fi
+ [ -f "$mdir/module.list" ] && while read -r msrcdir; do
+ fetch_submodule "$msrcdir"
+ done < "$mdir/module.list"; :
+ fi
- [ "$project" = "coreboot" ] && [ -n "$xtree" ] && [ $# -gt 2 ] && \
- [ "$xtree" != "$tree" ] && link_crossgcc "$_loc"
- [ "$XBMK_RELEASE" = "y" ] && \
- [ "$_loc" != "$XBMK_CACHE/repo/$project" ] && rmgit "$tmpgit"
+ if [ "$project" = "coreboot" ] && [ -n "$xtree" ] && [ $# -gt 2 ] && \
+ [ "$xtree" != "$tree" ]; then (
+ x_ cd "$tmpgit/util" && x_ rm -Rf crossgcc
+ x_ ln -s "../../$xtree/util/crossgcc" crossgcc
+ ) || $err "$_loc: !xgcc link"; fi
- move_repo "$_loc"
-}
+ [ "$_loc" != "$XBMK_CACHE/repo/$project" ] && \
+ [ "$XBMK_RELEASE" = "y" ] && rmgit "$tmpgit"
-prep_submodules()
-{
- [ -f "$mdir/module.list" ] && while read -r msrcdir; do
- fetch_submodule "$msrcdir"
- done < "$mdir/module.list"; return 0
+ [ "$_loc" = "${_loc%/*}" ] || x_ mkdir -p "${_loc%/*}"
+ mv "$tmpgit" "$_loc" || $err "git_prep: !mv $tmpgit $_loc"
}
fetch_submodule()
{
- mcfgdir="$mdir/${1##*/}"
- eval "`setvars "" subhash subrepo subrepo_bkup subfile subfile_bkup \
- st`"
+ mcfgdir="$mdir/${1##*/}"; eval \
+ "`setvars "" subhash subrepo subrepo_bkup subfile subfile_bkup st`"
[ ! -f "$mcfgdir/module.cfg" ] || . "$mcfgdir/module.cfg" || \
$err "! . $mcfgdir/module.cfg"
@@ -123,32 +128,17 @@ tmpclone()
git_am_patches()
{
for p in "$2/"*; do
- [ -L "$p" ] && continue; [ -e "$p" ] || continue
+ [ -L "$p" ] && continue
+ [ -e "$p" ] || continue
[ -d "$p" ] && git_am_patches "$1" "$p" && continue
[ ! -f "$p" ] || git -C "$1" am "$p" || $err "$1 $2: !am $p"
- done; return 0
-}
-
-link_crossgcc()
-{
- (
- x_ cd "$tmpgit/util" && x_ rm -Rf crossgcc
- ln -s "../../$xtree/util/crossgcc" crossgcc || $err "$1: !xgcc link"
- ) || $err "$1: !xgcc link"
-}
-
-move_repo()
-{
- [ "$1" = "${1%/*}" ] || x_ mkdir -p "${1%/*}"
- mv "$tmpgit" "$1" || $err "git_prep: !mv $tmpgit $1"
+ done; :
}
-# can delete from multi- and single-tree projects.
-# called from script/trees when downloading sources.
nuke()
{
e "config/${1%/}/nuke.list" f missing || while read -r nukefile; do
rmf="src/${2%/}/$nukefile" && [ -L "$rmf" ] && continue
e "$rmf" e missing || rm -Rf "$rmf" || $err "!rm $rmf, ${2%/}"
- done < "config/${1%/}/nuke.list"; return 0
+ done < "config/${1%/}/nuke.list"; :
}