Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: crup-runner.sh

Issue 13831004: Allow multiple OSes to be checked out with git submodules. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: address nit Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 2
3 update_toplevel () { 3 update_toplevel () {
4 # Don't "pull" if checkout is not on a named branch 4 # Don't "pull" if checkout is not on a named branch
5 if test "$2" = "pull" && ( ! git symbolic-ref HEAD >/dev/null 2>/dev/null ); t hen 5 if test "$2" = "pull" && ( ! git symbolic-ref HEAD >/dev/null 2>/dev/null ); t hen
6 first_args="$1 fetch" 6 first_args="$1 fetch"
7 else 7 else
8 first_args="$1 $2" 8 first_args="$1 $2"
9 fi 9 fi
10 shift 2 10 shift 2
11 echo "[$solution] $first_args $@" 1>&2 11 echo "[$solution] $first_args $@" 1>&2
12 $first_args $@ | sed "s/^/[$solution] /g" 1>&2 12 $first_args $@ | sed "s/^/[$solution] /g" 1>&2
13 status=$? 13 status=$?
14 if [ "$status" -ne 0 ]; then 14 if [ "$status" -ne 0 ]; then
15 exit $status 15 exit $status
16 fi 16 fi
17 } 17 }
18 18
19 set_target_os () { 19 set_target_os () {
20 # Get the os we're building for. On first run, this will be unset. 20 # Get the os we're building for. On first run, this will be unset.
21 target_os=$(git config target.os 2>/dev/null) 21 target_os=$(git config --get-all target.os 2>/dev/null)
22 if [ -z "$target_os" ]; then 22 if [ -z "$target_os" ]; then
23 case $(uname -s) in 23 case $(uname -s) in
24 Linux) target_os=unix ;; 24 Linux) target_os=unix ;;
25 Darwin) target_os=mac ;; 25 Darwin) target_os=mac ;;
26 CYGWIN*|MINGW*) target_os=win ;; 26 CYGWIN*|MINGW*) target_os=win ;;
27 *) 27 *)
28 echo "[$solution] *** No target.os set in .git/config, and I can't" 1>&2 28 echo "[$solution] *** No target.os set in .git/config, and I can't" 1>&2
29 echo "[$solution] *** figure it out from 'uname -s'" 1>&2 29 echo "[$solution] *** figure it out from 'uname -s'" 1>&2
30 exit 1 30 exit 1
31 ;; 31 ;;
(...skipping 16 matching lines...) Expand all
48 fi 48 fi
49 } 49 }
50 50
51 process_submodule () { 51 process_submodule () {
52 # Check whether this submodule should be ignored or updated. 52 # Check whether this submodule should be ignored or updated.
53 # If it's a new submodule, match the os specified in .gitmodules against 53 # If it's a new submodule, match the os specified in .gitmodules against
54 # the os specified in .git/config. 54 # the os specified in .git/config.
55 update_policy=$(git config --get "submodule.$1.update") 55 update_policy=$(git config --get "submodule.$1.update")
56 if [ -z "$update_policy" ]; then 56 if [ -z "$update_policy" ]; then
57 submod_os=$(git config -f .gitmodules --get "submodule.$1.os") 57 submod_os=$(git config -f .gitmodules --get "submodule.$1.os")
58 if [ -n "$submod_os" -a \ 58 if [ -n "$submod_os" -a "$submod_os" != "all" ]; then
59 "$submod_os" != "all" -a \
60 "${submod_os/${target_os}/}" = "${submod_os}" ]; then
61 update_policy=none 59 update_policy=none
60 for os in $target_os; do
61 if [ "${submod_os/${os}/}" != "${submod_os}" ]; then
62 update_policy=checkout
63 fi
64 done
62 else 65 else
66 update_policy=checkout
67 fi
68 if [ "$update_policy" != "none" ]; then
63 git submodule --quiet init "$1" 69 git submodule --quiet init "$1"
64 update_policy=checkout
65 fi 70 fi
66 git config "submodule.$1.update" $update_policy 71 git config "submodule.$1.update" $update_policy
67 fi 72 fi
68 ignore_policy=$(git config --get "submodule.$1.ignore") 73 ignore_policy=$(git config --get "submodule.$1.ignore")
69 if [ -z "$ignore_policy" ]; then 74 if [ -z "$ignore_policy" ]; then
70 git config "submodule.$1.ignore" all 75 git config "submodule.$1.ignore" all
71 fi 76 fi
72 if [ "$update_policy" != "none" ]; then 77 if [ "$update_policy" != "none" ]; then
73 update_submodule_url "$1" 78 update_submodule_url "$1"
74 echo "$solution/$1" 79 echo "$solution/$1"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 submodule="${1#*/}" 118 submodule="${1#*/}"
114 echo "[$solution] updating $submodule" 119 echo "[$solution] updating $submodule"
115 git submodule update --recursive --quiet "$submodule" | 120 git submodule update --recursive --quiet "$submodule" |
116 ( grep -v '^Skipping submodule' || true ) | sed "s|^|[$1] |g" 2>/dev/null 121 ( grep -v '^Skipping submodule' || true ) | sed "s|^|[$1] |g" 2>/dev/null
117 status=$? 122 status=$?
118 if [ "$status" -ne "0" ]; then 123 if [ "$status" -ne "0" ]; then
119 echo "[$solution] FAILED to update $submodule" 124 echo "[$solution] FAILED to update $submodule"
120 fi 125 fi
121 fi 126 fi
122 exit $status 127 exit $status
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698