Merge "Lift BazelHandler interface into android/"

This commit is contained in:
Alex Márquez Pérez Muñíz Díaz Púras Thaureaux
2021-08-11 21:01:56 +00:00
committed by Gerrit Code Review
8 changed files with 29 additions and 27 deletions

View File

@@ -57,6 +57,17 @@ type cqueryKey struct {
archType ArchType
}
// bazelHandler is the interface for a helper object related to deferring to Bazel for
// processing a module (during Bazel mixed builds). Individual module types should define
// their own bazel handler if they support deferring to Bazel.
type BazelHandler interface {
// Issue query to Bazel to retrieve information about Bazel's view of the current module.
// If Bazel returns this information, set module properties on the current module to reflect
// the returned information.
// Returns true if information was available from Bazel, false if bazel invocation still needs to occur.
GenerateBazelBuildActions(ctx ModuleContext, label string) bool
}
type BazelContext interface {
// The below methods involve queuing cquery requests to be later invoked
// by bazel. If any of these methods return (_, false), then the request

View File

@@ -15,8 +15,9 @@
package android
import (
"android/soong/bazel"
"strings"
"android/soong/bazel"
)
func init() {
@@ -108,7 +109,7 @@ func FileGroupFactory() Module {
return module
}
func (fg *fileGroup) generateBazelBuildActions(ctx ModuleContext) bool {
func (fg *fileGroup) GenerateBazelBuildActions(ctx ModuleContext) bool {
if !fg.MixedBuildsEnabled(ctx) {
return false
}
@@ -131,7 +132,7 @@ func (fg *fileGroup) generateBazelBuildActions(ctx ModuleContext) bool {
}
func (fg *fileGroup) GenerateAndroidBuildActions(ctx ModuleContext) {
if fg.generateBazelBuildActions(ctx) {
if fg.GenerateBazelBuildActions(ctx) {
return
}

View File

@@ -589,17 +589,6 @@ type installer interface {
installInRoot() bool
}
// bazelHandler is the interface for a helper object related to deferring to Bazel for
// processing a module (during Bazel mixed builds). Individual module types should define
// their own bazel handler if they support deferring to Bazel.
type bazelHandler interface {
// Issue query to Bazel to retrieve information about Bazel's view of the current module.
// If Bazel returns this information, set module properties on the current module to reflect
// the returned information.
// Returns true if information was available from Bazel, false if bazel invocation still needs to occur.
generateBazelBuildActions(ctx android.ModuleContext, label string) bool
}
type xref interface {
XrefCcFiles() android.Paths
}
@@ -796,7 +785,7 @@ type Module struct {
compiler compiler
linker linker
installer installer
bazelHandler bazelHandler
bazelHandler android.BazelHandler
features []feature
stl *stl
@@ -1696,7 +1685,7 @@ func (c *Module) maybeGenerateBazelActions(actx android.ModuleContext) bool {
bazelModuleLabel := c.GetBazelLabel(actx, c)
bazelActionsUsed := false
if c.MixedBuildsEnabled(actx) && c.bazelHandler != nil {
bazelActionsUsed = c.bazelHandler.generateBazelBuildActions(actx, bazelModuleLabel)
bazelActionsUsed = c.bazelHandler.GenerateBazelBuildActions(actx, bazelModuleLabel)
}
return bazelActionsUsed
}

View File

@@ -556,7 +556,7 @@ type libraryDecorator struct {
}
type ccLibraryBazelHandler struct {
bazelHandler
android.BazelHandler
module *Module
}
@@ -642,7 +642,7 @@ func getTocFile(ctx android.ModuleContext, label string, outputFiles []string) a
return android.OptionalPathForPath(android.PathForBazelOut(ctx, tocFile))
}
func (handler *ccLibraryBazelHandler) generateBazelBuildActions(ctx android.ModuleContext, label string) bool {
func (handler *ccLibraryBazelHandler) GenerateBazelBuildActions(ctx android.ModuleContext, label string) bool {
bazelCtx := ctx.Config().BazelContext
ccInfo, ok, err := bazelCtx.GetCcInfo(label, ctx.Arch().ArchType)
if err != nil {

View File

@@ -44,13 +44,13 @@ func RegisterLibraryHeadersBuildComponents(ctx android.RegistrationContext) {
}
type libraryHeaderBazelHander struct {
bazelHandler
android.BazelHandler
module *Module
library *libraryDecorator
}
func (h *libraryHeaderBazelHander) generateBazelBuildActions(ctx android.ModuleContext, label string) bool {
func (h *libraryHeaderBazelHander) GenerateBazelBuildActions(ctx android.ModuleContext, label string) bool {
bazelCtx := ctx.Config().BazelContext
ccInfo, ok, err := bazelCtx.GetCcInfo(label, ctx.Arch().ArchType)
if err != nil {

View File

@@ -47,12 +47,12 @@ type objectLinker struct {
}
type objectBazelHandler struct {
bazelHandler
android.BazelHandler
module *Module
}
func (handler *objectBazelHandler) generateBazelBuildActions(ctx android.ModuleContext, label string) bool {
func (handler *objectBazelHandler) GenerateBazelBuildActions(ctx android.ModuleContext, label string) bool {
bazelCtx := ctx.Config().BazelContext
objPaths, ok := bazelCtx.GetOutputFiles(label, ctx.Arch().ArchType)
if ok {

View File

@@ -15,9 +15,10 @@
package cc
import (
"android/soong/android"
"path/filepath"
"strings"
"android/soong/android"
)
func init() {
@@ -321,13 +322,13 @@ type prebuiltObjectLinker struct {
}
type prebuiltStaticLibraryBazelHandler struct {
bazelHandler
android.BazelHandler
module *Module
library *libraryDecorator
}
func (h *prebuiltStaticLibraryBazelHandler) generateBazelBuildActions(ctx android.ModuleContext, label string) bool {
func (h *prebuiltStaticLibraryBazelHandler) GenerateBazelBuildActions(ctx android.ModuleContext, label string) bool {
bazelCtx := ctx.Config().BazelContext
ccInfo, ok, err := bazelCtx.GetCcInfo(label, ctx.Arch().ArchType)
if err != nil {

View File

@@ -240,7 +240,7 @@ func toolDepsMutator(ctx android.BottomUpMutatorContext) {
}
// Returns true if information was available from Bazel, false if bazel invocation still needs to occur.
func (c *Module) generateBazelBuildActions(ctx android.ModuleContext, label string) bool {
func (c *Module) GenerateBazelBuildActions(ctx android.ModuleContext, label string) bool {
bazelCtx := ctx.Config().BazelContext
filePaths, ok := bazelCtx.GetOutputFiles(label, ctx.Arch().ArchType)
if ok {
@@ -560,7 +560,7 @@ func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) {
bazelModuleLabel := g.GetBazelLabel(ctx, g)
bazelActionsUsed := false
if g.MixedBuildsEnabled(ctx) {
bazelActionsUsed = g.generateBazelBuildActions(ctx, bazelModuleLabel)
bazelActionsUsed = g.GenerateBazelBuildActions(ctx, bazelModuleLabel)
}
if !bazelActionsUsed {
// For <= 6 outputs, just embed those directly in the users. Right now, that covers >90% of