Merge "Support asset_dirs property in bp2build for android_{app,library}" into main am: 491fa2fe50 am: 67a98d3520 am: 6a5370155c am: ed541ef3d1 am: dfdd351c73

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

Change-Id: I7927ebe2107ee9bd9faab397ab6296f9fc7656fa
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Romain Jobredeaux
2023-08-17 20:06:08 +00:00
committed by Automerger Merge Worker
3 changed files with 41 additions and 5 deletions

View File

@@ -23,6 +23,7 @@ import (
"android/soong/android"
"android/soong/bazel"
"android/soong/dexpreopt"
"android/soong/ui/metrics/bp2build_metrics_proto"
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
@@ -1230,6 +1231,8 @@ func AARImportFactory() android.Module {
type bazelAapt struct {
Manifest bazel.Label
Resource_files bazel.LabelListAttribute
Assets_dir bazel.StringAttribute
Assets bazel.LabelListAttribute
}
type bazelAndroidLibrary struct {
@@ -1244,7 +1247,7 @@ type bazelAndroidLibraryImport struct {
Sdk_version bazel.StringAttribute
}
func (a *aapt) convertAaptAttrsWithBp2Build(ctx android.TopDownMutatorContext) *bazelAapt {
func (a *aapt) convertAaptAttrsWithBp2Build(ctx android.TopDownMutatorContext) (*bazelAapt, bool) {
manifest := proptools.StringDefault(a.aaptProperties.Manifest, "AndroidManifest.xml")
resourceFiles := bazel.LabelList{
@@ -1254,10 +1257,30 @@ func (a *aapt) convertAaptAttrsWithBp2Build(ctx android.TopDownMutatorContext) *
files := android.RootToModuleRelativePaths(ctx, androidResourceGlob(ctx, dir))
resourceFiles.Includes = append(resourceFiles.Includes, files...)
}
assetsDir := bazel.StringAttribute{}
var assets bazel.LabelList
for i, dir := range android.PathsWithOptionalDefaultForModuleSrc(ctx, a.aaptProperties.Asset_dirs, "assets") {
if i > 0 {
ctx.MarkBp2buildUnconvertible(bp2build_metrics_proto.UnconvertedReasonType_PROPERTY_UNSUPPORTED, "multiple asset_dirs")
return &bazelAapt{}, false
}
// Assets_dirs are relative to the module dir when specified, but if the default in used in
// PathsWithOptionalDefaultForModuleSrc, then dir is relative to the top.
assetsRelDir, error := filepath.Rel(ctx.ModuleDir(), dir.Rel())
if error != nil {
assetsRelDir = dir.Rel()
}
assetsDir.Value = proptools.StringPtr(assetsRelDir)
assets = bazel.MakeLabelList(android.RootToModuleRelativePaths(ctx, androidResourceGlob(ctx, dir)))
}
return &bazelAapt{
android.BazelLabelForModuleSrcSingle(ctx, manifest),
bazel.MakeLabelListAttribute(resourceFiles),
}
assetsDir,
bazel.MakeLabelListAttribute(assets),
}, true
}
func (a *AARImport) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
@@ -1330,6 +1353,10 @@ func (a *AndroidLibrary) ConvertWithBp2build(ctx android.TopDownMutatorContext)
name := a.Name()
props := AndroidLibraryBazelTargetModuleProperties()
aaptAttrs, supported := a.convertAaptAttrsWithBp2Build(ctx)
if !supported {
return
}
ctx.CreateBazelTargetModule(
props,
android.CommonAttributes{Name: name},
@@ -1339,7 +1366,7 @@ func (a *AndroidLibrary) ConvertWithBp2build(ctx android.TopDownMutatorContext)
Deps: deps,
Exports: depLabels.StaticDeps,
},
a.convertAaptAttrsWithBp2Build(ctx),
aaptAttrs,
},
)