make ApexProperties defaultable

ApexPropreties are added in InitApexModule() and they are supposed to be
defaultable. To be defaultable, InitApexModule() should be called before
InitDefaultableModule().

Bug: 144332048
Test: m (soong test added)
Change-Id: I6c90ed3b66a086292a4c0ecb37c61f83769e62bd
This commit is contained in:
Jooyung Han 2019-11-13 10:50:48 +09:00 committed by Jiyong Park
parent 3eceaa3240
commit 18020eabc4
3 changed files with 45 additions and 10 deletions

View File

@ -115,6 +115,9 @@ func testApexContext(t *testing.T, bp string, handlers ...testCustomizer) (*andr
ctx.RegisterModuleType("cc_prebuilt_library_static", android.ModuleFactoryAdaptor(cc.PrebuiltStaticLibraryFactory))
ctx.RegisterModuleType("cc_binary", android.ModuleFactoryAdaptor(cc.BinaryFactory))
ctx.RegisterModuleType("cc_object", android.ModuleFactoryAdaptor(cc.ObjectFactory))
ctx.RegisterModuleType("cc_defaults", android.ModuleFactoryAdaptor(func() android.Module {
return cc.DefaultsFactory()
}))
ctx.RegisterModuleType("cc_test", android.ModuleFactoryAdaptor(cc.TestFactory))
ctx.RegisterModuleType("llndk_library", android.ModuleFactoryAdaptor(cc.LlndkLibraryFactory))
ctx.RegisterModuleType("vndk_prebuilt_shared", android.ModuleFactoryAdaptor(cc.VndkPrebuiltSharedFactory))
@ -2586,6 +2589,40 @@ func TestApexWithAppImports(t *testing.T) {
ensureContains(t, copyCmds, "image.apex/priv-app/AppFooPrivPrebuilt/AppFooPrivPrebuilt.apk")
}
func TestApexPropertiesShouldBeDefaultable(t *testing.T) {
// libfoo's apex_available comes from cc_defaults
testApexError(t, `"myapex" .*: requires "libfoo" that is not available for the APEX`, `
apex {
name: "myapex",
key: "myapex.key",
native_shared_libs: ["libfoo"],
}
apex_key {
name: "myapex.key",
public_key: "testkey.avbpubkey",
private_key: "testkey.pem",
}
apex {
name: "otherapex",
key: "myapex.key",
native_shared_libs: ["libfoo"],
}
cc_defaults {
name: "libfoo-defaults",
apex_available: ["otherapex"],
}
cc_library {
name: "libfoo",
defaults: ["libfoo-defaults"],
stl: "none",
system_shared_libs: [],
}`)
}
func TestApexAvailable(t *testing.T) {
// libfoo is not available to myapex, but only to otherapex
testApexError(t, "requires \"libfoo\" that is not available for the APEX", `

View File

@ -719,11 +719,9 @@ func (c *Module) Init() android.Module {
}
})
android.InitAndroidArchModule(c, c.hod, c.multilib)
android.InitDefaultableModule(c)
android.InitApexModule(c)
android.InitSdkAwareModule(c)
android.InitDefaultableModule(c)
return c
}
@ -2469,10 +2467,10 @@ func DefaultsFactory(props ...interface{}) android.Module {
&PgoProperties{},
&XomProperties{},
&android.ProtoProperties{},
&android.ApexProperties{},
)
android.InitDefaultsModule(module)
android.InitApexModule(module)
return module
}

View File

@ -1684,9 +1684,9 @@ func LibraryFactory() android.Module {
&module.Module.dexpreoptProperties,
&module.Module.protoProperties)
InitJavaModule(module, android.HostAndDeviceSupported)
android.InitApexModule(module)
android.InitSdkAwareModule(module)
InitJavaModule(module, android.HostAndDeviceSupported)
return module
}
@ -1708,8 +1708,8 @@ func LibraryHostFactory() android.Module {
module.Module.properties.Installable = proptools.BoolPtr(true)
InitJavaModule(module, android.HostSupported)
android.InitApexModule(module)
InitJavaModule(module, android.HostSupported)
return module
}
@ -2135,9 +2135,9 @@ func ImportFactory() android.Module {
module.AddProperties(&module.properties)
android.InitPrebuiltModule(module, &module.properties.Jars)
InitJavaModule(module, android.HostAndDeviceSupported)
android.InitApexModule(module)
android.InitSdkAwareModule(module)
InitJavaModule(module, android.HostAndDeviceSupported)
return module
}
@ -2152,8 +2152,8 @@ func ImportFactoryHost() android.Module {
module.AddProperties(&module.properties)
android.InitPrebuiltModule(module, &module.properties.Jars)
InitJavaModule(module, android.HostSupported)
android.InitApexModule(module)
InitJavaModule(module, android.HostSupported)
return module
}
@ -2264,8 +2264,8 @@ func DexImportFactory() android.Module {
module.AddProperties(&module.properties)
android.InitPrebuiltModule(module, &module.properties.Jars)
InitJavaModule(module, android.DeviceSupported)
android.InitApexModule(module)
InitJavaModule(module, android.DeviceSupported)
return module
}
@ -2331,10 +2331,10 @@ func DefaultsFactory(props ...interface{}) android.Module {
&AARImportProperties{},
&sdkLibraryProperties{},
&DexImportProperties{},
&android.ApexProperties{},
)
android.InitDefaultsModule(module)
android.InitApexModule(module)
return module
}