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

Commit d5f6c826 authored by Justin Yun's avatar Justin Yun
Browse files

Rename product_services to system_ext

Bug: 134359158
Test: build and check if system_ext.img is created
Change-Id: Ice3229baf97a94c24a6eea22e7d4571941d7f843
parent cfec40c4
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -216,7 +216,10 @@ func (a *AndroidMkEntries) fillInEntries(config Config, bpPath string, mod bluep
		}
		a.SetBoolIfTrue("LOCAL_ODM_MODULE", Bool(amod.commonProperties.Device_specific))
		a.SetBoolIfTrue("LOCAL_PRODUCT_MODULE", Bool(amod.commonProperties.Product_specific))
		a.SetBoolIfTrue("LOCAL_PRODUCT_SERVICES_MODULE", Bool(amod.commonProperties.Product_services_specific))
		// TODO(b/135957588) product_services_specific is matched to LOCAL_PRODUCT_MODULE
		// as a workaround. Remove this after clearing all Android.bp
		a.SetBoolIfTrue("LOCAL_PRODUCT_MODULE", Bool(amod.commonProperties.Product_services_specific))
		a.SetBoolIfTrue("LOCAL_SYSTEM_EXT_MODULE", Bool(amod.commonProperties.System_ext_specific))
		if amod.commonProperties.Owner != nil {
			a.SetString("LOCAL_MODULE_OWNER", *amod.commonProperties.Owner)
		}
+4 −4
Original line number Diff line number Diff line
@@ -901,11 +901,11 @@ func (c *deviceConfig) ProductPath() string {
	return "product"
}

