From 81b5b3931b1c403ccbefff9bc744a82a65a77839 Mon Sep 17 00:00:00 2001 From: Istio Automation Date: Fri, 6 Mar 2020 19:39:56 -0800 Subject: [PATCH] Automator: update common-files@master in istio/istio.io@master (#6811) --- Makefile | 102 +++++++++++++++++++++++++++++++++--- common/.commonfiles.sha | 2 +- common/scripts/run.sh | 53 ------------------- common/scripts/setup_env.sh | 88 ------------------------------- 4 files changed, 96 insertions(+), 149 deletions(-) delete mode 100755 common/scripts/run.sh delete mode 100755 common/scripts/setup_env.sh diff --git a/Makefile b/Makefile index 875f09677e..c8754ad633 100644 --- a/Makefile +++ b/Makefile @@ -30,13 +30,103 @@ SHELL := /bin/bash # figure out all the tools you need in your environment to make that work. export BUILD_WITH_CONTAINER ?= 0 -# Set up environment variables. Using a common script allows the script and makefile to re-use logic -$(shell mkdir -p out) -$(shell $(PWD)/common/scripts/setup_env.sh) +# Name of build container image +IMAGE_NAME ?= build-tools + +# Version of image used within build container +IMAGE_VERSION ?= master-2020-03-05T18-27-04 + +LOCAL_ARCH := $(shell uname -m) +ifeq ($(LOCAL_ARCH),x86_64) + TARGET_ARCH ?= amd64 +else ifeq ($(shell echo $(LOCAL_ARCH) | head -c 5),armv8) + TARGET_ARCH ?= arm64 +else ifeq ($(LOCAL_ARCH),aarch64) + TARGET_ARCH ?= arm64 +else ifeq ($(shell echo $(LOCAL_ARCH) | head -c 4),armv) + TARGET_ARCH ?= arm +else + $(error This system's architecture $(LOCAL_ARCH) isn't supported) +endif + +LOCAL_OS := $(shell uname) +ifeq ($(LOCAL_OS),Linux) + TARGET_OS ?= linux + READLINK_FLAGS="-f" +else ifeq ($(LOCAL_OS),Darwin) + TARGET_OS ?= darwin + READLINK_FLAGS="" +else + $(error This system's OS $(LOCAL_OS) isn't supported) +endif + +export TARGET_OUT ?= $(shell pwd)/out/$(TARGET_OS)_$(TARGET_ARCH) +export TARGET_OUT_LINUX ?= $(shell pwd)/out/linux_amd64 ifeq ($(BUILD_WITH_CONTAINER),1) +export TARGET_OUT = /work/out/$(TARGET_OS)_$(TARGET_ARCH) +export TARGET_OUT_LINUX = /work/out/linux_amd64 +CONTAINER_CLI ?= docker +DOCKER_SOCKET_MOUNT ?= -v /var/run/docker.sock:/var/run/docker.sock +IMG ?= gcr.io/istio-testing/$(IMAGE_NAME):$(IMAGE_VERSION) +UID = $(shell id -u) +GID = `grep '^docker:' /etc/group | cut -f3 -d:` +PWD = $(shell pwd) -RUN = ./common/scripts/run.sh +$(info If you suffer an unexpected failure, please reference: https://github.com/istio/istio/wiki/Troubleshooting-Development-Environment) +$(info Building with the build container: $(IMG).) + +# Determine the timezone across various platforms to pass into the +# docker run operation. This operation assumes zoneinfo is within +# the path of the file. +TIMEZONE=`readlink $(READLINK_FLAGS) /etc/localtime | sed -e 's/^.*zoneinfo\///'` + +# Determine the docker.push credential bind mounts. +# Docker and GCR are supported credentials. At this time docker.push may +# not work well on Docker-For-Mac. This will be handled in a follow-up PR. +CONDITIONAL_HOST_MOUNTS:= + +ifneq (,$(wildcard $(HOME)/.docker)) +$(info Using docker credential directory $(HOME)/.docker.) +CONDITIONAL_HOST_MOUNTS+=--mount type=bind,source="$(HOME)/.docker",destination="/config/.docker",readonly +endif + +ifneq (,$(wildcard $(HOME)/.config/gcloud)) +$(info Using gcr credential directory $(HOME)/.config/gcloud.) +CONDITIONAL_HOST_MOUNTS+=--mount type=bind,source="$(HOME)/.config/gcloud",destination="/config/.config/gcloud",readonly +endif + +ifneq (,$(wildcard $(HOME)/.kube)) +$(info Using local Kubernetes configuration $(HOME)/.kube) +CONDITIONAL_HOST_MOUNTS+=--mount type=bind,source="$(HOME)/.kube",destination="/home/.kube" +endif + +ENV_VARS:= +ifdef HUB +ENV_VARS+=-e HUB="$(HUB)" +endif +ifdef TAG +ENV_VARS+=-e TAG="$(TAG)" +endif + +RUN = $(CONTAINER_CLI) run -t -i --sig-proxy=true -u $(UID):$(GID) --rm \ + -e IN_BUILD_CONTAINER="$(BUILD_WITH_CONTAINER)" \ + -e TZ="$(TIMEZONE)" \ + -e TARGET_ARCH="$(TARGET_ARCH)" \ + -e TARGET_OS="$(TARGET_OS)" \ + -e TARGET_OUT="$(TARGET_OUT)" \ + -e TARGET_OUT_LINUX="$(TARGET_OUT_LINUX)" \ + -e USER="${USER}" \ + -e IMAGE_VERSION="$(IMAGE_VERSION)" \ + $(ENV_VARS) \ + -v /etc/passwd:/etc/passwd:ro \ + $(DOCKER_SOCKET_MOUNT) \ + $(CONTAINER_OPTIONS) \ + --mount type=bind,source="$(PWD)",destination="/work" \ + --mount type=volume,source=go,destination="/go" \ + --mount type=volume,source=gocache,destination="/gocache" \ + $(CONDITIONAL_HOST_MOUNTS) \ + -w /work $(IMG) MAKE = $(RUN) make --no-print-directory -e -f Makefile.core.mk @@ -46,13 +136,11 @@ MAKE = $(RUN) make --no-print-directory -e -f Makefile.core.mk default: @$(MAKE) -shell: - @$(RUN) /bin/bash - .PHONY: default else +$(info Building with your local toolchain.) export GOBIN ?= $(GOPATH)/bin include Makefile.core.mk diff --git a/common/.commonfiles.sha b/common/.commonfiles.sha index ae81d05cfa..93d8326a89 100644 --- a/common/.commonfiles.sha +++ b/common/.commonfiles.sha @@ -1 +1 @@ -dfe763eb1963f7e1205625405693c532a60f6f51 +35fd5021dab786eee474ffc5cb9bddfc3949d316 diff --git a/common/scripts/run.sh b/common/scripts/run.sh deleted file mode 100755 index 1a413101b4..0000000000 --- a/common/scripts/run.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash - -# WARNING: DO NOT EDIT, THIS FILE IS PROBABLY A COPY -# -# The original version of this file is located in the https://github.com/istio/common-files repo. -# If you're looking at this file in a different repo and want to make a change, please go to the -# common-files repo, make the change there and check it in. Then come back to this repo and run -# "make update-common". - -# Copyright Istio Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -e - -WD=$(dirname "$0") -WD=$(cd "$WD"; pwd) - -# shellcheck disable=SC1090 -source "${WD}/setup_env.sh" - -# Override variables with container specific -export TARGET_OUT=${CONTAINER_TARGET_OUT} -export TARGET_OUT_LINUX=${CONTAINER_TARGET_OUT_LINUX} - -# $CONTAINER_OPTIONS becomes an empty arg when quoted, so SC2086 is disabled for the -# following command only -# shellcheck disable=SC2086 -"${CONTAINER_CLI}" run -it --rm \ - -u "${UID}:${DOCKER_GID}" \ - --sig-proxy=true \ - ${DOCKER_SOCKET_MOUNT:--v /var/run/docker.sock:/var/run/docker.sock} \ - -v /etc/passwd:/etc/passwd:ro \ - -v /etc/group:/etc/group:ro \ - $CONTAINER_OPTIONS \ - --env-file <(env | grep -v ${ENV_BLOCKLIST}) \ - -e IN_BUILD_CONTAINER=1 \ - -e TZ="${TIMEZONE:-$TZ}" \ - --mount "type=bind,source=${PWD},destination=/work" \ - --mount "type=volume,source=go,destination=/go" \ - --mount "type=volume,source=gocache,destination=/gocache" \ - ${CONDITIONAL_HOST_MOUNTS} \ - -w /work "${IMG}" "$@" diff --git a/common/scripts/setup_env.sh b/common/scripts/setup_env.sh deleted file mode 100755 index a3d7944696..0000000000 --- a/common/scripts/setup_env.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash - -# WARNING: DO NOT EDIT, THIS FILE IS PROBABLY A COPY -# -# The original version of this file is located in the https://github.com/istio/common-files repo. -# If you're looking at this file in a different repo and want to make a change, please go to the -# common-files repo, make the change there and check it in. Then come back to this repo and run -# "make update-common". - -# Copyright Istio Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -e - -LOCAL_ARCH=$(uname -m) -export LOCAL_ARCH -if [[ ${LOCAL_ARCH} == x86_64 ]]; then - export TARGET_ARCH=amd64 -elif [[ ${LOCAL_ARCH} == armv8* ]]; then - export TARGET_ARCH=arm64 -elif [[ ${LOCAL_ARCH} == aarch64* ]]; then - export TARGET_ARCH=arm64 -elif [[ ${LOCAL_ARCH} == armv* ]]; then - export TARGET_ARCH=arm -else - echo "This system's architecture, ${LOCAL_ARCH}, isn't supported" - exit 1 -fi - -LOCAL_OS=$(uname) -export LOCAL_OS -if [[ $LOCAL_OS == Linux ]]; then - export TARGET_OS=linux - readlink_flags="-f" -elif [[ $LOCAL_OS == Darwin ]]; then - export TARGET_OS=darwin - readlink_flags="" -else - echo "This system's OS, $LOCAL_OS, isn't supported" - exit 1 -fi - -# Build image to use -export IMAGE_VERSION=master-2020-03-05T18-27-04 - -export UID -DOCKER_GID=$(grep '^docker:' /etc/group | cut -f3 -d:) -export DOCKER_GID - -TIMEZONE=$(readlink $readlink_flags /etc/localtime | sed -e 's/^.*zoneinfo\///') -export TIMEZONE - -export TARGET_OUT="${TARGET_OUT:-${PWD}/out/${TARGET_OS}_${TARGET_ARCH}}" -export TARGET_OUT_LINUX="${TARGET_OUT_LINUX:-${PWD}/out/linux_amd64}" - -export CONTAINER_TARGET_OUT="${CONTAINER_TARGET_OUT:-/work/out/${TARGET_OS}_${TARGET_ARCH}}" -export CONTAINER_TARGET_OUT_LINUX="${CONTAINER_TARGET_OUT_LINUX:-/work/out/linux_amd64}" - -export IMG="${IMG:-gcr.io/istio-testing/build-tools:${IMAGE_VERSION}}" - -export CONTAINER_CLI="${CONTAINER_CLI:-docker}" - -export ENV_BLOCKLIST="${ENV_BLOCKLIST:-^_\|PATH\|SHELL\|EDITOR\|TMUX\|USER\|HOME\|PWD\|TERM\|GO\|rvm\|SSH}" - -# Set up conditional host mounts for docker and kubernetes config -export CONDITIONAL_HOST_MOUNTS=${CONDITIONAL_HOST_MOUNTS:-} -if [[ -d "${HOME}/.docker" ]]; then - CONDITIONAL_HOST_MOUNTS+="--mount type=bind,source=${HOME}/.docker,destination=/config/.docker,readonly " -fi -if [[ -d "${HOME}/.config/gcloud" ]]; then - CONDITIONAL_HOST_MOUNTS+="--mount type=bind,source=${HOME}/.config/gcloud,destination=/config/.config/gcloud,readonly " -fi -if [[ -d "${HOME}/.kube" ]]; then - CONDITIONAL_HOST_MOUNTS+="--mount type=bind,source=${HOME}/.kube,destination=/home/.kube " -fi - -export REPO_ROOT=/work