Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env bash | 1 #!/usr/bin/env bash |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # This script will try to sync the bootstrap directories and then defer control. | 6 # This script will try to sync the bootstrap directories and then defer control. |
| 7 | 7 |
| 8 if [ "$USER" == "root" ]; | 8 if [ "$USER" == "root" ]; |
| 9 then | 9 then |
| 10 echo Running depot tools as root is sad. | 10 echo Running depot tools as root is sad. |
| 11 exit | 11 exit |
| 12 fi | 12 fi |
| 13 | 13 |
| 14 # Test if this script is running under a MSYS install. This is likely an error | 14 # Test if this script is running under a MSYS install. This is likely an error |
| 15 # if it is, so we warn the user accordingly. | 15 # if it is, so we warn the user accordingly. |
| 16 OUTPUT="$(uname | grep 'MSYS')" | 16 OUTPUT="$(uname | grep 'MSYS')" |
| 17 MSYS=$? | 17 MSYS=$? |
| 18 if [ $MSYS = 0 ]; then | 18 if [ $MSYS = 0 ]; then |
| 19 echo 'WARNING: It looks like you are running these tools from an MSYS shell' | 19 echo 'WARNING: It looks like you are running these tools from an MSYS shell' |
| 20 echo '(as opposed to a MinGW shell). This shell is not supported and may' | 20 echo '(as opposed to a MinGW shell). This shell is not supported and may' |
| 21 echo 'fail in mysterious ways.' | 21 echo 'fail in mysterious ways.' |
| 22 echo | 22 echo |
| 23 echo 'To run the supported MinGW shell, use `git bash`, or use `bin/bash.exe`' | 23 echo 'To run the supported MinGW shell, use `git bash`, or use `bin/bash.exe`' |
| 24 echo 'in your MinGW installation, as opposed to `usr/bin/bash.exe`.' | 24 echo 'in your MinGW installation, as opposed to `usr/bin/bash.exe`.' |
| 25 echo | 25 echo |
| 26 fi | 26 fi |
| 27 | 27 |
| 28 # Test if this script is running under a MinGW install. If it is, we will | 28 # Test if this script is running under a MinGW install. If it is, we will |
| 29 # hardcode the paths to SVN and Git where possible. | 29 # hardcode the paths to Git where possible. |
| 30 OUTPUT="$(uname | grep 'MINGW')" | 30 OUTPUT="$(uname | grep 'MINGW')" |
| 31 MINGW=$? | 31 MINGW=$? |
| 32 | 32 |
| 33 if [ $MINGW = 0 ]; then | 33 if [ $MINGW = 0 ]; then |
| 34 base_dir="${0%/*}" | 34 base_dir="${0%/*}" |
| 35 else | 35 else |
| 36 base_dir=$(dirname "$0") | 36 base_dir=$(dirname "$0") |
| 37 if [ -L "$base_dir" ]; then | 37 if [ -L "$base_dir" ]; then |
| 38 base_dir=`cd "$base_dir" && pwd -P` | 38 base_dir=`cd "$base_dir" && pwd -P` |
| 39 fi | 39 fi |
| 40 fi | 40 fi |
| 41 | 41 |
| 42 # We want to update the bundled tools even under MinGW. | 42 # We want to update the bundled tools even under MinGW. |
| 43 if [ $MINGW = 0 ]; then | 43 if [ $MINGW = 0 ]; then |
| 44 $COMSPEC /c `cygpath -w "$base_dir/bootstrap/win/win_tools.bat"` | 44 $COMSPEC /c `cygpath -w "$base_dir/bootstrap/win/win_tools.bat"` |
| 45 case $? in | 45 case $? in |
| 46 123) | 46 123) |
| 47 # msys environment was upgraded, need to quit. | 47 # msys environment was upgraded, need to quit. |
| 48 exit 123 | 48 exit 123 |
| 49 ;; | 49 ;; |
| 50 0) | 50 0) |
| 51 ;; | 51 ;; |
| 52 *) | 52 *) |
| 53 exit $? | 53 exit $? |
| 54 esac | 54 esac |
| 55 fi | 55 fi |
| 56 | 56 |
| 57 CANONICAL_GIT_URL="https://chromium.googlesource.com/chromium/tools/depot_tools. git" | 57 CANONICAL_GIT_URL="https://chromium.googlesource.com/chromium/tools/depot_tools. git" |
| 58 | 58 |
| 59 SVN="svn" | |
| 60 if [ -d "$base_dir/svn_bin" -a $MINGW = 0 ]; then | |
| 61 SVN="$base_dir/svn_bin/svn.exe" | |
| 62 fi | |
| 63 | |
| 64 GIT="git" | 59 GIT="git" |
| 65 if [ -e "$base_dir/git.bat" -a $MINGW = 0 ]; then | 60 if [ -e "$base_dir/git.bat" -a $MINGW = 0 ]; then |
| 66 GIT="cmd.exe //c \"$base_dir\\git.bat\"" | 61 GIT="cmd.exe //c \"$base_dir\\git.bat\"" |
| 67 fi | 62 fi |
| 68 | 63 |
| 69 # Test git and git --version. | 64 # Test git and git --version. |
| 70 function test_git { | 65 function test_git { |
| 71 local GITV | 66 local GITV |
| 72 GITV="$(eval "$GIT" --version)" || { | 67 GITV="$(eval "$GIT" --version)" || { |
| 73 echo "git isn't installed, please install it" | 68 echo "git isn't installed, please install it" |
| 74 exit 1 | 69 exit 1 |
| 75 } | 70 } |
| 76 | 71 |
| 77 GITV="${GITV##* }" # Only examine last word (i.e. version number) | 72 GITV="${GITV##* }" # Only examine last word (i.e. version number) |
| 78 local GITD=( ${GITV//./ } ) # Split version number into decimals | 73 local GITD=( ${GITV//./ } ) # Split version number into decimals |
| 79 if ((GITD[0] < 1 || (GITD[0] == 1 && GITD[1] < 6) )); then | 74 if ((GITD[0] < 1 || (GITD[0] == 1 && GITD[1] < 6) )); then |
|
M-A Ruel
2016/06/21 13:48:13
8?
Actually, we need 2.8 now.
agable
2016/06/21 13:53:11
Nice, done.
| |
| 80 echo "git version is ${GITV}, please update to a version later than 1.6" | 75 echo "git version is ${GITV}, please update to a version later than 1.8.5" |
| 81 exit 1 | 76 exit 1 |
| 82 fi | 77 fi |
| 83 } | 78 } |
| 84 | 79 |
| 85 # Test git svn and git svn --version. | |
| 86 function test_git_svn { | |
| 87 local GITV | |
| 88 GITV="$(eval "$GIT" svn --version)" || { | |
| 89 echo "git-svn isn't installed, please install it" | |
| 90 exit 1 | |
| 91 } | |
| 92 | |
| 93 GITV="${GITV#* version }" # git svn --version has extra output to remove. | |
| 94 GITV="${GITV% (svn*}" | |
| 95 local GITD=( ${GITV//./ } ) # Split version number into decimals | |
| 96 if ((GITD[0] < 1 || (GITD[0] == 1 && GITD[1] < 6) )); then | |
| 97 echo "git version is ${GITV}, please update to a version later than 1.6" | |
| 98 exit 1 | |
| 99 fi | |
| 100 } | |
| 101 | |
| 102 function is_git_clone_repo { | |
| 103 eval "$GIT" config remote.origin.fetch > /dev/null | |
| 104 } | |
| 105 | |
| 106 function update_git_repo { | 80 function update_git_repo { |
| 107 remote_url=$(eval "$GIT" config --get remote.origin.url) | 81 remote_url=$(eval "$GIT" config --get remote.origin.url) |
| 108 if [ -n "$remote_url" -a "$remote_url" != "$CANONICAL_GIT_URL" ]; then | 82 if [ -n "$remote_url" -a "$remote_url" != "$CANONICAL_GIT_URL" ]; then |
| 109 echo "Your copy of depot_tools is configured to fetch from an obsolete URL:" | 83 echo "Your copy of depot_tools is configured to fetch from an obsolete URL:" |
| 110 echo | 84 echo |
| 111 echo " $remote_url" | 85 echo " $remote_url" |
| 112 echo | 86 echo |
| 113 read -t 60 -p "OK to update it to $CANONICAL_GIT_URL ? [Y/n] " -n 1 | 87 read -t 60 -p "OK to update it to $CANONICAL_GIT_URL ? [Y/n] " -n 1 |
| 114 STATUS=$? | 88 STATUS=$? |
| 115 echo | 89 echo |
| 116 if [[ $STATUS -ne 0 ]]; then | 90 if [[ $STATUS -ne 0 ]]; then |
| 117 echo "Timeout; not updating remote URL." | 91 echo "Timeout; not updating remote URL." |
| 118 elif [ -z "$REPLY" -o "$REPLY" = "Y" -o "$REPLY" = "y" ]; then | 92 elif [ -z "$REPLY" -o "$REPLY" = "Y" -o "$REPLY" = "y" ]; then |
| 119 eval "$GIT" config remote.origin.url "$CANONICAL_GIT_URL" | 93 eval "$GIT" config remote.origin.url "$CANONICAL_GIT_URL" |
| 120 echo "Remote URL updated." | 94 echo "Remote URL updated." |
| 121 fi | 95 fi |
| 122 fi | 96 fi |
| 123 | 97 |
| 124 if is_git_clone_repo; then | 98 git fetch -q origin &> /dev/null |
| 125 git fetch -q origin &> /dev/null | 99 local REBASE_TXT STATUS |
| 126 local REBASE_TXT STATUS | 100 REBASE_TXT=$(git rebase -q origin/master 2>&1) |
| 127 REBASE_TXT=$(git rebase -q origin/master 2>&1) | 101 STATUS=$? |
| 128 STATUS=$? | 102 if [[ $STATUS -ne 0 ]]; then |
| 129 if [[ $STATUS -ne 0 ]]; then | 103 echo "depot_tools update failed. Conflict in $base_dir" >&2 |
| 130 echo "depot_tools update failed. Conflict in $base_dir" >&2 | 104 echo "$REBASE_TXT" >&2 |
| 131 echo "$REBASE_TXT" >&2 | 105 git rebase --abort 2> /dev/null |
| 132 git rebase --abort 2> /dev/null | |
| 133 fi | |
| 134 return $STATUS | |
| 135 fi | 106 fi |
| 136 | 107 return $STATUS |
| 137 test_git_svn | |
| 138 # work around a git-svn --quiet bug | |
| 139 OUTPUT=`eval "$GIT" svn rebase -q -q` | |
| 140 if [[ ! "$OUTPUT" == *Current.branch* ]]; then | |
| 141 echo $OUTPUT 1>&2 | |
| 142 fi | |
| 143 return 0 | |
| 144 } | |
| 145 | |
| 146 # Get the current SVN revision. | |
| 147 get_svn_revision() { | |
| 148 LANGUAGE=C "$SVN" info "$base_dir" | \ | |
| 149 awk -F': ' '{ if ($1 == "Last Changed Rev") { print $2 }}' | |
| 150 } | 108 } |
| 151 | 109 |
| 152 # Update git checkouts. | 110 # Update git checkouts. |
| 153 if [ "X$DEPOT_TOOLS_UPDATE" != "X0" -a -e "$base_dir/.git" ] | 111 if [ "X$DEPOT_TOOLS_UPDATE" != "X0" -a -e "$base_dir/.git" ] |
| 154 then | 112 then |
| 155 cd $base_dir | 113 cd $base_dir |
| 156 update_git_repo | 114 update_git_repo |
| 157 cd - > /dev/null | 115 cd - > /dev/null |
| 158 fi | 116 fi |
| 159 | 117 |
| 160 # We're on POSIX. We can now safely look for svn checkout. | 118 # We're on POSIX. We can now safely look for svn checkout. |
| 161 if [ "X$DEPOT_TOOLS_UPDATE" != "X0" -a -e "$base_dir/.svn" ] | 119 if [ "X$DEPOT_TOOLS_UPDATE" != "X0" -a -e "$base_dir/.svn" ] |
| 162 then | 120 then |
| 163 echo "========================" | 121 echo "========================" |
| 164 echo "WARNING: You have an SVN checkout of depot_tools!" | 122 echo "WARNING: You have an SVN checkout of depot_tools!" |
| 165 echo | 123 echo |
| 166 echo "depot_tools is migrating to Git on June 6, 2016. If you still have an" | 124 echo "depot_tools has migrated to Git. You are" |
| 167 echo "SVN checkout then, you will STOP RECEIVING UPDATES to depot_tools." | 125 echo "NO LONGER RECEIVING UPDATES to depot_tools." |
| 168 echo | 126 echo |
| 169 echo "Before that date, please follow the instructions here[1] to get a Git" | 127 echo "You must follow these instructions[1] to get a Git copy of depot_tools." |
| 170 echo "copy of depot_tools." | |
| 171 echo | 128 echo |
| 172 echo "[1]: https://www.chromium.org/developers/how-tos/install-depot-tools" | 129 echo "[1]: https://www.chromium.org/developers/how-tos/install-depot-tools" |
| 173 echo "========================" | 130 echo "========================" |
| 174 # Update the root directory to stay up-to-date with the latest depot_tools. | 131 return 1 |
| 175 BEFORE_REVISION=$(get_svn_revision) | |
| 176 if echo $* | grep -e --force > /dev/null; then | |
| 177 "$SVN" -q revert -R "$base_dir" | |
| 178 fi | |
| 179 "$SVN" -q up "$base_dir" | |
| 180 AFTER_REVISION=$(get_svn_revision) | |
| 181 if [[ "$BEFORE_REVISION" != "$AFTER_REVISION" ]]; then | |
| 182 if [ -z "$DEPOT_TOOLS_HIDE_UPDATED_MESSAGE" ]; then | |
| 183 echo "Depot Tools has been updated to revision $AFTER_REVISION." 1>&2 | |
| 184 fi | |
| 185 fi | |
| 186 fi | 132 fi |
| 187 | 133 |
| 188 find "$base_dir" -iname "*.pyc" -exec rm -f {} \; | 134 find "$base_dir" -iname "*.pyc" -exec rm -f {} \; |
| OLD | NEW |