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
This commit is contained in:
parent
a5e9abe75f
commit
16d10942c5
2 changed files with 22 additions and 0 deletions
|
@ -22,6 +22,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"regexp"
|
||||||
"runtime"
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -1054,9 +1055,23 @@ var (
|
||||||
|
|
||||||
func GetBazelSandwichCqueryRequests(config Config) ([]cqueryKey, error) {
|
func GetBazelSandwichCqueryRequests(config Config) ([]cqueryKey, error) {
|
||||||
result := make([]cqueryKey, 0, len(allowlists.BazelSandwichTargets))
|
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
|
// 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.
|
// synonymous with soong modules, and soong targets are a configuration a module is built in.
|
||||||
for _, target := range allowlists.BazelSandwichTargets {
|
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
|
var soongTarget Target
|
||||||
if target.Host {
|
if target.Host {
|
||||||
soongTarget = config.BuildOSTarget
|
soongTarget = config.BuildOSTarget
|
||||||
|
|
|
@ -52,6 +52,10 @@ function copy_directory {
|
||||||
cp -R "$REAL_TOP/$dir" "$MOCK_TOP/$parent"
|
cp -R "$REAL_TOP/$dir" "$MOCK_TOP/$parent"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function delete_directory {
|
||||||
|
rm -rf "$MOCK_TOP/$1"
|
||||||
|
}
|
||||||
|
|
||||||
function symlink_file {
|
function symlink_file {
|
||||||
local file="$1"
|
local file="$1"
|
||||||
|
|
||||||
|
@ -138,6 +142,9 @@ function create_mock_bazel {
|
||||||
copy_directory build/bazel
|
copy_directory build/bazel
|
||||||
copy_directory build/bazel_common_rules
|
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 packages/modules/common/build
|
||||||
symlink_directory prebuilts/bazel
|
symlink_directory prebuilts/bazel
|
||||||
symlink_directory prebuilts/clang
|
symlink_directory prebuilts/clang
|
||||||
|
|
Loading…
Reference in a new issue