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:
16
apex/apex.go
16
apex/apex.go
@@ -1294,8 +1294,9 @@ type Prebuilt struct {
|
|||||||
|
|
||||||
properties PrebuiltProperties
|
properties PrebuiltProperties
|
||||||
|
|
||||||
inputApex android.Path
|
inputApex android.Path
|
||||||
installDir android.OutputPath
|
installDir android.OutputPath
|
||||||
|
installFilename string
|
||||||
}
|
}
|
||||||
|
|
||||||
type PrebuiltProperties struct {
|
type PrebuiltProperties struct {
|
||||||
@@ -1319,6 +1320,9 @@ type PrebuiltProperties struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Installable *bool
|
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 {
|
func (p *Prebuilt) installable() bool {
|
||||||
@@ -1357,8 +1361,12 @@ func (p *Prebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||||||
// TODO(jungjw): Check the key validity.
|
// TODO(jungjw): Check the key validity.
|
||||||
p.inputApex = p.Prebuilt().SingleSourcePath(ctx)
|
p.inputApex = p.Prebuilt().SingleSourcePath(ctx)
|
||||||
p.installDir = android.PathForModuleInstall(ctx, "apex")
|
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() {
|
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{
|
Extra: []android.AndroidMkExtraFunc{
|
||||||
func(w io.Writer, outputFile android.Path) {
|
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_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())
|
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())
|
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