func (c *deviceConfig) ProductServicesPath() string {
	if c.config.productVariables.ProductServicesPath != nil {
		return *c.config.productVariables.ProductServicesPath
func (c *deviceConfig) SystemExtPath() string {
	if c.config.productVariables.SystemExtPath != nil {
		return *c.config.productVariables.SystemExtPath
	}
	return "product_services"
	return "system_ext"
}

func (c *deviceConfig) BtConfigIncludeDir() string {
+26 −22
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@ type BaseModuleContext interface {
	DeviceSpecific() bool
	SocSpecific() bool
	ProductSpecific() bool
	ProductServicesSpecific() bool
	SystemExtSpecific() bool
	AConfig() Config
	DeviceConfig() DeviceConfig
}
@@ -350,11 +350,15 @@ type commonProperties struct {
	// /system/product if product partition does not exist).
	Product_specific *bool

	// whether this module provides services owned by the OS provider to the core platform. When set
	// to true, it is installed into  /product_services (or /system/product_services if
	// product_services partition does not exist).
	// TODO(b/135957588) Product_services_specific will be removed once we clear all Android.bp
	// files that have 'product_services_specific: true'. This will be converted to
	// Product_speicific as a workaround.
	Product_services_specific *bool

	// whether this module extends system. When set to true, it is installed into /system_ext
	// (or /system/system_ext if system_ext partition does not exist).
	System_ext_specific *bool

	// Whether this module is installed to recovery partition
	Recovery *bool

@@ -469,7 +473,7 @@ const (
	deviceSpecificModule
	socSpecificModule
	productSpecificModule
	productServicesSpecificModule
	systemExtSpecificModule
)

func (k moduleKind) String() string {
@@ -482,8 +486,8 @@ func (k moduleKind) String() string {
		return "soc-specific"
	case productSpecificModule:
		return "product-specific"
	case productServicesSpecificModule:
		return "productservices-specific"
	case systemExtSpecificModule:
		return "systemext-specific"
	default:
		panic(fmt.Errorf("unknown module kind %d", k))
	}
@@ -738,7 +742,7 @@ func (m *ModuleBase) DeviceSupported() bool {
}

func (m *ModuleBase) Platform() bool {
	return !m.DeviceSpecific() && !m.SocSpecific() && !m.ProductSpecific() && !m.ProductServicesSpecific()
	return !m.DeviceSpecific() && !m.SocSpecific() && !m.ProductSpecific() && !m.SystemExtSpecific()
}

func (m *ModuleBase) DeviceSpecific() bool {
@@ -753,8 +757,8 @@ func (m *ModuleBase) ProductSpecific() bool {
	return Bool(m.commonProperties.Product_specific)
}

func (m *ModuleBase) ProductServicesSpecific() bool {
	return Bool(m.commonProperties.Product_services_specific)
func (m *ModuleBase) SystemExtSpecific() bool {
	return Bool(m.commonProperties.System_ext_specific)
}

func (m *ModuleBase) Enabled() bool {
@@ -875,7 +879,7 @@ func determineModuleKind(m *ModuleBase, ctx blueprint.BaseModuleContext) moduleK
	var socSpecific = Bool(m.commonProperties.Vendor) || Bool(m.commonProperties.Proprietary) || Bool(m.commonProperties.Soc_specific)
	var deviceSpecific = Bool(m.commonProperties.Device_specific)
	var productSpecific = Bool(m.commonProperties.Product_specific)
	var productServicesSpecific = Bool(m.commonProperties.Product_services_specific)
	var systemExtSpecific = Bool(m.commonProperties.System_ext_specific)

	msg := "conflicting value set here"
	if socSpecific && deviceSpecific {
@@ -891,16 +895,16 @@ func determineModuleKind(m *ModuleBase, ctx blueprint.BaseModuleContext) moduleK
		}
	}

	if productSpecific && productServicesSpecific {
		ctx.PropertyErrorf("product_specific", "a module cannot be specific to product and product_services at the same time.")
		ctx.PropertyErrorf("product_services_specific", msg)
	if productSpecific && systemExtSpecific {
		ctx.PropertyErrorf("product_specific", "a module cannot be specific to product and system_ext at the same time.")
		ctx.PropertyErrorf("system_ext_specific", msg)
	}

	if (socSpecific || deviceSpecific) && (productSpecific || productServicesSpecific) {
	if (socSpecific || deviceSpecific) && (productSpecific || systemExtSpecific) {
		if productSpecific {
			ctx.PropertyErrorf("product_specific", "a module cannot be specific to SoC or device and product at the same time.")
		} else {
			ctx.PropertyErrorf("product_services_specific", "a module cannot be specific to SoC or device and product_services at the same time.")
			ctx.PropertyErrorf("system_ext_specific", "a module cannot be specific to SoC or device and system_ext at the same time.")
		}
		if deviceSpecific {
			ctx.PropertyErrorf("device_specific", msg)
@@ -919,8 +923,8 @@ func determineModuleKind(m *ModuleBase, ctx blueprint.BaseModuleContext) moduleK

	if productSpecific {
		return productSpecificModule
	} else if productServicesSpecific {
		return productServicesSpecificModule
	} else if systemExtSpecific {
		return systemExtSpecificModule
	} else if deviceSpecific {
		return deviceSpecificModule
	} else if socSpecific {
@@ -1433,18 +1437,18 @@ func (b *baseModuleContext) ProductSpecific() bool {
	return b.kind == productSpecificModule
}

func (b *baseModuleContext) ProductServicesSpecific() bool {
	return b.kind == productServicesSpecificModule
func (b *baseModuleContext) SystemExtSpecific() bool {
	return b.kind == systemExtSpecificModule
}

// Makes this module a platform module, i.e. not specific to soc, device,
// product, or product_services.
// product, or system_ext.
func (m *ModuleBase) MakeAsPlatform() {
	m.commonProperties.Vendor = boolPtr(false)
	m.commonProperties.Proprietary = boolPtr(false)
	m.commonProperties.Soc_specific = boolPtr(false)
	m.commonProperties.Product_specific = boolPtr(false)
	m.commonProperties.Product_services_specific = boolPtr(false)
	m.commonProperties.System_ext_specific = boolPtr(false)
}

func (m *ModuleBase) EnableNativeBridgeSupportByDefault() {
+2 −2
Original line number Diff line number Diff line
@@ -1145,8 +1145,8 @@ func modulePartition(ctx ModuleInstallPathContext) string {
		partition = ctx.DeviceConfig().OdmPath()
	} else if ctx.ProductSpecific() {
		partition = ctx.DeviceConfig().ProductPath()
	} else if ctx.ProductServicesSpecific() {
		partition = ctx.DeviceConfig().ProductServicesPath()
	} else if ctx.SystemExtSpecific() {
		partition = ctx.DeviceConfig().SystemExtPath()
	} else {
		partition = "system"
	}
+10 −10
Original line number Diff line number Diff line
@@ -294,15 +294,15 @@ func TestPathForModuleInstall(t *testing.T) {
			out: "target/product/test_device/product/bin/my_test",
		},
		{
			name: "product_services binary",
			name: "system_ext binary",
			ctx: &moduleInstallPathContextImpl{
				baseModuleContext: baseModuleContext{
					target: deviceTarget,
					kind:   productServicesSpecificModule,
					kind:   systemExtSpecificModule,
				},
			},
			in:  []string{"bin", "my_test"},
			out: "target/product/test_device/product_services/bin/my_test",
			out: "target/product/test_device/system_ext/bin/my_test",
		},

		{
@@ -354,11 +354,11 @@ func TestPathForModuleInstall(t *testing.T) {
		},

		{
			name: "product_services native test binary",
			name: "system_ext native test binary",
			ctx: &moduleInstallPathContextImpl{
				baseModuleContext: baseModuleContext{
					target: deviceTarget,
					kind:   productServicesSpecificModule,
					kind:   systemExtSpecificModule,
				},
				inData: true,
			},
@@ -415,16 +415,16 @@ func TestPathForModuleInstall(t *testing.T) {
		},

		{
			name: "sanitized product_services binary",
			name: "sanitized system_ext binary",
			ctx: &moduleInstallPathContextImpl{
				baseModuleContext: baseModuleContext{
					target: deviceTarget,
					kind:   productServicesSpecificModule,
					kind:   systemExtSpecificModule,
				},
				inSanitizerDir: true,
			},
			in:  []string{"bin", "my_test"},
			out: "target/product/test_device/data/asan/product_services/bin/my_test",
			out: "target/product/test_device/data/asan/system_ext/bin/my_test",
		},

		{
@@ -479,11 +479,11 @@ func TestPathForModuleInstall(t *testing.T) {
			out: "target/product/test_device/data/asan/data/nativetest/my_test",
		},
		{
			name: "sanitized product_services native test binary",
			name: "sanitized system_ext native test binary",
			ctx: &moduleInstallPathContextImpl{
				baseModuleContext: baseModuleContext{
					target: deviceTarget,
					kind:   productServicesSpecificModule,
					kind:   systemExtSpecificModule,
				},
				inData:         true,
				inSanitizerDir: true,
Loading