Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ed75f613 authored by Nikita Ioffe's avatar Nikita Ioffe
Browse files

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 7a41ebdf)
parent 03a31cc2
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -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())
			},
		},
+17 −0
Original line number Diff line number Diff line
@@ -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)
	}
}