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
Merged-In: I34e3e078733420b5cf777fd6e3ce4d8c5796b19b
(cherry picked from commit 7a41ebdf5f
)
This commit is contained in:
12
apex/apex.go
12
apex/apex.go
@@ -1296,6 +1296,7 @@ type Prebuilt struct {
|
||||
|
||||
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())
|
||||
},
|
||||
},
|
||||
|
@@ -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)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user