Browse Source

cipd: allow overriding the location of where cipd binary is installed

Bug: 360140318
Change-Id: I384ffe511a1f05df244cdd282cd1702c242f3380
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5797338
Reviewed-by: Josip Sokcevic <sokcevic@chromium.org>
Commit-Queue: Yiwei Zhang <yiwzhang@google.com>
Yiwei Zhang 1 năm trước cách đây
mục cha
commit
2aba33b703
1 tập tin đã thay đổi với 15 bổ sung9 xóa
  1. 15 9
      cipd

+ 15 - 9
cipd

@@ -16,7 +16,6 @@ fi
 export DEPOT_TOOLS_DIR="${DEPOT_TOOLS_DIR:-$(dirname "${BASH_SOURCE[0]}")}"
 export DEPOT_TOOLS_UNAME_S="${DEPOT_TOOLS_UNAME_S:-$(uname -s | tr '[:upper:]' '[:lower:]')}"
 
-MYPATH="${DEPOT_TOOLS_DIR}"
 CYGWIN=false
 
 # Make sure this starts empty
@@ -89,18 +88,25 @@ fi
 
 # CIPD_BACKEND can be changed to ...-dev for manual testing.
 CIPD_BACKEND="https://chrome-infra-packages.appspot.com"
-VERSION_FILE="${MYPATH}/cipd_client_version"
-
-CLIENT="${MYPATH}/.cipd_client"
+VERSION_FILE="${DEPOT_TOOLS_DIR}/cipd_client_version"
+
+CIPD_ROOT="${DEPOT_TOOLS_DIR}"
+# value in .cipd_client_root file overrides the default root.
+CIPD_ROOT_OVERRIDE_FILE="${DEPOT_TOOLS_DIR}/.cipd_client_root"
+if [ -f "${CIPD_ROOT_OVERRIDE_FILE}" ]; then
+  CIPD_ROOT=$(<"${CIPD_ROOT_OVERRIDE_FILE}")
+  mkdir -p "${CIPD_ROOT}"
+fi
+CLIENT="${CIPD_ROOT}/.cipd_client"
 PLATFORM="${OS}-${ARCH}"
 
 # A value in .cipd_client_platform overrides the "guessed" platform.
-PLATFORM_OVERRIDE_FILE="${MYPATH}/.cipd_client_platform"
+PLATFORM_OVERRIDE_FILE="${DEPOT_TOOLS_DIR}/.cipd_client_platform"
 if [ -f "${PLATFORM_OVERRIDE_FILE}" ]; then
   PLATFORM=$(<"${PLATFORM_OVERRIDE_FILE}")
 fi
 
-USER_AGENT="depot_tools/$(git -C ${MYPATH} rev-parse HEAD 2>/dev/null || echo "???")"
+USER_AGENT="depot_tools/$(git -C ${DEPOT_TOOLS_DIR} rev-parse HEAD 2>/dev/null || echo "???")"
 
 
 # calc_sha256 is "portable" variant of sha256sum. It uses sha256sum when
@@ -174,8 +180,8 @@ function clean_bootstrap() {
   #
   # This wonky tempdir method works on Linux and Mac.
   local CIPD_CLIENT_TMP=$(\
-    mktemp -p "${MYPATH}" 2>/dev/null || \
-    mktemp "${MYPATH}/.cipd_client.XXXXXXX")
+    mktemp -p "${CIPD_ROOT}" 2>/dev/null || \
+    mktemp "${CIPD_ROOT}/.cipd_client.XXXXXXX")
 
   if hash curl 2> /dev/null ; then
     curl "${URL}" -s --show-error -f --retry 3 --retry-delay 5 -A "${USER_AGENT}" -L -o "${CIPD_CLIENT_TMP}"
@@ -233,7 +239,7 @@ function self_update() {
 # crudely search for a CIPD client package name in the .cipd_version JSON file.
 # It has only "instance_id" as the other field (looking like a base64 string),
 # so mismatches are very unlikely.
-INSTALLED_VERSION_FILE="${MYPATH}/.versions/.cipd_client.cipd_version"
+INSTALLED_VERSION_FILE="${CIPD_ROOT}/.versions/.cipd_client.cipd_version"
 if [ -f "${INSTALLED_VERSION_FILE}" ]; then
   JSON_BODY=$(<"${INSTALLED_VERSION_FILE}")
   if [[ "$JSON_BODY" != *"infra/tools/cipd/${PLATFORM}"* ]]; then