Stop relying on target.kind in mixed builds.
target.kind was a field that existed for only a few months, and have
been removed from Bazel. This is needed to update to a newer Bazel version.
Also, this reverts filegroups to be queried for a specific arch again,
but leaving file targets in the common arch (which is correct, anyway).
Fixes: b/199363072
Test: mixed_libc
Test: presubmits
Change-Id: I3b8e5c43a39516d977d327a44a75750b2f251be3
diff --git a/android/bazel_handler.go b/android/bazel_handler.go
index 6648a2f..974f8f5 100644
--- a/android/bazel_handler.go
+++ b/android/bazel_handler.go
@@ -587,13 +587,11 @@
%s
def get_arch(target):
- # TODO(b/199363072): filegroups and file targets aren't associated with any
- # specific platform architecture in mixed builds. This is consistent with how
- # Soong treats filegroups, but it may not be the case with manually-written
- # filegroup BUILD targets.
- if target.kind in ["filegroup", ""]:
- return "common"
buildoptions = build_options(target)
+ if buildoptions == None:
+ # File targets do not have buildoptions. File targets aren't associated with
+ # any specific platform architecture in mixed builds.
+ return "common"
platforms = build_options(target)["//command_line_option:platforms"]
if len(platforms) != 1:
# An individual configured target should have only one platform architecture.
diff --git a/android/filegroup.go b/android/filegroup.go
index 2cf5567..f8f0955 100644
--- a/android/filegroup.go
+++ b/android/filegroup.go
@@ -112,15 +112,22 @@
return module
}
-func (fg *fileGroup) GenerateBazelBuildActions(ctx ModuleContext) bool {
+func (fg *fileGroup) maybeGenerateBazelBuildActions(ctx ModuleContext) {
if !fg.MixedBuildsEnabled(ctx) {
- return false
+ return
+ }
+
+ archVariant := ctx.Arch().ArchType
+ if len(fg.Srcs()) == 1 && fg.Srcs()[0].Base() == fg.Name() {
+ // This will be a regular file target, not filegroup, in Bazel.
+ // See FilegroupBp2Build for more information.
+ archVariant = Common
}
bazelCtx := ctx.Config().BazelContext
- filePaths, ok := bazelCtx.GetOutputFiles(fg.GetBazelLabel(ctx, fg), Common)
+ filePaths, ok := bazelCtx.GetOutputFiles(fg.GetBazelLabel(ctx, fg), archVariant)
if !ok {
- return false
+ return
}
bazelOuts := make(Paths, 0, len(filePaths))
@@ -130,19 +137,15 @@
}
fg.srcs = bazelOuts
-
- return true
}
func (fg *fileGroup) GenerateAndroidBuildActions(ctx ModuleContext) {
- if fg.GenerateBazelBuildActions(ctx) {
- return
- }
-
fg.srcs = PathsForModuleSrcExcludes(ctx, fg.properties.Srcs, fg.properties.Exclude_srcs)
if fg.properties.Path != nil {
fg.srcs = PathsWithModuleSrcSubDir(ctx, fg.srcs, String(fg.properties.Path))
}
+
+ fg.maybeGenerateBazelBuildActions(ctx)
}
func (fg *fileGroup) Srcs() Paths {