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
|
#!/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
# Export for other depot_tools scripts to re-use.
export DEPOT_TOOLS_DIR="${DEPOT_TOOLS_DIR:-$(dirname "$0")}"
# 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
base_dir="${DEPOT_TOOLS_DIR}"
if [ -e "$base_dir/.disable_auto_update" ]; then
exit
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=$?
# 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
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)
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 "DEPOT_TOOLS_UPDATE environment variable is 0, skipping update. Set DEPOT_TOOLS_UPDATE to 1 to force update." >&2
else
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 &> /dev/null
# 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
|