xref: /aosp_15_r20/external/grpc-grpc/tools/buildgen/generate_projects.sh (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
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