Merge "apex: support prebuilt_firmware for vendor apexes"
This commit is contained in:
commit
3a92fbeaff
|
@ -1740,7 +1740,7 @@ func apexFileForJavaLibrary(ctx android.BaseModuleContext, module javaModule) ap
|
||||||
}
|
}
|
||||||
|
|
||||||
func apexFileForPrebuiltEtc(ctx android.BaseModuleContext, prebuilt prebuilt_etc.PrebuiltEtcModule, depName string) apexFile {
|
func apexFileForPrebuiltEtc(ctx android.BaseModuleContext, prebuilt prebuilt_etc.PrebuiltEtcModule, depName string) apexFile {
|
||||||
dirInApex := filepath.Join("etc", prebuilt.SubDir())
|
dirInApex := filepath.Join(prebuilt.BaseDir(), prebuilt.SubDir())
|
||||||
fileToCopy := prebuilt.OutputFile()
|
fileToCopy := prebuilt.OutputFile()
|
||||||
return newApexFile(ctx, fileToCopy, depName, dirInApex, etc, prebuilt)
|
return newApexFile(ctx, fileToCopy, depName, dirInApex, etc, prebuilt)
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,7 +248,7 @@ func testApexContext(_ *testing.T, bp string, handlers ...testCustomizer) (*andr
|
||||||
ctx.RegisterModuleType("cc_test", cc.TestFactory)
|
ctx.RegisterModuleType("cc_test", cc.TestFactory)
|
||||||
ctx.RegisterModuleType("vndk_prebuilt_shared", cc.VndkPrebuiltSharedFactory)
|
ctx.RegisterModuleType("vndk_prebuilt_shared", cc.VndkPrebuiltSharedFactory)
|
||||||
ctx.RegisterModuleType("vndk_libraries_txt", cc.VndkLibrariesTxtFactory)
|
ctx.RegisterModuleType("vndk_libraries_txt", cc.VndkLibrariesTxtFactory)
|
||||||
ctx.RegisterModuleType("prebuilt_etc", prebuilt_etc.PrebuiltEtcFactory)
|
prebuilt_etc.RegisterPrebuiltEtcBuildComponents(ctx)
|
||||||
ctx.RegisterModuleType("platform_compat_config", java.PlatformCompatConfigFactory)
|
ctx.RegisterModuleType("platform_compat_config", java.PlatformCompatConfigFactory)
|
||||||
ctx.RegisterModuleType("sh_binary", sh.ShBinaryFactory)
|
ctx.RegisterModuleType("sh_binary", sh.ShBinaryFactory)
|
||||||
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
|
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
|
||||||
|
@ -2272,6 +2272,32 @@ func TestVendorApex_use_vndk_as_stable(t *testing.T) {
|
||||||
ensureListContains(t, requireNativeLibs, ":vndk")
|
ensureListContains(t, requireNativeLibs, ":vndk")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestVendorApex_withPrebuiltFirmware(t *testing.T) {
|
||||||
|
ctx, _ := testApex(t, `
|
||||||
|
apex {
|
||||||
|
name: "myapex",
|
||||||
|
key: "myapex.key",
|
||||||
|
prebuilts: ["myfirmware"],
|
||||||
|
vendor: true,
|
||||||
|
}
|
||||||
|
apex_key {
|
||||||
|
name: "myapex.key",
|
||||||
|
public_key: "testkey.avbpubkey",
|
||||||
|
private_key: "testkey.pem",
|
||||||
|
}
|
||||||
|
prebuilt_firmware {
|
||||||
|
name: "myfirmware",
|
||||||
|
src: "myfirmware.bin",
|
||||||
|
filename_from_src: true,
|
||||||
|
vendor: true,
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{
|
||||||
|
"firmware/myfirmware.bin",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestAndroidMk_UseVendorRequired(t *testing.T) {
|
func TestAndroidMk_UseVendorRequired(t *testing.T) {
|
||||||
ctx, config := testApex(t, `
|
ctx, config := testApex(t, `
|
||||||
apex {
|
apex {
|
||||||
|
|
11
cc/vndk.go
11
cc/vndk.go
|
@ -505,18 +505,25 @@ func (txt *vndkLibrariesTxt) AndroidMkEntries() []android.AndroidMkEntries {
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PrebuiltEtcModule interface
|
||||||
func (txt *vndkLibrariesTxt) OutputFile() android.OutputPath {
|
func (txt *vndkLibrariesTxt) OutputFile() android.OutputPath {
|
||||||
return txt.outputFile
|
return txt.outputFile
|
||||||
}
|
}
|
||||||
|
|
||||||
func (txt *vndkLibrariesTxt) OutputFiles(tag string) (android.Paths, error) {
|
// PrebuiltEtcModule interface
|
||||||
return android.Paths{txt.outputFile}, nil
|
func (txt *vndkLibrariesTxt) BaseDir() string {
|
||||||
|
return "etc"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PrebuiltEtcModule interface
|
||||||
func (txt *vndkLibrariesTxt) SubDir() string {
|
func (txt *vndkLibrariesTxt) SubDir() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (txt *vndkLibrariesTxt) OutputFiles(tag string) (android.Paths, error) {
|
||||||
|
return android.Paths{txt.outputFile}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func VndkSnapshotSingleton() android.Singleton {
|
func VndkSnapshotSingleton() android.Singleton {
|
||||||
return &vndkSnapshotSingleton{}
|
return &vndkSnapshotSingleton{}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,14 +28,17 @@ var pctx = android.NewPackageContext("android/soong/etc")
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
pctx.Import("android/soong/android")
|
pctx.Import("android/soong/android")
|
||||||
|
RegisterPrebuiltEtcBuildComponents(android.InitRegistrationContext)
|
||||||
|
}
|
||||||
|
|
||||||
android.RegisterModuleType("prebuilt_etc", PrebuiltEtcFactory)
|
func RegisterPrebuiltEtcBuildComponents(ctx android.RegistrationContext) {
|
||||||
android.RegisterModuleType("prebuilt_etc_host", PrebuiltEtcHostFactory)
|
ctx.RegisterModuleType("prebuilt_etc", PrebuiltEtcFactory)
|
||||||
android.RegisterModuleType("prebuilt_usr_share", PrebuiltUserShareFactory)
|
ctx.RegisterModuleType("prebuilt_etc_host", PrebuiltEtcHostFactory)
|
||||||
android.RegisterModuleType("prebuilt_usr_share_host", PrebuiltUserShareHostFactory)
|
ctx.RegisterModuleType("prebuilt_usr_share", PrebuiltUserShareFactory)
|
||||||
android.RegisterModuleType("prebuilt_font", PrebuiltFontFactory)
|
ctx.RegisterModuleType("prebuilt_usr_share_host", PrebuiltUserShareHostFactory)
|
||||||
android.RegisterModuleType("prebuilt_firmware", PrebuiltFirmwareFactory)
|
ctx.RegisterModuleType("prebuilt_font", PrebuiltFontFactory)
|
||||||
android.RegisterModuleType("prebuilt_dsp", PrebuiltDSPFactory)
|
ctx.RegisterModuleType("prebuilt_firmware", PrebuiltFirmwareFactory)
|
||||||
|
ctx.RegisterModuleType("prebuilt_dsp", PrebuiltDSPFactory)
|
||||||
}
|
}
|
||||||
|
|
||||||
type prebuiltEtcProperties struct {
|
type prebuiltEtcProperties struct {
|
||||||
|
@ -70,6 +73,7 @@ type prebuiltEtcProperties struct {
|
||||||
|
|
||||||
type PrebuiltEtcModule interface {
|
type PrebuiltEtcModule interface {
|
||||||
android.Module
|
android.Module
|
||||||
|
BaseDir() string
|
||||||
SubDir() string
|
SubDir() string
|
||||||
OutputFile() android.OutputPath
|
OutputFile() android.OutputPath
|
||||||
}
|
}
|
||||||
|
@ -167,6 +171,16 @@ func (p *PrebuiltEtc) SubDir() string {
|
||||||
return proptools.String(p.properties.Relative_install_path)
|
return proptools.String(p.properties.Relative_install_path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PrebuiltEtc) BaseDir() string {
|
||||||
|
// If soc install dir was specified and SOC specific is set, set the installDirPath to the specified
|
||||||
|
// socInstallDirBase.
|
||||||
|
installBaseDir := p.installDirBase
|
||||||
|
if p.SocSpecific() && p.socInstallDirBase != "" {
|
||||||
|
installBaseDir = p.socInstallDirBase
|
||||||
|
}
|
||||||
|
return installBaseDir
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PrebuiltEtc) Installable() bool {
|
func (p *PrebuiltEtc) Installable() bool {
|
||||||
return p.properties.Installable == nil || android.Bool(p.properties.Installable)
|
return p.properties.Installable == nil || android.Bool(p.properties.Installable)
|
||||||
}
|
}
|
||||||
|
@ -191,13 +205,7 @@ func (p *PrebuiltEtc) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||||
ctx.PropertyErrorf("sub_dir", "relative_install_path is set. Cannot set sub_dir")
|
ctx.PropertyErrorf("sub_dir", "relative_install_path is set. Cannot set sub_dir")
|
||||||
}
|
}
|
||||||
|
|
||||||
// If soc install dir was specified and SOC specific is set, set the installDirPath to the specified
|
p.installDirPath = android.PathForModuleInstall(ctx, p.BaseDir(), p.SubDir())
|
||||||
// socInstallDirBase.
|
|
||||||
installBaseDir := p.installDirBase
|
|
||||||
if ctx.SocSpecific() && p.socInstallDirBase != "" {
|
|
||||||
installBaseDir = p.socInstallDirBase
|
|
||||||
}
|
|
||||||
p.installDirPath = android.PathForModuleInstall(ctx, installBaseDir, p.SubDir())
|
|
||||||
|
|
||||||
// This ensures that outputFilePath has the correct name for others to
|
// This ensures that outputFilePath has the correct name for others to
|
||||||
// use, as the source file may have a different name.
|
// use, as the source file may have a different name.
|
||||||
|
|
|
@ -2069,6 +2069,11 @@ func (module *sdkLibraryXml) UniqueApexVariations() bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// from android.PrebuiltEtcModule
|
||||||
|
func (module *sdkLibraryXml) BaseDir() string {
|
||||||
|
return "etc"
|
||||||
|
}
|
||||||
|
|
||||||
// from android.PrebuiltEtcModule
|
// from android.PrebuiltEtcModule
|
||||||
func (module *sdkLibraryXml) SubDir() string {
|
func (module *sdkLibraryXml) SubDir() string {
|
||||||
return "permissions"
|
return "permissions"
|
||||||
|
|
Loading…
Reference in New Issue