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:
commit
d1dfa74d1f
5 changed files with 42 additions and 6 deletions
|
@ -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,
|
||||
})
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
|||
},
|
||||
})
|
||||
|
||||
// Mark our generated code as possibly needing jarjar repackaging
|
||||
// TODO: Maybe control this with a property?
|
||||
module.AddJarJarRenameRule(declarations.Package+".Flags", "")
|
||||
module.AddJarJarRenameRule(declarations.Package+".FeatureFlags", "")
|
||||
module.AddJarJarRenameRule(declarations.Package+".FeatureFlagsImpl", "")
|
||||
module.AddJarJarRenameRule(declarations.Package+".FakeFeatureFlagsImpl", "")
|
||||
if declarations.Exportable {
|
||||
// Mark our generated code as possibly needing jarjar repackaging
|
||||
// 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
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -35,6 +35,7 @@ var (
|
|||
type AconfigDeclarationsProviderData struct {
|
||||
Package string
|
||||
Container string
|
||||
Exportable bool
|
||||
IntermediateCacheOutputPath WritablePath
|
||||
IntermediateDumpOutputPath WritablePath
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue