bp2build java_resources that only contain a filegroup

supports filegroup that specifies path property

Bug: 280860624
Test: built libauto_value_plugin
Change-Id: I9ed0b13e055beb92ba8090f6b5e88b9873c9ce61
This commit is contained in:
Alix
2023-05-09 20:37:49 +00:00
parent cd4e6a609e
commit b29a3cd2aa
4 changed files with 72 additions and 2 deletions

View File

@@ -2704,6 +2704,15 @@ type javaResourcesAttributes struct {
Resource_strip_prefix *string
}
func (m *Library) javaResourcesGetSingleFilegroupStripPrefix(ctx android.TopDownMutatorContext) (string, bool) {
if otherM, ok := ctx.ModuleFromName(m.properties.Java_resources[0]); ok && len(m.properties.Java_resources) == 1 {
if fg, isFilegroup := otherM.(android.FileGroupPath); isFilegroup {
return filepath.Join(ctx.OtherModuleDir(otherM), fg.GetPath(ctx)), true
}
}
return "", false
}
func (m *Library) convertJavaResourcesAttributes(ctx android.TopDownMutatorContext) *javaResourcesAttributes {
var resources bazel.LabelList
var resourceStripPrefix *string
@@ -2713,8 +2722,12 @@ func (m *Library) convertJavaResourcesAttributes(ctx android.TopDownMutatorConte
}
if m.properties.Java_resources != nil {
if prefix, ok := m.javaResourcesGetSingleFilegroupStripPrefix(ctx); ok {
resourceStripPrefix = proptools.StringPtr(prefix)
} else {
resourceStripPrefix = proptools.StringPtr(ctx.ModuleDir())
}
resources.Append(android.BazelLabelForModuleSrc(ctx, m.properties.Java_resources))
resourceStripPrefix = proptools.StringPtr(ctx.ModuleDir())
}
//TODO(b/179889880) handle case where glob includes files outside package