diff --git a/apex/apex_test.go b/apex/apex_test.go index 610f66750..5c49667e5 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -2282,30 +2282,40 @@ func TestVendorApex_use_vndk_as_stable(t *testing.T) { 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 TestApex_withPrebuiltFirmware(t *testing.T) { + testCases := []struct { + name string + additionalProp string + }{ + {"system apex with prebuilt_firmware", ""}, + {"vendor apex with prebuilt_firmware", "vendor: true,"}, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + ctx, _ := testApex(t, ` + apex { + name: "myapex", + key: "myapex.key", + prebuilts: ["myfirmware"], + `+tc.additionalProp+` + } + apex_key { + name: "myapex.key", + public_key: "testkey.avbpubkey", + private_key: "testkey.pem", + } + prebuilt_firmware { + name: "myfirmware", + src: "myfirmware.bin", + filename_from_src: true, + `+tc.additionalProp+` + } + `) + ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + "etc/firmware/myfirmware.bin", + }) + }) + } } func TestAndroidMk_UseVendorRequired(t *testing.T) { diff --git a/etc/prebuilt_etc.go b/etc/prebuilt_etc.go index 5dd2a8696..8e356793f 100644 --- a/etc/prebuilt_etc.go +++ b/etc/prebuilt_etc.go @@ -172,13 +172,7 @@ func (p *PrebuiltEtc) SubDir() string { } 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 + return p.installDirBase } func (p *PrebuiltEtc) Installable() bool { @@ -205,7 +199,13 @@ func (p *PrebuiltEtc) GenerateAndroidBuildActions(ctx android.ModuleContext) { ctx.PropertyErrorf("sub_dir", "relative_install_path is set. Cannot set sub_dir") } - p.installDirPath = android.PathForModuleInstall(ctx, p.BaseDir(), p.SubDir()) + // 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 + } + p.installDirPath = android.PathForModuleInstall(ctx, installBaseDir, p.SubDir()) // This ensures that outputFilePath has the correct name for others to // use, as the source file may have a different name.