summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Cole Faust <colefaust@google.com> 2023-08-02 11:45:43 -0700
committer Cole Faust <colefaust@google.com> 2023-08-02 11:45:43 -0700
commit16d10942c5178ae3dda05903534a89594f42c4d7 (patch)
tree36ef48370e01f79908ace7fabf5299fd3cc01629
parenta5e9abe75f2e49551754c6ef46bcc94e90deca8b (diff)
Make the bazel sandwich ignore targets that don't exist
So that things can be allowlisted that aren't in all branches, or that aren't present in tests. Then remove the example partition from the soong integration tests so that we don't need to pull all of the tools needed to build partitions into that test. Bug: 265127181 Fixes: 294220392 Test: ./build/soong/tests/run_integration_tests.sh and m bazel_sandwich Change-Id: I66fb1ad1c2eee815bfb9700595a26e74e54c6214
-rw-r--r--android/bazel_handler.go15
-rw-r--r--tests/lib.sh7
2 files changed, 22 insertions, 0 deletions
diff --git a/android/bazel_handler.go b/android/bazel_handler.go
index fd4b5ef1b..fda8a2251 100644
--- a/android/bazel_handler.go
+++ b/android/bazel_handler.go
@@ -22,6 +22,7 @@ import (
"os"
"path"
"path/filepath"
+ "regexp"
"runtime"
"sort"
"strings"
@@ -1054,9 +1055,23 @@ var (
func GetBazelSandwichCqueryRequests(config Config) ([]cqueryKey, error) {
result := make([]cqueryKey, 0, len(allowlists.BazelSandwichTargets))
+ labelRegex := regexp.MustCompile("^@?//([a-zA-Z0-9/_-]+):[a-zA-Z0-9_-]+$")
// Note that bazel "targets" are different from soong "targets", the bazel targets are
// synonymous with soong modules, and soong targets are a configuration a module is built in.
for _, target := range allowlists.BazelSandwichTargets {
+ match := labelRegex.FindStringSubmatch(target.Label)
+ if match == nil {
+ return nil, fmt.Errorf("invalid label, must match `^@?//([a-zA-Z0-9/_-]+):[a-zA-Z0-9_-]+$`: %s", target.Label)
+ }
+ if _, err := os.Stat(absolutePath(match[1])); err != nil {
+ if os.IsNotExist(err) {
+ // Ignore bazel sandwich targets that don't exist.
+ continue
+ } else {
+ return nil, err
+ }
+ }
+
var soongTarget Target
if target.Host {
soongTarget = config.BuildOSTarget
diff --git a/tests/lib.sh b/tests/lib.sh
index 40b317b06..f337c7457 100644
--- a/tests/lib.sh
+++ b/tests/lib.sh
@@ -52,6 +52,10 @@ function copy_directory {
cp -R "$REAL_TOP/$dir" "$MOCK_TOP/$parent"
}
+function delete_directory {
+ rm -rf "$MOCK_TOP/$1"
+}
+
function symlink_file {
local file="$1"
@@ -138,6 +142,9 @@ function create_mock_bazel {
copy_directory build/bazel
copy_directory build/bazel_common_rules
+ # This requires pulling more tools into the mock top to build partitions
+ delete_directory build/bazel/examples/partitions
+
symlink_directory packages/modules/common/build
symlink_directory prebuilts/bazel
symlink_directory prebuilts/clang