Add filename property to prebuilt_apex

* Makes it more inline with prebuilt_etc;
* For shim apexes, prebuilt_apex modules have pattern of
  com.android.apex.cts.shim.v1_prebuilt, but I would prefer
  pre-installed shim to be: /system/apex/com.android.apex.cts.shim.apex

Bug: 128677967
Bug: 127789981
Test: m
Change-Id: I34e3e078733420b5cf777fd6e3ce4d8c5796b19b
This commit is contained in:
Nikita Ioffe 2019-04-04 18:09:48 +01:00
parent eb18c874f7
commit 7a41ebdf5f
2 changed files with 29 additions and 4 deletions

View File

@ -1294,8 +1294,9 @@ type Prebuilt struct {
properties PrebuiltProperties
inputApex android.Path
installDir android.OutputPath
inputApex android.Path
installDir android.OutputPath
installFilename string
}
type PrebuiltProperties struct {
@ -1319,6 +1320,9 @@ type PrebuiltProperties struct {
}
Installable *bool
// Optional name for the installed apex. If unspecified, name of the
// module is used as the file name
Filename *string
}
func (p *Prebuilt) installable() bool {
@ -1357,8 +1361,12 @@ func (p *Prebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) {
// TODO(jungjw): Check the key validity.
p.inputApex = p.Prebuilt().SingleSourcePath(ctx)
p.installDir = android.PathForModuleInstall(ctx, "apex")
p.installFilename = proptools.StringDefault(p.properties.Filename, ctx.ModuleName()+imageApexSuffix)
if !strings.HasSuffix(p.installFilename, imageApexSuffix) {
ctx.ModuleErrorf("filename should end in %s for prebuilt_apex", imageApexSuffix)
}
if p.installable() {
ctx.InstallFile(p.installDir, ctx.ModuleName()+imageApexSuffix, p.inputApex)
ctx.InstallFile(p.installDir, p.installFilename, p.inputApex)
}
}
@ -1378,7 +1386,7 @@ func (p *Prebuilt) AndroidMk() android.AndroidMkData {
Extra: []android.AndroidMkExtraFunc{
func(w io.Writer, outputFile android.Path) {
fmt.Fprintln(w, "LOCAL_MODULE_PATH :=", filepath.Join("$(OUT_DIR)", p.installDir.RelPathString()))
fmt.Fprintln(w, "LOCAL_MODULE_STEM :=", p.BaseModuleName()+imageApexSuffix)
fmt.Fprintln(w, "LOCAL_MODULE_STEM :=", p.installFilename)
fmt.Fprintln(w, "LOCAL_UNINSTALLABLE_MODULE :=", !p.installable())
},
},

View File

@ -1256,3 +1256,20 @@ func TestPrebuilt(t *testing.T) {
t.Errorf("inputApex invalid. expected: %q, actual: %q", expectedInput, prebuilt.inputApex.String())
}
}
func TestPrebuiltFilenameOverride(t *testing.T) {
ctx := testApex(t, `
prebuilt_apex {
name: "myapex",
src: "myapex-arm.apex",
filename: "notmyapex.apex",
}
`)
p := ctx.ModuleForTests("myapex", "android_common").Module().(*Prebuilt)
expected := "notmyapex.apex"
if p.installFilename != expected {
t.Errorf("installFilename invalid. expected: %q, actual: %q", expected, p.installFilename)
}
}