diff options
Diffstat (limited to 'include/git.sh')
-rw-r--r-- | include/git.sh | 72 |
1 files changed, 30 insertions, 42 deletions
diff --git a/include/git.sh b/include/git.sh index e5aa4861..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,39 +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" + [ -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" @@ -125,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"; : } |