-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathupdate_depot_tools
executable file
·153 lines (136 loc) · 4.41 KB
/
update_depot_tools
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/usr/bin/env bash
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This script will try to sync the bootstrap directories and then defer control.
if [ "$USER" == "root" ];
then
echo Running depot tools as root is sad.
exit
fi
# Test if this script is running under a MSYS install. This is likely an error
# if it is, so we warn the user accordingly.
OUTPUT="$(uname | grep 'MSYS')"
MSYS=$?
if [ $MSYS = 0 ]; then
echo 'WARNING: It looks like you are running these tools from an MSYS shell'
echo '(as opposed to a MinGW shell). This shell is not supported and may'
echo 'fail in mysterious ways.'
echo
echo 'To run the supported MinGW shell, use `git bash`, or use `bin/bash.exe`'
echo 'in your MinGW installation, as opposed to `usr/bin/bash.exe`.'
echo
fi
# Test if this script is running under a MinGW install. If it is, we will
# hardcode the paths to Git where possible.
OUTPUT="$(uname | grep 'MINGW')"
MINGW=$?
if [ $MINGW = 0 ]; then
base_dir="${0%/*}"
else
base_dir=$(dirname "$0")
if [ -L "$base_dir" ]; then
base_dir=`cd "$base_dir" && pwd -P`
fi
fi
if [ -e "$base_dir/.disable_auto_update" ]; then
exit
fi
# We want to update the bundled tools even under MinGW.
if [ $MINGW = 0 ]; then
$COMSPEC //c `cygpath -w "$base_dir/bootstrap/win_tools.bat"`
case $? in
123)
# msys environment was upgraded, need to quit.
exit 123
;;
0)
;;
*)
exit $?
esac
fi
CANONICAL_GIT_URL="https://chromium.googlesource.com/chromium/tools/depot_tools.git"
GIT="git"
if [ -e "$base_dir/git.bat" -a $MINGW = 0 ]; then
GIT="cmd.exe //c \"$base_dir\\git.bat\""
fi
# Test git and git --version.
function test_git {
local GITV
GITV="$(eval "$GIT" --version)" || {
echo "git isn't installed, please install it"
exit 1
}
GITV="${GITV##* }" # Only examine last word (i.e. version number)
local GITD=( ${GITV//./ } ) # Split version number into decimals
if ((GITD[0] < 1 || (GITD[0] == 2 && GITD[1] < 8) )); then
echo "git version is ${GITV}, please update to a version later than 2.8"
exit 1
fi
}
function update_git_repo {
remote_url=$(eval "$GIT" config --get remote.origin.url)
if [ -n "$remote_url" -a "$remote_url" != "$CANONICAL_GIT_URL" ]; then
echo "Your copy of depot_tools is configured to fetch from an obsolete URL:"
echo
echo " $remote_url"
echo
read -t 60 -p "OK to update it to $CANONICAL_GIT_URL ? [Y/n] " -n 1
STATUS=$?
echo
if [[ $STATUS -ne 0 ]]; then
echo "Timeout; not updating remote URL."
elif [ -z "$REPLY" -o "$REPLY" = "Y" -o "$REPLY" = "y" ]; then
eval "$GIT" config remote.origin.url "$CANONICAL_GIT_URL"
echo "Remote URL updated."
fi
fi
local GIT_CMD_TXT STATUS
GIT_CMD_TXT=$(git fetch -q origin main 2>&1)
STATUS=$?
if [[ $STATUS -ne 0 ]]; then
echo "depot_tools update failed. Couldn't fetch main branch."
echo "Retry later or reclone depot_tools" >&2
echo "$GIT_CMD_TXT" >&2
else
GIT_CMD_TXT=$(git checkout -q origin/main 2>&1)
STATUS=$?
if [[ $STATUS -ne 0 ]]; then
echo "depot_tools update failed. Conflict in $base_dir" >&2
echo "$GIT_CMD_TXT" >&2
fi
fi
# Having python3 on depot_tools causes problems if users put depot_tools in
# PATH before system's python3, so remove it if present.
# See crbug.com/1017812.
if [[ -e python3 ]]; then
rm python3
fi
return $STATUS
}
# Update git checkouts.
if [ "X$DEPOT_TOOLS_UPDATE" != "X0" ]; then
echo "Updating depot_tools..." 1>&2
if [ -e "$base_dir/.git" ]; then
cd "$base_dir"
update_git_repo
UPDATE_RESULT=$?
cd - > /dev/null
if [[ $UPDATE_RESULT -ne 0 ]]; then
exit $UPDATE_RESULT
fi
else
echo "Warning: Your depot_tools directory does not appear to be a git repository, and cannot be updated." 1>&2
echo "Consider deleting your depot_tools directory and following the instructions at https://www.chromium.org/developers/how-tos/install-depot-tools/ to reinstall it." 1>&2
fi
# Sync CIPD-boostrapped packages.
source "$base_dir/cipd_bin_setup.sh"
cipd_bin_setup
# Don't bootstrap Python 3 on windows, since it is already done by
# bootstrap/win_tools.bat.
if [ "X$MINGW" != "X0" -a "X$DEPOT_TOOLS_BOOTSTRAP_PYTHON3" != "X0" ]; then
source "$base_dir/bootstrap_python3"
bootstrap_python3
fi
fi