1*cc02d7e2SAndroid Build Coastguard Worker#! /bin/bash 2*cc02d7e2SAndroid Build Coastguard Worker# Copyright 2015 gRPC authors. 3*cc02d7e2SAndroid Build Coastguard Worker# 4*cc02d7e2SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*cc02d7e2SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*cc02d7e2SAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*cc02d7e2SAndroid Build Coastguard Worker# 8*cc02d7e2SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*cc02d7e2SAndroid Build Coastguard Worker# 10*cc02d7e2SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*cc02d7e2SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*cc02d7e2SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*cc02d7e2SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*cc02d7e2SAndroid Build Coastguard Worker# limitations under the License. 15*cc02d7e2SAndroid Build Coastguard Worker 16*cc02d7e2SAndroid Build Coastguard Worker 17*cc02d7e2SAndroid Build Coastguard Workerset -e 18*cc02d7e2SAndroid Build Coastguard Worker 19*cc02d7e2SAndroid Build Coastguard Workerexport TEST=${TEST:-false} 20*cc02d7e2SAndroid Build Coastguard Worker 21*cc02d7e2SAndroid Build Coastguard WorkerYAML_OK=$(python3 -c "import yaml; print(yaml.__version__.split('.') >= ['5', '4', '1'])") 22*cc02d7e2SAndroid Build Coastguard Worker 23*cc02d7e2SAndroid Build Coastguard Workerif [[ "${YAML_OK}" != "True" ]]; then 24*cc02d7e2SAndroid Build Coastguard Worker # PyYAML dropped 3.5 support at 5.4.1, which makes 5.3.1 the latest version we 25*cc02d7e2SAndroid Build Coastguard Worker # can use. 26*cc02d7e2SAndroid Build Coastguard Worker python3 -m pip install --upgrade --ignore-installed PyYAML==5.3.1 --user 27*cc02d7e2SAndroid Build Coastguard Workerfi 28*cc02d7e2SAndroid Build Coastguard Worker 29*cc02d7e2SAndroid Build Coastguard Workercd `dirname $0`/../.. 30*cc02d7e2SAndroid Build Coastguard Worker 31*cc02d7e2SAndroid Build Coastguard Workerecho "Generating build_autogenerated.yaml from bazel BUILD file" 32*cc02d7e2SAndroid Build Coastguard Workerrm -f build_autogenerated.yaml 33*cc02d7e2SAndroid Build Coastguard Workerpython3 tools/buildgen/extract_metadata_from_bazel_xml.py 34*cc02d7e2SAndroid Build Coastguard Worker 35*cc02d7e2SAndroid Build Coastguard Workertools/buildgen/build_cleaner.py build_handwritten.yaml 36*cc02d7e2SAndroid Build Coastguard Worker 37*cc02d7e2SAndroid Build Coastguard Worker# /usr/local/google/home/rbellevi/dev/tmp/grpc/venv/bin/python3: No module named virtualenv 38*cc02d7e2SAndroid Build Coastguard Worker# Generate xds-protos 39*cc02d7e2SAndroid Build Coastguard Workerif [[ ! -d generate_projects_virtual_environment ]]; then 40*cc02d7e2SAndroid Build Coastguard Worker if ! python3 -m pip freeze | grep virtualenv &>/dev/null; then 41*cc02d7e2SAndroid Build Coastguard Worker echo "virtualenv Python module not installed. Attempting to install via pip." >/dev/stderr 42*cc02d7e2SAndroid Build Coastguard Worker if INSTALL_OUTPUT=$(! python3 -m pip install virtualenv --upgrade &>/dev/stdout); then 43*cc02d7e2SAndroid Build Coastguard Worker echo "$INSTALL_OUTPUT" 44*cc02d7e2SAndroid Build Coastguard Worker if echo "$INSTALL_OUTPUT" | grep "externally managed" &>/dev/null; then 45*cc02d7e2SAndroid Build Coastguard Worker echo >/dev/stderr 46*cc02d7e2SAndroid Build Coastguard Worker echo "############################" >/dev/stderr 47*cc02d7e2SAndroid Build Coastguard Worker echo "Your administrator is _insisting_ on managing your packages themself. Try running \`sudo apt-get install python3-virtualenv\`" >/dev/stderr 48*cc02d7e2SAndroid Build Coastguard Worker echo "############################" >/dev/stderr 49*cc02d7e2SAndroid Build Coastguard Worker fi 50*cc02d7e2SAndroid Build Coastguard Worker exit 1 51*cc02d7e2SAndroid Build Coastguard Worker fi 52*cc02d7e2SAndroid Build Coastguard Worker fi 53*cc02d7e2SAndroid Build Coastguard Worker python3 -m virtualenv generate_projects_virtual_environment 54*cc02d7e2SAndroid Build Coastguard Workerfi 55*cc02d7e2SAndroid Build Coastguard Worker 56*cc02d7e2SAndroid Build Coastguard Workergenerate_projects_virtual_environment/bin/pip install --upgrade --ignore-installed grpcio-tools==1.59.0 57*cc02d7e2SAndroid Build Coastguard Workergenerate_projects_virtual_environment/bin/python tools/distrib/python/xds_protos/build.py 58*cc02d7e2SAndroid Build Coastguard Workergenerate_projects_virtual_environment/bin/python tools/distrib/python/make_grpcio_tools.py 59*cc02d7e2SAndroid Build Coastguard Workergenerate_projects_virtual_environment/bin/python src/python/grpcio_observability/make_grpcio_observability.py 60*cc02d7e2SAndroid Build Coastguard Worker 61*cc02d7e2SAndroid Build Coastguard Worker# check build_autogenerated.yaml is already in its "clean" form 62*cc02d7e2SAndroid Build Coastguard WorkerTEST=true tools/buildgen/build_cleaner.py build_autogenerated.yaml 63*cc02d7e2SAndroid Build Coastguard Worker 64*cc02d7e2SAndroid Build Coastguard Worker. tools/buildgen/generate_build_additions.sh 65*cc02d7e2SAndroid Build Coastguard Worker 66*cc02d7e2SAndroid Build Coastguard Worker# Instead of generating from a single build.yaml, we've split it into 67*cc02d7e2SAndroid Build Coastguard Worker# - build_handwritten.yaml: manually written metadata 68*cc02d7e2SAndroid Build Coastguard Worker# - build_autogenerated.yaml: generated from bazel BUILD file 69*cc02d7e2SAndroid Build Coastguard Workerpython3 tools/buildgen/generate_projects.py build_handwritten.yaml build_autogenerated.yaml $gen_build_files "$@" 70*cc02d7e2SAndroid Build Coastguard Worker 71*cc02d7e2SAndroid Build Coastguard Workerrm $gen_build_files 72