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

Commit 90ba5f4e authored by Colin Cross's avatar Colin Cross
Browse files

Add InstallInRoot to allow modules to install into root partition

If InstallInRoot() returns true the module will be installed to
$OUT/root or $OUT/recovery/root.

Bug: 141877526
Test: m checkbuild
Test: no change to build.ninja or Android-${TARGET_PRODUCT}.mk
Test: TestPathForModuleInstall
Change-Id: Id6e435c6019f11eeb5806528fd464dbf220b88d9
parent 62be1e3e
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -157,6 +157,7 @@ type ModuleContext interface {
	InstallInTestcases() bool
	InstallInSanitizerDir() bool
	InstallInRecovery() bool
	InstallInRoot() bool
	InstallBypassMake() bool

	RequiredModuleNames() []string
@@ -196,6 +197,7 @@ type Module interface {
	InstallInTestcases() bool
	InstallInSanitizerDir() bool
	InstallInRecovery() bool
	InstallInRoot() bool
	InstallBypassMake() bool
	SkipInstall()
	ExportedToMake() bool
@@ -846,6 +848,10 @@ func (m *ModuleBase) InstallInRecovery() bool {
	return Bool(m.commonProperties.Recovery)
}

func (m *ModuleBase) InstallInRoot() bool {
	return false
}

func (m *ModuleBase) InstallBypassMake() bool {
	return false
}
@@ -1522,6 +1528,10 @@ func (m *moduleContext) InstallInRecovery() bool {
	return m.module.InstallInRecovery()
}

func (m *moduleContext) InstallInRoot() bool {
	return m.module.InstallInRoot()
}

func (m *moduleContext) InstallBypassMake() bool {
	return m.module.InstallBypassMake()
}
+9 −2
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ type ModuleInstallPathContext interface {
	InstallInTestcases() bool
	InstallInSanitizerDir() bool
	InstallInRecovery() bool
	InstallInRoot() bool
	InstallBypassMake() bool
}

@@ -1159,8 +1160,12 @@ func modulePartition(ctx ModuleInstallPathContext) string {
	} else if ctx.InstallInTestcases() {
		partition = "testcases"
	} else if ctx.InstallInRecovery() {
		if ctx.InstallInRoot() {
			partition = "recovery/root"
		} else {
			// the layout of recovery partion is the same as that of system partition
			partition = "recovery/root/system"
		}
	} else if ctx.SocSpecific() {
		partition = ctx.DeviceConfig().VendorPath()
	} else if ctx.DeviceSpecific() {
@@ -1169,6 +1174,8 @@ func modulePartition(ctx ModuleInstallPathContext) string {
		partition = ctx.DeviceConfig().ProductPath()
	} else if ctx.SystemExtSpecific() {
		partition = ctx.DeviceConfig().SystemExtPath()
	} else if ctx.InstallInRoot() {
		partition = "root"
	} else {
		partition = "system"
	}
+39 −0
Original line number Diff line number Diff line
@@ -204,6 +204,7 @@ type moduleInstallPathContextImpl struct {
	inTestcases    bool
	inSanitizerDir bool
	inRecovery     bool
	inRoot         bool
}

func (moduleInstallPathContextImpl) Fs() pathtools.FileSystem {
@@ -232,6 +233,10 @@ func (m moduleInstallPathContextImpl) InstallInRecovery() bool {
	return m.inRecovery
}

func (m moduleInstallPathContextImpl) InstallInRoot() bool {
	return m.inRoot
}

func (m moduleInstallPathContextImpl) InstallBypassMake() bool {
	return false
}
@@ -313,6 +318,40 @@ func TestPathForModuleInstall(t *testing.T) {
			in:  []string{"bin", "my_test"},
			out: "target/product/test_device/system_ext/bin/my_test",
		},
		{
			name: "root binary",
			ctx: &moduleInstallPathContextImpl{
				baseModuleContext: baseModuleContext{
					target: deviceTarget,
				},
				inRoot: true,
			},
			in:  []string{"my_test"},
			out: "target/product/test_device/root/my_test",
		},
		{
			name: "recovery binary",
			ctx: &moduleInstallPathContextImpl{
				baseModuleContext: baseModuleContext{
					target: deviceTarget,
				},
				inRecovery: true,
			},
			in:  []string{"bin/my_test"},
			out: "target/product/test_device/recovery/root/system/bin/my_test",
		},
		{
			name: "recovery root binary",
			ctx: &moduleInstallPathContextImpl{
				baseModuleContext: baseModuleContext{
					target: deviceTarget,
				},
				inRecovery: true,
				inRoot:     true,
			},
			in:  []string{"my_test"},
			out: "target/product/test_device/recovery/root/my_test",
		},

		{
			name: "system native test binary",