#!/bin/bash -e # Copyright (c) 2016 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. set -e -o pipefail MYPATH=$(dirname "${BASH_SOURCE[0]}") : ${CIPD_CLIENT_VER:=`cat $MYPATH/cipd_client_version`} : ${CIPD_CLIENT_SRV:='https://chrome-infra-packages.appspot.com'} UNAME=`uname -s | tr '[:upper:]' '[:lower:]'` case $UNAME in linux) PLAT=linux ;; cygwin*|msys*|mingw*) PLAT=windows ;; darwin) PLAT=mac ;; *) echo "UNKNOWN OS: $UNAME" exit 1 esac UNAME=`uname -m | tr '[:upper:]' '[:lower:]'` case $UNAME in x86_64|amd64) ARCH=amd64 ;; s390x) # best-effort support for IBM s390x: crbug.com/764087 ARCH=s390x ;; ppc64) # best-effort support for 64-bit PowerPC: crbug.com/773857 ARCH=ppc64 ;; ppc64le) # best-effort support for 64-bit PowerPC/LE: crbug.com/773857 ARCH=ppc64le ;; aarch64) ARCH=arm64 ;; armv7l) ARCH=armv6l ;; arm*) ARCH=$UNAME ;; *86) ARCH=386 ;; *) echo "UNKNOWN Machine architecture: $UNAME" exit 1 esac URL="$CIPD_CLIENT_SRV/client?platform=${PLAT}-${ARCH}&version=$CIPD_CLIENT_VER" CLIENT="$MYPATH/.cipd_client" USER_AGENT="depot_tools/$(git -C $MYPATH rev-parse HEAD 2>/dev/null || echo "???")" if [ ! -e "$CLIENT" ]; then echo "Bootstrapping cipd client for ${PLAT}-${ARCH} from ${URL}..." # Download the client into a temporary file, then move it into the final # location atomically. # # This wonky tempdir method works on Linux and Mac. CIPD_CLIENT_TMP=$(\ mktemp -p "$MYPATH" 2>/dev/null || \ mktemp "$MYPATH/.cipd_client.XXXXXXX") if hash curl 2> /dev/null ; then curl "$URL" -s --show-error -f -A "$USER_AGENT" -L -o "$CIPD_CLIENT_TMP" elif hash wget 2> /dev/null ; then wget "$URL" -q -U "${USER_AGENT}" -O "${CIPD_CLIENT_TMP}" else echo Your platform is missing a supported fetch command. Please use your package echo manager to install one before continuing: echo echo curl echo wget echo echo Alternately, manually download: echo "$URL" echo To $CLIENT, and then re-run this command. rm "${CIPD_CLIENT_TMP}" exit 1 fi chmod +x "$CIPD_CLIENT_TMP" set +e mv "$CIPD_CLIENT_TMP" "$CLIENT" set -e fi export CIPD_HTTP_USER_AGENT_PREFIX=$USER_AGENT if ! "$CLIENT" selfupdate -version "$CIPD_CLIENT_VER" ; then echo -n "selfupdate failed: " 1>&2 echo "run \`CIPD_HTTP_USER_AGENT_PREFIX=$USER_AGENT/manual $CLIENT selfupdate -version '$CIPD_CLIENT_VER'\` to diagnose" 1>&2 echo "" 1>&2 fi exec "$CLIENT" "${@}"