Merge "Add property Exportable to aconfig_declarations" into main am: 900c8512cd

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

Change-Id: Ie6ac67bdd6686e9a3505559f9dbb91b984f2ed4f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot 2024-02-08 08:21:15 +00:00 committed by Automerger Merge Worker
commit d1dfa74d1f
5 changed files with 42 additions and 6 deletions

View file

@ -40,6 +40,9 @@ type DeclarationsModule struct {
// Container(system/vendor/apex) that this module belongs to
Container string
// The flags will only be repackaged if this prop is true.
Exportable bool
}
intermediatePath android.WritablePath
@ -159,6 +162,7 @@ func (module *DeclarationsModule) GenerateAndroidBuildActions(ctx android.Module
android.SetProvider(ctx, android.AconfigDeclarationsProviderKey, android.AconfigDeclarationsProviderData{
Package: module.properties.Package,
Container: module.properties.Container,
Exportable: module.properties.Exportable,
IntermediateCacheOutputPath: intermediateCacheFilePath,
IntermediateDumpOutputPath: intermediateDumpFilePath,
})

View file

@ -27,6 +27,7 @@ func TestAconfigDeclarations(t *testing.T) {
name: "module_name",
package: "com.example.package",
container: "com.android.foo",
exportable: true,
srcs: [
"foo.aconfig",
"bar.aconfig",
@ -41,6 +42,7 @@ func TestAconfigDeclarations(t *testing.T) {
depData, _ := android.SingletonModuleProvider(result, module, android.AconfigDeclarationsProviderKey)
android.AssertStringEquals(t, "package", depData.Package, "com.example.package")
android.AssertStringEquals(t, "container", depData.Container, "com.android.foo")
android.AssertBoolEquals(t, "exportable", depData.Exportable, true)
if !strings.HasSuffix(depData.IntermediateCacheOutputPath.String(), "/intermediate.pb") {
t.Errorf("Missing intermediates proto path in provider: %s", depData.IntermediateCacheOutputPath.String())
}
@ -48,3 +50,22 @@ func TestAconfigDeclarations(t *testing.T) {
t.Errorf("Missing intermediates text path in provider: %s", depData.IntermediateDumpOutputPath.String())
}
}
func TestAconfigDeclarationsWithExportableUnset(t *testing.T) {
bp := `
aconfig_declarations {
name: "module_name",
package: "com.example.package",
container: "com.android.foo",
srcs: [
"foo.aconfig",
"bar.aconfig",
],
}
`
result := runTest(t, android.FixtureExpectsNoErrors, bp)
module := result.ModuleForTests("module_name", "").Module().(*DeclarationsModule)
depData, _ := android.SingletonModuleProvider(result, module, android.AconfigDeclarationsProviderKey)
android.AssertBoolEquals(t, "exportable", depData.Exportable, false)
}

View file

@ -91,6 +91,12 @@ func (callbacks *JavaAconfigDeclarationsLibraryCallbacks) GenerateSourceJarBuild
if !isModeSupported(mode) {
ctx.PropertyErrorf("mode", "%q is not a supported mode", mode)
}
// TODO: uncomment this part after internal clean up
//if mode == "exported" && !declarations.Exportable {
// // if mode is exported, the corresponding aconfig_declaration must mark its
// // exportable property true
// ctx.PropertyErrorf("mode", "exported mode requires its aconfig_declaration has exportable prop true")
//}
ctx.Build(pctx, android.BuildParams{
Rule: javaRule,
@ -102,12 +108,15 @@ func (callbacks *JavaAconfigDeclarationsLibraryCallbacks) GenerateSourceJarBuild
},
})
if declarations.Exportable {
// Mark our generated code as possibly needing jarjar repackaging
// TODO: Maybe control this with a property?
// The repackaging only happens when the corresponding aconfig_declaration
// has property exportable true
module.AddJarJarRenameRule(declarations.Package+".Flags", "")
module.AddJarJarRenameRule(declarations.Package+".FeatureFlags", "")
module.AddJarJarRenameRule(declarations.Package+".FeatureFlagsImpl", "")
module.AddJarJarRenameRule(declarations.Package+".FakeFeatureFlagsImpl", "")
}
return srcJarPath
}

View file

@ -176,6 +176,7 @@ func testCodegenMode(t *testing.T, bpMode string, ruleMode string) {
name: "my_aconfig_declarations",
package: "com.example.package",
srcs: ["foo.aconfig"],
exportable: true,
}
java_aconfig_library {

View file

@ -35,6 +35,7 @@ var (
type AconfigDeclarationsProviderData struct {
Package string
Container string
Exportable bool
IntermediateCacheOutputPath WritablePath
IntermediateDumpOutputPath WritablePath
}