1#!/bin/bash 2# Copyright 2023 The gRPC Authors 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16# Generate linux RBE configs using rbe_configs_gen. 17# See https://github.com/bazelbuild/bazel-toolchains#rbe_configs_gen---cli-tool-to-generate-configs 18 19set -ex 20 21cd $(dirname $0)/../.. 22 23REPO_ROOT="$(pwd)" 24 25TEMP_DIR="$(mktemp -d)" 26pushd "${TEMP_DIR}" 27# Build the "rbe_configs_gen" binary using the official instructions. 28git clone https://github.com/bazelbuild/bazel-toolchains.git 29cd bazel-toolchains 30# Build "rbe_configs_gen" binary under docker and put it to the current directory. 31docker run --rm -v $PWD:/srcdir -w /srcdir golang:1.16 go build -o rbe_configs_gen ./cmd/rbe_configs_gen/rbe_configs_gen.go 32popd 33 34# location of the "rbe_config_gen" binary as build by the previous step. 35RBE_CONFIGS_GEN_TOOL_PATH="${TEMP_DIR}/bazel-toolchains/rbe_configs_gen" 36 37# Actions on RBE will run under a dedicated docker image from our collection of testing docker images. 38LINUX_RBE_DOCKERFILE_DIR=tools/dockerfile/test/rbe_ubuntu2004 39# Use the "current version" of the above dockerfile. 40LINUX_RBE_DOCKER_IMAGE=$(cat ${LINUX_RBE_DOCKERFILE_DIR}.current_version) 41 42# Bazel version used for configuring 43# Needs to be one of the versions from bazel/supported_versions.txt chosen so that the result is compatible 44# with other supported bazel versions. 45BAZEL_VERSION=6.1.2 46 47# TODO(jtattermusch): experiment with --cpp_env_json to simplify bazel build configuration. 48 49# Where to store the generated configs (relative to repo root) 50CONFIG_OUTPUT_PATH=third_party/toolchains/rbe_ubuntu2004 51 52# Delete old generated configs. 53rm -rf "${REPO_ROOT}/${CONFIG_OUTPUT_PATH}" 54 55${RBE_CONFIGS_GEN_TOOL_PATH} \ 56 --bazel_version="${BAZEL_VERSION}" \ 57 --toolchain_container="${LINUX_RBE_DOCKER_IMAGE}" \ 58 --output_src_root="${REPO_ROOT}" \ 59 --output_config_path="${CONFIG_OUTPUT_PATH}" \ 60 --exec_os=linux \ 61 --target_os=linux \ 62 --generate_java_configs=false 63