xref: /aosp_15_r20/build/bazel/scripts/milestone-2/demo.sh (revision 7594170e27e0732bc44b93d1440d87a54b6ffe7c)
1*7594170eSAndroid Build Coastguard Worker#!/bin/bash
2*7594170eSAndroid Build Coastguard Worker#
3*7594170eSAndroid Build Coastguard Worker# Copyright 2018 The Bazel Authors. All rights reserved.
4*7594170eSAndroid Build Coastguard Worker#
5*7594170eSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
6*7594170eSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*7594170eSAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*7594170eSAndroid Build Coastguard Worker#
9*7594170eSAndroid Build Coastguard Worker#    http://www.apache.org/licenses/LICENSE-2.0
10*7594170eSAndroid Build Coastguard Worker#
11*7594170eSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*7594170eSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
13*7594170eSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*7594170eSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*7594170eSAndroid Build Coastguard Worker# limitations under the License.
16*7594170eSAndroid Build Coastguard Worker
17*7594170eSAndroid Build Coastguard Worker# ---
18*7594170eSAndroid Build Coastguard Worker# Milestone 2 demo script to convert Android.bp modules in //bionic/libc to
19*7594170eSAndroid Build Coastguard Worker# buildable Bazel BUILD targets. Run "./demo help" for more info.
20*7594170eSAndroid Build Coastguard Worker# ---
21*7594170eSAndroid Build Coastguard Worker
22*7594170eSAndroid Build Coastguard Workerset -euo pipefail
23*7594170eSAndroid Build Coastguard Worker
24*7594170eSAndroid Build Coastguard Workerfunction help() {
25*7594170eSAndroid Build Coastguard Worker  cat <<EOF
26*7594170eSAndroid Build Coastguard WorkerA demo script for the Android.bp to BUILD file converter.
27*7594170eSAndroid Build Coastguard Worker
28*7594170eSAndroid Build Coastguard WorkerUsage:
29*7594170eSAndroid Build Coastguard Worker
30*7594170eSAndroid Build Coastguard Worker  ./demo.sh generate -- runs the bp2build converter to generate BUILD files from Android.bp files.
31*7594170eSAndroid Build Coastguard Worker  ./demo.sh query -- runs the bazel query command for all targets in //bionic/libc, recursively.
32*7594170eSAndroid Build Coastguard Worker  ./demo.sh build -- runs the bazel build command for all targets in //bionic/libc, recursively.
33*7594170eSAndroid Build Coastguard Worker  ./demo.sh full -- runs the generate, query and build steps in sequence.
34*7594170eSAndroid Build Coastguard Worker  ./demo.sh help -- prints this message.
35*7594170eSAndroid Build Coastguard Worker
36*7594170eSAndroid Build Coastguard WorkerEOF
37*7594170eSAndroid Build Coastguard Worker}
38*7594170eSAndroid Build Coastguard Worker
39*7594170eSAndroid Build Coastguard Worker# We're in <root>/build/bazel/scripts/milestone-2
40*7594170eSAndroid Build Coastguard WorkerAOSP_ROOT="$(dirname $0)/../../../.."
41*7594170eSAndroid Build Coastguard Worker
42*7594170eSAndroid Build Coastguard WorkerRED="\031[0;32m"
43*7594170eSAndroid Build Coastguard WorkerGREEN="\033[0;32m"
44*7594170eSAndroid Build Coastguard WorkerRESET="\033[0m"
45*7594170eSAndroid Build Coastguard Worker
46*7594170eSAndroid Build Coastguard Workerfunction error() {
47*7594170eSAndroid Build Coastguard Worker  local message=$1; shift;
48*7594170eSAndroid Build Coastguard Worker  echo -e "${RED}ERROR[Milestone 2 Demo]: $message${RESET}"
49*7594170eSAndroid Build Coastguard Worker}
50*7594170eSAndroid Build Coastguard Worker
51*7594170eSAndroid Build Coastguard Workerfunction log() {
52*7594170eSAndroid Build Coastguard Worker  local message=$1; shift;
53*7594170eSAndroid Build Coastguard Worker  echo -e "${GREEN}INFO[Milestone 2 Demo]: $message${RESET}"
54*7594170eSAndroid Build Coastguard Worker}
55*7594170eSAndroid Build Coastguard Worker
56*7594170eSAndroid Build Coastguard Worker# Ensure that this script uses the checked-in Bazel binary.
57*7594170eSAndroid Build Coastguard Workerfunction bazel() {
58*7594170eSAndroid Build Coastguard Worker  "${AOSP_ROOT}/build/bazel/bin/bazel" "$@"
59*7594170eSAndroid Build Coastguard Worker}
60*7594170eSAndroid Build Coastguard Worker
61*7594170eSAndroid Build Coastguard Worker# Run the bp2build converter to generate BUILD files into out/soong/bp2build.
62*7594170eSAndroid Build Coastguard Workerfunction generate() {
63*7594170eSAndroid Build Coastguard Worker  log "Running the bp2build converter.."
64*7594170eSAndroid Build Coastguard Worker  "${AOSP_ROOT}/build/soong/soong_ui.bash" --make-mode --skip-soong-tests bp2build
65*7594170eSAndroid Build Coastguard Worker  log "Successfully generated BUILD files in out/soong/bp2build."
66*7594170eSAndroid Build Coastguard Worker}
67*7594170eSAndroid Build Coastguard Worker
68*7594170eSAndroid Build Coastguard Worker# Run bazel query for the generated targets in the //bionic/libc package.
69*7594170eSAndroid Build Coastguard Workerfunction query-bionic-package() {
70*7594170eSAndroid Build Coastguard Worker  log "Running bazel query //bionic/..."
71*7594170eSAndroid Build Coastguard Worker  bazel query //bionic/...
72*7594170eSAndroid Build Coastguard Worker}
73*7594170eSAndroid Build Coastguard Worker
74*7594170eSAndroid Build Coastguard Worker# Use bazel to build the generated targets in the //bionic/libc package.
75*7594170eSAndroid Build Coastguard Workerfunction build-bionic-package() {
76*7594170eSAndroid Build Coastguard Worker  log "Running bazel build //bionic/..."
77*7594170eSAndroid Build Coastguard Worker  bazel build --platforms //build/bazel/platforms:android_x86 //bionic/...
78*7594170eSAndroid Build Coastguard Worker  bazel build --platforms //build/bazel/platforms:android_x86_64 //bionic/...
79*7594170eSAndroid Build Coastguard Worker  bazel build --platforms //build/bazel/platforms:android_arm //bionic/...
80*7594170eSAndroid Build Coastguard Worker  bazel build --platforms //build/bazel/platforms:android_arm64 //bionic/...
81*7594170eSAndroid Build Coastguard Worker}
82*7594170eSAndroid Build Coastguard Worker
83*7594170eSAndroid Build Coastguard Workerfunction run() {
84*7594170eSAndroid Build Coastguard Worker  action=${1:-full}
85*7594170eSAndroid Build Coastguard Worker
86*7594170eSAndroid Build Coastguard Worker  case $action in
87*7594170eSAndroid Build Coastguard Worker    "help")
88*7594170eSAndroid Build Coastguard Worker      help
89*7594170eSAndroid Build Coastguard Worker      ;;
90*7594170eSAndroid Build Coastguard Worker    "generate")
91*7594170eSAndroid Build Coastguard Worker      generate
92*7594170eSAndroid Build Coastguard Worker      ;;
93*7594170eSAndroid Build Coastguard Worker    "query")
94*7594170eSAndroid Build Coastguard Worker      query-bionic-package
95*7594170eSAndroid Build Coastguard Worker      ;;
96*7594170eSAndroid Build Coastguard Worker    "build")
97*7594170eSAndroid Build Coastguard Worker      build-bionic-package
98*7594170eSAndroid Build Coastguard Worker      ;;
99*7594170eSAndroid Build Coastguard Worker    "full")
100*7594170eSAndroid Build Coastguard Worker      generate
101*7594170eSAndroid Build Coastguard Worker      query-bionic-package
102*7594170eSAndroid Build Coastguard Worker      build-bionic-package
103*7594170eSAndroid Build Coastguard Worker      ;;
104*7594170eSAndroid Build Coastguard Worker    *)
105*7594170eSAndroid Build Coastguard Worker      error "Unknown action: $action"
106*7594170eSAndroid Build Coastguard Worker      help
107*7594170eSAndroid Build Coastguard Worker      exit 1
108*7594170eSAndroid Build Coastguard Worker  esac
109*7594170eSAndroid Build Coastguard Worker
110*7594170eSAndroid Build Coastguard Worker  log "($action) done."
111*7594170eSAndroid Build Coastguard Worker}
112*7594170eSAndroid Build Coastguard Worker
113*7594170eSAndroid Build Coastguard Workerrun $@
114