Merge "Switch bp2build mutator to bottom up" into main am: 11b20b2993

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2760865

Change-Id: Id965f8ee11d2e7c64cc7e085bc902a00ec0daed2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot 2023-09-23 01:20:30 +00:00 committed by Automerger Merge Worker
commit febe41d738
14 changed files with 26 additions and 301 deletions

View file

@ -107,24 +107,3 @@ func contributionBazelAttributes(ctx TopDownMutatorContext, contributions []stri
bazelLabels := BazelLabelForModuleDepsWithFn(ctx, contributions, addSuffix)
return bazel.MakeLabelListAttribute(bazelLabels)
}
type bazelApiDomainAttributes struct {
Cc_api_contributions bazel.LabelListAttribute
Java_api_contributions bazel.LabelListAttribute
}
var _ ApiProvider = (*apiDomain)(nil)
func (a *apiDomain) ConvertWithApiBp2build(ctx TopDownMutatorContext) {
props := bazel.BazelTargetModuleProperties{
Rule_class: "api_domain",
Bzl_load_location: "//build/bazel/rules/apis:api_domain.bzl",
}
attrs := &bazelApiDomainAttributes{
Cc_api_contributions: contributionBazelAttributes(ctx, a.properties.Cc_api_contributions),
Java_api_contributions: contributionBazelAttributes(ctx, a.properties.Java_api_contributions),
}
ctx.CreateBazelTargetModule(props, CommonAttributes{
Name: ctx.ModuleName(),
}, attrs)
}

View file

@ -600,10 +600,10 @@ func bp2buildDefaultTrueRecursively(packagePath string, config allowlists.Bp2Bui
}
func registerBp2buildConversionMutator(ctx RegisterMutatorsContext) {
ctx.TopDown("bp2build_conversion", bp2buildConversionMutator).Parallel()
ctx.BottomUp("bp2build_conversion", bp2buildConversionMutator).Parallel()
}
func bp2buildConversionMutator(ctx TopDownMutatorContext) {
func bp2buildConversionMutator(ctx BottomUpMutatorContext) {
bModule, ok := ctx.Module().(Bazelable)
if !ok {
ctx.MarkBp2buildUnconvertible(bp2build_metrics_proto.UnconvertedReasonType_TYPE_UNSUPPORTED, "")
@ -647,17 +647,6 @@ func bp2buildConversionMutator(ctx TopDownMutatorContext) {
}
}
func registerApiBp2buildConversionMutator(ctx RegisterMutatorsContext) {
ctx.TopDown("apiBp2build_conversion", convertWithApiBp2build).Parallel()
}
// Generate API contribution targets if the Soong module provides APIs
func convertWithApiBp2build(ctx TopDownMutatorContext) {
if m, ok := ctx.Module().(ApiProvider); ok {
m.ConvertWithApiBp2build(ctx)
}
}
// GetMainClassInManifest scans the manifest file specified in filepath and returns
// the value of attribute Main-Class in the manifest file if it exists, or returns error.
// WARNING: this is for bp2build converters of java_* modules only.

View file

@ -86,12 +86,6 @@ type bazelAidlLibraryAttributes struct {
Strip_import_prefix *string
}
// api srcs can be contained in filegroups.
// this should be generated in api_bp2build workspace as well.
func (fg *fileGroup) ConvertWithApiBp2build(ctx TopDownMutatorContext) {
fg.ConvertWithBp2build(ctx)
}
// ConvertWithBp2build performs bp2build conversion of filegroup
func (fg *fileGroup) ConvertWithBp2build(ctx Bp2buildMutatorContext) {
srcs := bazel.MakeLabelListAttribute(

View file

@ -1272,7 +1272,7 @@ func InitCommonOSAndroidMultiTargetsArchModule(m Module, hod HostOrDeviceSupport
m.base().commonProperties.CreateCommonOSVariant = true
}
func (attrs *CommonAttributes) fillCommonBp2BuildModuleAttrs(ctx *topDownMutatorContext,
func (attrs *CommonAttributes) fillCommonBp2BuildModuleAttrs(ctx *bottomUpMutatorContext,
enabledPropertyOverrides bazel.BoolAttribute) constraintAttributes {
mod := ctx.Module().base()
@ -1430,7 +1430,7 @@ var (
// If compile_mulitilib is set to
// 1. 32: Add an incompatibility constraint for non-32 arches
// 1. 64: Add an incompatibility constraint for non-64 arches
func addCompatibilityConstraintForCompileMultilib(ctx *topDownMutatorContext, enabled *bazel.LabelListAttribute) {
func addCompatibilityConstraintForCompileMultilib(ctx *bottomUpMutatorContext, enabled *bazel.LabelListAttribute) {
mod := ctx.Module().base()
multilib, _ := decodeMultilib(mod, mod.commonProperties.CompileOS, ctx.Config().IgnorePrefer32OnDevice())
@ -1456,7 +1456,7 @@ func addCompatibilityConstraintForCompileMultilib(ctx *topDownMutatorContext, en
// Check product variables for `enabled: true` flag override.
// Returns a list of the constraint_value targets who enable this override.
func productVariableConfigEnableAttribute(ctx *topDownMutatorContext) bazel.LabelListAttribute {
func productVariableConfigEnableAttribute(ctx *bottomUpMutatorContext) bazel.LabelListAttribute {
result := bazel.LabelListAttribute{}
productVariableProps, errs := ProductVariableProperties(ctx, ctx.Module())
for _, err := range errs {

View file

@ -38,13 +38,6 @@ func RegisterMutatorsForBazelConversion(ctx *Context, preArchMutators []Register
registerMutatorsForBazelConversion(ctx, bp2buildMutators)
}
// RegisterMutatorsForApiBazelConversion is an alternate registration pipeline for api_bp2build
// This pipeline restricts generation of Bazel targets to Soong modules that contribute APIs
func RegisterMutatorsForApiBazelConversion(ctx *Context, preArchMutators []RegisterMutatorFunc) {
bp2buildMutators := append(preArchMutators, registerApiBp2buildConversionMutator)
registerMutatorsForBazelConversion(ctx, bp2buildMutators)
}
func registerMutatorsForBazelConversion(ctx *Context, bp2buildMutators []RegisterMutatorFunc) {
mctx := &registerMutatorsContext{
bazelConversionMode: true,
@ -284,7 +277,6 @@ type TopDownMutator func(TopDownMutatorContext)
type TopDownMutatorContext interface {
BaseMutatorContext
Bp2buildMutatorContext
// CreateModule creates a new module by calling the factory method for the specified moduleType, and applies
// the specified property structs to it as if the properties were set in a blueprint file.
@ -300,6 +292,7 @@ type BottomUpMutator func(BottomUpMutatorContext)
type BottomUpMutatorContext interface {
BaseMutatorContext
Bp2buildMutatorContext
// AddDependency adds a dependency to the given module. It returns a slice of modules for each
// dependency (some entries may be nil).
@ -711,14 +704,14 @@ func registerDepsMutatorBp2Build(ctx RegisterMutatorsContext) {
ctx.BottomUp("deps", depsMutator).Parallel()
}
func (t *topDownMutatorContext) CreateBazelTargetModule(
func (t *bottomUpMutatorContext) CreateBazelTargetModule(
bazelProps bazel.BazelTargetModuleProperties,
commonAttrs CommonAttributes,
attrs interface{}) {
t.createBazelTargetModule(bazelProps, commonAttrs, attrs, bazel.BoolAttribute{})
}
func (t *topDownMutatorContext) CreateBazelTargetModuleWithRestrictions(
func (t *bottomUpMutatorContext) CreateBazelTargetModuleWithRestrictions(
bazelProps bazel.BazelTargetModuleProperties,
commonAttrs CommonAttributes,
attrs interface{},
@ -726,7 +719,7 @@ func (t *topDownMutatorContext) CreateBazelTargetModuleWithRestrictions(
t.createBazelTargetModule(bazelProps, commonAttrs, attrs, enabledProperty)
}
func (t *topDownMutatorContext) MarkBp2buildUnconvertible(
func (t *bottomUpMutatorContext) MarkBp2buildUnconvertible(
reasonType bp2build_metrics_proto.UnconvertedReasonType, detail string) {
mod := t.Module()
mod.base().setBp2buildUnconvertible(reasonType, detail)
@ -742,7 +735,7 @@ type bazelAliasAttributes struct {
Actual *bazel.LabelAttribute
}
func (t *topDownMutatorContext) CreateBazelTargetAliasInDir(
func (t *bottomUpMutatorContext) CreateBazelTargetAliasInDir(
dir string,
name string,
actual bazel.Label) {
@ -763,7 +756,7 @@ func (t *topDownMutatorContext) CreateBazelTargetAliasInDir(
// Returns the directory in which the bazel target will be generated
// If ca.Dir is not nil, use that
// Otherwise default to the directory of the soong module
func dirForBazelTargetGeneration(t *topDownMutatorContext, ca *CommonAttributes) string {
func dirForBazelTargetGeneration(t *bottomUpMutatorContext, ca *CommonAttributes) string {
dir := t.OtherModuleDir(t.Module())
if ca.Dir != nil {
dir = *ca.Dir
@ -781,7 +774,7 @@ func dirForBazelTargetGeneration(t *topDownMutatorContext, ca *CommonAttributes)
return dir
}
func (t *topDownMutatorContext) CreateBazelConfigSetting(
func (t *bottomUpMutatorContext) CreateBazelConfigSetting(
csa bazel.ConfigSettingAttributes,
ca CommonAttributes,
dir string) {
@ -867,7 +860,7 @@ func ConvertApexAvailableToTagsWithoutTestApexes(ctx BaseModuleContext, apexAvai
return ConvertApexAvailableToTags(noTestApexes)
}
func (t *topDownMutatorContext) createBazelTargetModule(
func (t *bottomUpMutatorContext) createBazelTargetModule(
bazelProps bazel.BazelTargetModuleProperties,
commonAttrs CommonAttributes,
attrs interface{},

View file

@ -289,7 +289,7 @@ func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, m *ModuleBase, srcs baz
attrs.Strip_import_prefix = proptools.StringPtr("")
}
tags := ApexAvailableTagsWithoutTestApexes(ctx.(TopDownMutatorContext), ctx.Module())
tags := ApexAvailableTagsWithoutTestApexes(ctx, ctx.Module())
moduleDir := ctx.ModuleDir()
if !canonicalPathFromRoot {

View file

@ -571,23 +571,6 @@ func (m *customModule) createConfigSetting(ctx android.Bp2buildMutatorContext) {
)
}
var _ android.ApiProvider = (*customModule)(nil)
func (c *customModule) ConvertWithApiBp2build(ctx android.TopDownMutatorContext) {
props := bazel.BazelTargetModuleProperties{
Rule_class: "custom_api_contribution",
}
apiAttribute := bazel.MakeLabelAttribute(
android.BazelLabelForModuleSrcSingle(ctx, proptools.String(c.props.Api)).Label,
)
attrs := &customBazelModuleAttributes{
Api: *apiAttribute,
}
ctx.CreateBazelTargetModule(props,
android.CommonAttributes{Name: c.Name()},
attrs)
}
// A bp2build mutator that uses load statements and creates a 1:M mapping from
// module to target.
func customBp2buildOneToMany(ctx android.Bp2buildMutatorContext, m *customModule) {

View file

@ -223,7 +223,7 @@ func partitionHeaders(ctx android.BazelConversionPathContext, hdrs bazel.LabelLi
}
// bp2BuildParseLibProps returns the attributes for a variant of a cc_library.
func bp2BuildParseLibProps(ctx android.BazelConversionPathContext, module *Module, isStatic bool) staticOrSharedAttributes {
func bp2BuildParseLibProps(ctx android.Bp2buildMutatorContext, module *Module, isStatic bool) staticOrSharedAttributes {
lib, ok := module.compiler.(*libraryDecorator)
if !ok {
return staticOrSharedAttributes{}
@ -232,12 +232,12 @@ func bp2BuildParseLibProps(ctx android.BazelConversionPathContext, module *Modul
}
// bp2buildParseSharedProps returns the attributes for the shared variant of a cc_library.
func bp2BuildParseSharedProps(ctx android.BazelConversionPathContext, module *Module) staticOrSharedAttributes {
func bp2BuildParseSharedProps(ctx android.Bp2buildMutatorContext, module *Module) staticOrSharedAttributes {
return bp2BuildParseLibProps(ctx, module, false)
}
// bp2buildParseStaticProps returns the attributes for the static variant of a cc_library.
func bp2BuildParseStaticProps(ctx android.BazelConversionPathContext, module *Module) staticOrSharedAttributes {
func bp2BuildParseStaticProps(ctx android.Bp2buildMutatorContext, module *Module) staticOrSharedAttributes {
return bp2BuildParseLibProps(ctx, module, true)
}
@ -288,7 +288,7 @@ func bp2BuildPropParseHelper(ctx android.ArchVariantContext, module *Module, pro
}
// Parses properties common to static and shared libraries. Also used for prebuilt libraries.
func bp2buildParseStaticOrSharedProps(ctx android.BazelConversionPathContext, module *Module, lib *libraryDecorator, isStatic bool) staticOrSharedAttributes {
func bp2buildParseStaticOrSharedProps(ctx android.Bp2buildMutatorContext, module *Module, lib *libraryDecorator, isStatic bool) staticOrSharedAttributes {
attrs := staticOrSharedAttributes{}
setAttrs := func(axis bazel.ConfigurationAxis, config string, props StaticOrSharedProperties) {
@ -334,7 +334,7 @@ func bp2buildParseStaticOrSharedProps(ctx android.BazelConversionPathContext, mo
attrs.Srcs_c = partitionedSrcs[cSrcPartition]
attrs.Srcs_as = partitionedSrcs[asSrcPartition]
attrs.Apex_available = android.ConvertApexAvailableToTagsWithoutTestApexes(ctx.(android.TopDownMutatorContext), apexAvailable)
attrs.Apex_available = android.ConvertApexAvailableToTagsWithoutTestApexes(ctx, apexAvailable)
attrs.Features.Append(convertHiddenVisibilityToFeatureStaticOrShared(ctx, module, isStatic))
@ -1143,7 +1143,7 @@ func bp2buildCcAidlLibrary(
compilerAttrs compilerAttributes,
) *bazel.LabelAttribute {
var aidlLibsFromSrcs, aidlFiles bazel.LabelListAttribute
apexAvailableTags := android.ApexAvailableTagsWithoutTestApexes(ctx.(android.TopDownMutatorContext), ctx.Module())
apexAvailableTags := android.ApexAvailableTagsWithoutTestApexes(ctx, ctx.Module())
if !aidlSrcs.IsEmpty() {
aidlLibsFromSrcs, aidlFiles = aidlSrcs.Partition(func(src bazel.Label) bool {
@ -1283,7 +1283,7 @@ func (la *linkerAttributes) resolveTargetApexProp(ctx android.BazelConversionPat
la.implementationDeps.Append(staticExcludesLabelList)
}
func (la *linkerAttributes) bp2buildForAxisAndConfig(ctx android.BazelConversionPathContext, module *Module, axis bazel.ConfigurationAxis, config string, props *BaseLinkerProperties) {
func (la *linkerAttributes) bp2buildForAxisAndConfig(ctx android.Bp2buildMutatorContext, module *Module, axis bazel.ConfigurationAxis, config string, props *BaseLinkerProperties) {
isBinary := module.Binary()
// Use a single variable to capture usage of nocrt in arch variants, so there's only 1 error message for this module
var axisFeatures []string
@ -1490,7 +1490,7 @@ func GetApiDomain(apexName string) string {
// Note that this is an anti-pattern: The config_setting should be created from the apex definition
// and not from a cc_library.
// This anti-pattern is needed today since not all apexes have been allowlisted.
func createInApexConfigSetting(ctx android.TopDownMutatorContext, apexName string) {
func createInApexConfigSetting(ctx android.Bp2buildMutatorContext, apexName string) {
if apexName == android.AvailableToPlatform || apexName == android.AvailableToAnyApex {
// These correspond to android-non_apex and android-in_apex
return
@ -1587,13 +1587,13 @@ func hasNdkStubs(ctx android.BazelConversionPathContext, c *Module) bool {
return exists && ctx.OtherModuleType(mod) == "ndk_library"
}
func SetStubsForDynamicDeps(ctx android.BazelConversionPathContext, axis bazel.ConfigurationAxis,
func SetStubsForDynamicDeps(ctx android.Bp2buildMutatorContext, axis bazel.ConfigurationAxis,
config string, apexAvailable []string, dynamicLibs bazel.LabelList, dynamicDeps *bazel.LabelListAttribute, ind int, buildNonApexWithStubs bool) {
// Create a config_setting for each apex_available.
// This will be used to select impl of a dep if dep is available to the same apex.
for _, aa := range apexAvailable {
createInApexConfigSetting(ctx.(android.TopDownMutatorContext), aa)
createInApexConfigSetting(ctx, aa)
}
apiDomainForSelects := []string{}

View file

@ -4273,24 +4273,6 @@ func (c *Module) ConvertWithBp2build(ctx android.Bp2buildMutatorContext) {
}
}
var _ android.ApiProvider = (*Module)(nil)
func (c *Module) ConvertWithApiBp2build(ctx android.TopDownMutatorContext) {
if c.IsPrebuilt() {
return
}
switch c.typ() {
case fullLibrary:
apiContributionBp2Build(ctx, c)
case sharedLibrary:
apiContributionBp2Build(ctx, c)
case headerLibrary:
// Aggressively generate api targets for all header modules
// This is necessary since the header module does not know if it is a dep of API surface stub library
apiLibraryHeadersBp2Build(ctx, c)
}
}
// Defaults
type Defaults struct {
android.ModuleBase

View file

@ -517,70 +517,6 @@ func createStubsBazelTargetIfNeeded(ctx android.Bp2buildMutatorContext, m *Modul
}
}
func apiContributionBp2Build(ctx android.TopDownMutatorContext, module *Module) {
apiSurfaces := make([]string, 0)
apiHeaders := make([]string, 0)
// module-libapi for apexes (non-null `stubs` property)
if module.HasStubsVariants() {
apiSurfaces = append(apiSurfaces, android.ModuleLibApi.String())
apiIncludes := getModuleLibApiIncludes(ctx, module)
if !apiIncludes.isEmpty() {
createApiHeaderTarget(ctx, apiIncludes)
apiHeaders = append(apiHeaders, apiIncludes.name)
}
}
// vendorapi (non-null `llndk` property)
if module.HasLlndkStubs() {
apiSurfaces = append(apiSurfaces, android.VendorApi.String())
apiIncludes := getVendorApiIncludes(ctx, module)
if !apiIncludes.isEmpty() {
createApiHeaderTarget(ctx, apiIncludes)
apiHeaders = append(apiHeaders, apiIncludes.name)
}
}
// create a target only if this module contributes to an api surface
// TODO: Currently this does not distinguish modulelibapi-only headers and vendrorapi-only headers
// TODO: Update so that modulelibapi-only headers do not get exported to vendorapi (and vice-versa)
if len(apiSurfaces) > 0 {
props := bazel.BazelTargetModuleProperties{
Rule_class: "cc_api_contribution",
Bzl_load_location: "//build/bazel/rules/apis:cc_api_contribution.bzl",
}
attrs := &bazelCcApiContributionAttributes{
Library_name: module.Name(),
Api_surfaces: bazel.MakeStringListAttribute(apiSurfaces),
Api: apiLabelAttribute(ctx, module),
Hdrs: bazel.MakeLabelListAttribute(
bazel.MakeLabelListFromTargetNames(apiHeaders),
),
}
ctx.CreateBazelTargetModule(
props,
android.CommonAttributes{
Name: android.ApiContributionTargetName(module.Name()),
SkipData: proptools.BoolPtr(true),
},
attrs,
)
}
}
// Native apis are versioned in a single .map.txt for all api surfaces
// Pick any one of the .map.txt files
func apiLabelAttribute(ctx android.TopDownMutatorContext, module *Module) bazel.LabelAttribute {
var apiFile *string
linker := module.linker.(*libraryDecorator)
if llndkApi := linker.Properties.Llndk.Symbol_file; llndkApi != nil {
apiFile = llndkApi
} else if moduleLibApi := linker.Properties.Stubs.Symbol_file; moduleLibApi != nil {
apiFile = moduleLibApi
} else {
ctx.ModuleErrorf("API surface library does not have any API file")
}
apiLabel := android.BazelLabelForModuleSrcSingle(ctx, proptools.String(apiFile)).Label
return *bazel.MakeLabelAttribute(apiLabel)
}
// wrapper struct to flatten the arch and os specific export_include_dirs
// flattening is necessary since we want to export apis of all arches even when we build for x86 (e.g.)
type bazelCcApiLibraryHeadersAttributes struct {

View file

@ -15,8 +15,6 @@
package cc
import (
"github.com/google/blueprint/proptools"
"android/soong/android"
"android/soong/bazel"
"android/soong/bazel/cquery"
@ -175,106 +173,6 @@ func apiBazelTargets(ll bazel.LabelList) bazel.LabelList {
return bazel.MakeLabelList(labels)
}
func apiLibraryHeadersBp2Build(ctx android.TopDownMutatorContext, module *Module) {
// cc_api_library_headers have a 1:1 mapping to arch/no-arch
// For API export, create a top-level arch-agnostic target and list the arch-specific targets as its deps
// arch-agnostic includes
apiIncludes := getModuleLibApiIncludes(ctx, module)
// arch and os specific includes
archApiIncludes, androidOsIncludes := archOsSpecificApiIncludes(ctx, module)
for _, arch := range allArches { // sorted iteration
archApiInclude := archApiIncludes[arch]
if !archApiInclude.isEmpty() {
createApiHeaderTarget(ctx, archApiInclude)
apiIncludes.addDep(archApiInclude.name)
}
}
// os==android includes
if !androidOsIncludes.isEmpty() {
createApiHeaderTarget(ctx, androidOsIncludes)
apiIncludes.addDep(androidOsIncludes.name)
}
if !apiIncludes.isEmpty() {
// override the name from <mod>.module-libapi.headers --> <mod>.contribution
apiIncludes.name = android.ApiContributionTargetName(module.Name())
createApiHeaderTarget(ctx, apiIncludes)
}
}
func createApiHeaderTarget(ctx android.TopDownMutatorContext, includes apiIncludes) {
props := bazel.BazelTargetModuleProperties{
Rule_class: "cc_api_library_headers",
Bzl_load_location: "//build/bazel/rules/apis:cc_api_contribution.bzl",
}
ctx.CreateBazelTargetModule(
props,
android.CommonAttributes{
Name: includes.name,
SkipData: proptools.BoolPtr(true),
},
&includes.attrs,
)
}
var (
allArches = []string{"arm", "arm64", "x86", "x86_64"}
)
type archApiIncludes map[string]apiIncludes
func archOsSpecificApiIncludes(ctx android.TopDownMutatorContext, module *Module) (archApiIncludes, apiIncludes) {
baseProps := bp2BuildParseBaseProps(ctx, module)
i := bp2BuildParseExportedIncludes(ctx, module, &baseProps.includes)
archRet := archApiIncludes{}
for _, arch := range allArches {
includes := i.Includes.SelectValue(
bazel.ArchConfigurationAxis,
arch)
systemIncludes := i.SystemIncludes.SelectValue(
bazel.ArchConfigurationAxis,
arch)
deps := baseProps.deps.SelectValue(
bazel.ArchConfigurationAxis,
arch)
attrs := bazelCcLibraryHeadersAttributes{
Export_includes: bazel.MakeStringListAttribute(includes),
Export_system_includes: bazel.MakeStringListAttribute(systemIncludes),
}
apiDeps := apiBazelTargets(deps)
if !apiDeps.IsEmpty() {
attrs.Deps = bazel.MakeLabelListAttribute(apiDeps)
}
apiIncludes := apiIncludes{
name: android.ApiContributionTargetName(module.Name()) + "." + arch,
attrs: bazelCcApiLibraryHeadersAttributes{
bazelCcLibraryHeadersAttributes: attrs,
Arch: proptools.StringPtr(arch),
},
}
archRet[arch] = apiIncludes
}
// apiIncludes for os == Android
androidOsDeps := baseProps.deps.SelectValue(bazel.OsConfigurationAxis, bazel.OsAndroid)
androidOsAttrs := bazelCcLibraryHeadersAttributes{
Export_includes: bazel.MakeStringListAttribute(
i.Includes.SelectValue(bazel.OsConfigurationAxis, bazel.OsAndroid),
),
Export_system_includes: bazel.MakeStringListAttribute(
i.SystemIncludes.SelectValue(bazel.OsConfigurationAxis, bazel.OsAndroid),
),
}
androidOsApiDeps := apiBazelTargets(androidOsDeps)
if !androidOsApiDeps.IsEmpty() {
androidOsAttrs.Deps = bazel.MakeLabelListAttribute(androidOsApiDeps)
}
osRet := apiIncludes{
name: android.ApiContributionTargetName(module.Name()) + ".androidos",
attrs: bazelCcApiLibraryHeadersAttributes{
bazelCcLibraryHeadersAttributes: androidOsAttrs,
},
}
return archRet, osRet
}

View file

@ -246,7 +246,7 @@ func bp2buildProto(ctx android.Bp2buildMutatorContext, m *Module, protoSrcs baze
protoAttrs.Min_sdk_version = m.Properties.Min_sdk_version
name := m.Name() + suffix
tags := android.ApexAvailableTagsWithoutTestApexes(ctx.(android.TopDownMutatorContext), m)
tags := android.ApexAvailableTagsWithoutTestApexes(ctx, m)
ctx.CreateBazelTargetModule(
bazel.BazelTargetModuleProperties{
Rule_class: rule_class,

View file

@ -38,7 +38,7 @@ type SyspropLibraryLabels struct {
}
func Bp2buildSysprop(ctx android.Bp2buildMutatorContext, labels SyspropLibraryLabels, srcs bazel.LabelListAttribute, minSdkVersion *string) {
apexAvailableTags := android.ApexAvailableTagsWithoutTestApexes(ctx.(android.TopDownMutatorContext), ctx.Module())
apexAvailableTags := android.ApexAvailableTagsWithoutTestApexes(ctx, ctx.Module())
ctx.CreateBazelTargetModule(
bazel.BazelTargetModuleProperties{
Rule_class: "sysprop_library",

View file

@ -24,7 +24,6 @@ import (
"github.com/google/blueprint/proptools"
"android/soong/android"
"android/soong/bazel"
"android/soong/java/config"
"android/soong/remoteexec"
)
@ -855,34 +854,6 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) {
}
}
var _ android.ApiProvider = (*Droidstubs)(nil)
type bazelJavaApiContributionAttributes struct {
Api bazel.LabelAttribute
Api_surface *string
}
func (d *Droidstubs) ConvertWithApiBp2build(ctx android.TopDownMutatorContext) {
props := bazel.BazelTargetModuleProperties{
Rule_class: "java_api_contribution",
Bzl_load_location: "//build/bazel/rules/apis:java_api_contribution.bzl",
}
apiFile := d.properties.Check_api.Current.Api_file
// Do not generate a target if check_api is not set
if apiFile == nil {
return
}
attrs := &bazelJavaApiContributionAttributes{
Api: *bazel.MakeLabelAttribute(
android.BazelLabelForModuleSrcSingle(ctx, proptools.String(apiFile)).Label,
),
Api_surface: proptools.StringPtr(bazelApiSurfaceName(d.Name())),
}
ctx.CreateBazelTargetModule(props, android.CommonAttributes{
Name: android.ApiContributionTargetName(ctx.ModuleName()),
}, attrs)
}
func (d *Droidstubs) createApiContribution(ctx android.DefaultableHookContext) {
api_file := d.properties.Check_api.Current.Api_file
api_surface := d.properties.Api_surface