| #!/bin/bash -e |
| |
| # Copyright (C) 2023 The Android Open Source Project |
| # |
| # 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. |
| |
| # This contains some utilities used by b |
| # They were moved separately to facilitate testing |
| source $(cd $(dirname $BASH_SOURCE) &> /dev/null && pwd)/../make/shell_utils.sh |
| |
| function get_profile_out_dir { |
| require_top |
| if [[ -z ${OUT_DIR+x} ]]; then |
| PROFILE_OUT=$TOP/out |
| else |
| PROFILE_OUT=$OUT_DIR |
| fi |
| |
| echo $PROFILE_OUT |
| } |
| |
| function is_command { |
| arg=$1 |
| BAZEL_COMMAND_LIST="analyze-profile aquery build canonicalize-flags clean config coverage cquery dump fetch help info license mobile-install mod print_action query run shutdown sync test version" |
| if echo "$BAZEL_COMMAND_LIST" | "grep" -ws -e "$arg"; then |
| true |
| else |
| false |
| fi |
| } |
| |
| function formulate_b_args { |
| # Always run with the bp2build configuration, which sets Bazel's package path to |
| # the synthetic workspace. |
| # Add the --config=bp2build after the first argument. That should be the bazel command |
| # (build, test, run, etc) If the --config was added at the end, it wouldn't work |
| # with commands like: b run //foo -- --args-for-foo |
| # This function will create a UUID for BES purposes if not already set to the ENV var |
| # "BES_UUID". Likewise, the bazel profile file will be written to the dir set as "PROFILE_OUT" |
| # or default to $TOP/out or out if not specified. |
| |
| # Represent the args as an array, not a string. |
| bazel_args_with_config=() |
| command_set=0 |
| PROFILE_OUT=${PROFILE_OUT:-`get_profile_out_dir`} |
| |
| for arg in $@; do |
| bazel_args_with_config+=("$arg ") |
| arg_is_command=$(is_command $arg) |
| # Add the default configs after the first argument, which should be the command, e.g. build/test |
| if [[ $arg_is_command && $command_set == 0 ]]; then |
| bazel_args_with_config+=("--profile=$PROFILE_OUT/bazel_metrics-profile --config=bp2build ") |
| command_set=1 |
| fi |
| done |
| echo ${bazel_args_with_config[@]} |
| } |