Rename product_services to system_ext

Bug: 134359158
Test: build and check if system_ext.img is created
Change-Id: Ice3229baf97a94c24a6eea22e7d4571941d7f843
This commit is contained in:
Justin Yun
2019-06-25 16:47:17 +09:00
parent cfec40c41b
commit d5f6c8261a
11 changed files with 70 additions and 63 deletions

View File

@@ -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_ODM_MODULE", Bool(amod.commonProperties.Device_specific))
a.SetBoolIfTrue("LOCAL_PRODUCT_MODULE", Bool(amod.commonProperties.Product_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 { if amod.commonProperties.Owner != nil {
a.SetString("LOCAL_MODULE_OWNER", *amod.commonProperties.Owner) a.SetString("LOCAL_MODULE_OWNER", *amod.commonProperties.Owner)
} }

View File

@@ -901,11 +901,11 @@ func (c *deviceConfig) ProductPath() string {
return "product" return "product"
} }
func (c *deviceConfig) ProductServicesPath() string { func (c *deviceConfig) SystemExtPath() string {
if c.config.productVariables.ProductServicesPath != nil { if c.config.productVariables.SystemExtPath != nil {
return *c.config.productVariables.ProductServicesPath return *c.config.productVariables.SystemExtPath
} }
return "product_services" return "system_ext"
} }
func (c *deviceConfig) BtConfigIncludeDir() string { func (c *deviceConfig) BtConfigIncludeDir() string {

View File

@@ -126,7 +126,7 @@ type BaseModuleContext interface {
DeviceSpecific() bool DeviceSpecific() bool
SocSpecific() bool SocSpecific() bool
ProductSpecific() bool ProductSpecific() bool
ProductServicesSpecific() bool SystemExtSpecific() bool
AConfig() Config AConfig() Config
DeviceConfig() DeviceConfig DeviceConfig() DeviceConfig
} }
@@ -350,11 +350,15 @@ type commonProperties struct {
// /system/product if product partition does not exist). // /system/product if product partition does not exist).
Product_specific *bool Product_specific *bool
// whether this module provides services owned by the OS provider to the core platform. When set // TODO(b/135957588) Product_services_specific will be removed once we clear all Android.bp
// to true, it is installed into /product_services (or /system/product_services if // files that have 'product_services_specific: true'. This will be converted to
// product_services partition does not exist). // Product_speicific as a workaround.
Product_services_specific *bool 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 // Whether this module is installed to recovery partition
Recovery *bool Recovery *bool
@@ -469,7 +473,7 @@ const (
deviceSpecificModule deviceSpecificModule
socSpecificModule socSpecificModule
productSpecificModule productSpecificModule
productServicesSpecificModule systemExtSpecificModule
) )
func (k moduleKind) String() string { func (k moduleKind) String() string {
@@ -482,8 +486,8 @@ func (k moduleKind) String() string {
return "soc-specific" return "soc-specific"
case productSpecificModule: case productSpecificModule:
return "product-specific" return "product-specific"
case productServicesSpecificModule: case systemExtSpecificModule:
return "productservices-specific" return "systemext-specific"
default: default:
panic(fmt.Errorf("unknown module kind %d", k)) panic(fmt.Errorf("unknown module kind %d", k))
} }
@@ -738,7 +742,7 @@ func (m *ModuleBase) DeviceSupported() bool {
} }
func (m *ModuleBase) Platform() 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 { func (m *ModuleBase) DeviceSpecific() bool {
@@ -753,8 +757,8 @@ func (m *ModuleBase) ProductSpecific() bool {
return Bool(m.commonProperties.Product_specific) return Bool(m.commonProperties.Product_specific)
} }
func (m *ModuleBase) ProductServicesSpecific() bool { func (m *ModuleBase) SystemExtSpecific() bool {
return Bool(m.commonProperties.Product_services_specific) return Bool(m.commonProperties.System_ext_specific)
} }
func (m *ModuleBase) Enabled() bool { 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 socSpecific = Bool(m.commonProperties.Vendor) || Bool(m.commonProperties.Proprietary) || Bool(m.commonProperties.Soc_specific)
var deviceSpecific = Bool(m.commonProperties.Device_specific) var deviceSpecific = Bool(m.commonProperties.Device_specific)
var productSpecific = Bool(m.commonProperties.Product_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" msg := "conflicting value set here"
if socSpecific && deviceSpecific { if socSpecific && deviceSpecific {
@@ -891,16 +895,16 @@ func determineModuleKind(m *ModuleBase, ctx blueprint.BaseModuleContext) moduleK
} }
} }
if productSpecific && productServicesSpecific { if productSpecific && systemExtSpecific {
ctx.PropertyErrorf("product_specific", "a module cannot be specific to product and product_services at the same time.") ctx.PropertyErrorf("product_specific", "a module cannot be specific to product and system_ext at the same time.")
ctx.PropertyErrorf("product_services_specific", msg) ctx.PropertyErrorf("system_ext_specific", msg)
} }
if (socSpecific || deviceSpecific) && (productSpecific || productServicesSpecific) { if (socSpecific || deviceSpecific) && (productSpecific || systemExtSpecific) {
if productSpecific { if productSpecific {
ctx.PropertyErrorf("product_specific", "a module cannot be specific to SoC or device and product at the same time.") ctx.PropertyErrorf("product_specific", "a module cannot be specific to SoC or device and product at the same time.")
} else { } 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 { if deviceSpecific {
ctx.PropertyErrorf("device_specific", msg) ctx.PropertyErrorf("device_specific", msg)
@@ -919,8 +923,8 @@ func determineModuleKind(m *ModuleBase, ctx blueprint.BaseModuleContext) moduleK
if productSpecific { if productSpecific {
return productSpecificModule return productSpecificModule
} else if productServicesSpecific { } else if systemExtSpecific {
return productServicesSpecificModule return systemExtSpecificModule
} else if deviceSpecific { } else if deviceSpecific {
return deviceSpecificModule return deviceSpecificModule
} else if socSpecific { } else if socSpecific {
@@ -1433,18 +1437,18 @@ func (b *baseModuleContext) ProductSpecific() bool {
return b.kind == productSpecificModule return b.kind == productSpecificModule
} }
func (b *baseModuleContext) ProductServicesSpecific() bool { func (b *baseModuleContext) SystemExtSpecific() bool {
return b.kind == productServicesSpecificModule return b.kind == systemExtSpecificModule
} }
// Makes this module a platform module, i.e. not specific to soc, device, // 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() { func (m *ModuleBase) MakeAsPlatform() {
m.commonProperties.Vendor = boolPtr(false) m.commonProperties.Vendor = boolPtr(false)
m.commonProperties.Proprietary = boolPtr(false) m.commonProperties.Proprietary = boolPtr(false)
m.commonProperties.Soc_specific = boolPtr(false) m.commonProperties.Soc_specific = boolPtr(false)
m.commonProperties.Product_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() { func (m *ModuleBase) EnableNativeBridgeSupportByDefault() {

View File

@@ -1145,8 +1145,8 @@ func modulePartition(ctx ModuleInstallPathContext) string {
partition = ctx.DeviceConfig().OdmPath() partition = ctx.DeviceConfig().OdmPath()
} else if ctx.ProductSpecific() { } else if ctx.ProductSpecific() {
partition = ctx.DeviceConfig().ProductPath() partition = ctx.DeviceConfig().ProductPath()
} else if ctx.ProductServicesSpecific() { } else if ctx.SystemExtSpecific() {
partition = ctx.DeviceConfig().ProductServicesPath() partition = ctx.DeviceConfig().SystemExtPath()
} else { } else {
partition = "system" partition = "system"
} }

View File

@@ -294,15 +294,15 @@ func TestPathForModuleInstall(t *testing.T) {
out: "target/product/test_device/product/bin/my_test", out: "target/product/test_device/product/bin/my_test",
}, },
{ {
name: "product_services binary", name: "system_ext binary",
ctx: &moduleInstallPathContextImpl{ ctx: &moduleInstallPathContextImpl{
baseModuleContext: baseModuleContext{ baseModuleContext: baseModuleContext{
target: deviceTarget, target: deviceTarget,
kind: productServicesSpecificModule, kind: systemExtSpecificModule,
}, },
}, },
in: []string{"bin", "my_test"}, 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{ ctx: &moduleInstallPathContextImpl{
baseModuleContext: baseModuleContext{ baseModuleContext: baseModuleContext{
target: deviceTarget, target: deviceTarget,
kind: productServicesSpecificModule, kind: systemExtSpecificModule,
}, },
inData: true, inData: true,
}, },
@@ -415,16 +415,16 @@ func TestPathForModuleInstall(t *testing.T) {
}, },
{ {
name: "sanitized product_services binary", name: "sanitized system_ext binary",
ctx: &moduleInstallPathContextImpl{ ctx: &moduleInstallPathContextImpl{
baseModuleContext: baseModuleContext{ baseModuleContext: baseModuleContext{
target: deviceTarget, target: deviceTarget,
kind: productServicesSpecificModule, kind: systemExtSpecificModule,
}, },
inSanitizerDir: true, inSanitizerDir: true,
}, },
in: []string{"bin", "my_test"}, 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", 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{ ctx: &moduleInstallPathContextImpl{
baseModuleContext: baseModuleContext{ baseModuleContext: baseModuleContext{
target: deviceTarget, target: deviceTarget,
kind: productServicesSpecificModule, kind: systemExtSpecificModule,
}, },
inData: true, inData: true,
inSanitizerDir: true, inSanitizerDir: true,

View File

@@ -232,10 +232,10 @@ type productVariables struct {
EnableXOM *bool `json:",omitempty"` EnableXOM *bool `json:",omitempty"`
XOMExcludePaths []string `json:",omitempty"` XOMExcludePaths []string `json:",omitempty"`
VendorPath *string `json:",omitempty"` VendorPath *string `json:",omitempty"`
OdmPath *string `json:",omitempty"` OdmPath *string `json:",omitempty"`
ProductPath *string `json:",omitempty"` ProductPath *string `json:",omitempty"`
ProductServicesPath *string `json:",omitempty"` SystemExtPath *string `json:",omitempty"`
ClangTidy *bool `json:",omitempty"` ClangTidy *bool `json:",omitempty"`
TidyChecks *string `json:",omitempty"` TidyChecks *string `json:",omitempty"`

View File

@@ -192,7 +192,7 @@ func init() {
"LOCAL_VENDOR_MODULE": "vendor", "LOCAL_VENDOR_MODULE": "vendor",
"LOCAL_ODM_MODULE": "device_specific", "LOCAL_ODM_MODULE": "device_specific",
"LOCAL_PRODUCT_MODULE": "product_specific", "LOCAL_PRODUCT_MODULE": "product_specific",
"LOCAL_PRODUCT_SERVICES_MODULE": "product_services_specific", "LOCAL_SYSTEM_EXT_MODULE": "system_ext_specific",
"LOCAL_EXPORT_PACKAGE_RESOURCES": "export_package_resources", "LOCAL_EXPORT_PACKAGE_RESOURCES": "export_package_resources",
"LOCAL_PRIVILEGED_MODULE": "privileged", "LOCAL_PRIVILEGED_MODULE": "privileged",
"LOCAL_AAPT_INCLUDE_ALL_RESOURCES": "aapt_include_all_resources", "LOCAL_AAPT_INCLUDE_ALL_RESOURCES": "aapt_include_all_resources",
@@ -602,8 +602,8 @@ func prebuiltModulePath(ctx variableAssignmentContext) error {
return fmt.Errorf("Cannot handle appending to LOCAL_MODULE_PATH") return fmt.Errorf("Cannot handle appending to LOCAL_MODULE_PATH")
} }
// Analyze value in order to set the correct values for the 'device_specific', // Analyze value in order to set the correct values for the 'device_specific',
// 'product_specific', 'product_services_specific' 'vendor'/'soc_specific', // 'product_specific', 'system_ext_specific' 'vendor'/'soc_specific',
// 'product_services_specific' attribute. Two cases are allowed: // 'system_ext_specific' attribute. Two cases are allowed:
// $(VAR)/<literal-value> // $(VAR)/<literal-value>
// $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/<literal-value> // $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/<literal-value>
// The last case is equivalent to $(TARGET_OUT_VENDOR)/<literal-value> // The last case is equivalent to $(TARGET_OUT_VENDOR)/<literal-value>

View File

@@ -957,37 +957,37 @@ prebuilt_etc {
`, `,
}, },
{ {
desc: "prebuilt_etc_TARGET_OUT_PRODUCT_SERVICES/etc", desc: "prebuilt_etc_TARGET_OUT_SYSTEM_EXT/etc",
in: ` in: `
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := etc.test1 LOCAL_MODULE := etc.test1
LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_SERVICES)/etc/foo/bar LOCAL_MODULE_PATH := $(TARGET_OUT_SYSTEM_EXT)/etc/foo/bar
include $(BUILD_PREBUILT) include $(BUILD_PREBUILT)
`, `,
expected: ` expected: `
prebuilt_etc { prebuilt_etc {
name: "etc.test1", name: "etc.test1",
sub_dir: "foo/bar", sub_dir: "foo/bar",
product_services_specific: true, system_ext_specific: true,
} }
`, `,
}, },
{ {
desc: "prebuilt_etc_TARGET_OUT_PRODUCT_SERVICES_ETC", desc: "prebuilt_etc_TARGET_OUT_SYSTEM_EXT_ETC",
in: ` in: `
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := etc.test1 LOCAL_MODULE := etc.test1
LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_SERVICES_ETC)/foo/bar LOCAL_MODULE_PATH := $(TARGET_OUT_SYSTEM_EXT_ETC)/foo/bar
include $(BUILD_PREBUILT) include $(BUILD_PREBUILT)
`, `,
expected: ` expected: `
prebuilt_etc { prebuilt_etc {
name: "etc.test1", name: "etc.test1",
sub_dir: "foo/bar", sub_dir: "foo/bar",
product_services_specific: true, system_ext_specific: true,
} }

View File

@@ -508,15 +508,15 @@ var localModuleUpdate = map[string][]etcPrebuiltModuleUpdate{
"TARGET_OUT": {{prefix: "/usr/share", modType: "prebuilt_usr_share"}, {prefix: "/fonts", modType: "prebuilt_font"}, "TARGET_OUT": {{prefix: "/usr/share", modType: "prebuilt_usr_share"}, {prefix: "/fonts", modType: "prebuilt_font"},
{prefix: "/etc/firmware", modType: "prebuilt_firmware"}, {prefix: "/vendor/firmware", modType: "prebuilt_firmware", flags: []string{"proprietary"}}, {prefix: "/etc/firmware", modType: "prebuilt_firmware"}, {prefix: "/vendor/firmware", modType: "prebuilt_firmware", flags: []string{"proprietary"}},
{prefix: "/etc"}}, {prefix: "/etc"}},
"TARGET_OUT_ETC": {{prefix: "/firmware", modType: "prebuilt_firmware"}, {prefix: ""}}, "TARGET_OUT_ETC": {{prefix: "/firmware", modType: "prebuilt_firmware"}, {prefix: ""}},
"TARGET_OUT_PRODUCT": {{prefix: "/etc", flags: []string{"product_specific"}}, {prefix: "/fonts", modType: "prebuilt_font", flags: []string{"product_specific"}}}, "TARGET_OUT_PRODUCT": {{prefix: "/etc", flags: []string{"product_specific"}}, {prefix: "/fonts", modType: "prebuilt_font", flags: []string{"product_specific"}}},
"TARGET_OUT_PRODUCT_ETC": {{prefix: "", flags: []string{"product_specific"}}}, "TARGET_OUT_PRODUCT_ETC": {{prefix: "", flags: []string{"product_specific"}}},
"TARGET_OUT_ODM": {{prefix: "/etc", flags: []string{"device_specific"}}}, "TARGET_OUT_ODM": {{prefix: "/etc", flags: []string{"device_specific"}}},
"TARGET_OUT_PRODUCT_SERVICES": {{prefix: "/etc", flags: []string{"product_services_specific"}}}, "TARGET_OUT_SYSTEM_EXT": {{prefix: "/etc", flags: []string{"system_ext_specific"}}},
"TARGET_OUT_PRODUCT_SERVICES_ETC": {{prefix: "", flags: []string{"product_services_specific"}}}, "TARGET_OUT_SYSTEM_EXT_ETC": {{prefix: "", flags: []string{"system_ext_specific"}}},
"TARGET_OUT_VENDOR": {{prefix: "/etc", flags: []string{"proprietary"}}, {prefix: "/firmware", modType: "prebuilt_firmware", flags: []string{"proprietary"}}}, "TARGET_OUT_VENDOR": {{prefix: "/etc", flags: []string{"proprietary"}}, {prefix: "/firmware", modType: "prebuilt_firmware", flags: []string{"proprietary"}}},
"TARGET_OUT_VENDOR_ETC": {{prefix: "", flags: []string{"proprietary"}}}, "TARGET_OUT_VENDOR_ETC": {{prefix: "", flags: []string{"proprietary"}}},
"TARGET_RECOVERY_ROOT_OUT": {{prefix: "/system/etc", flags: []string{"recovery"}}}, "TARGET_RECOVERY_ROOT_OUT": {{prefix: "/system/etc", flags: []string{"recovery"}}},
} }
// rewriteAndroidPrebuiltEtc fixes prebuilt_etc rule // rewriteAndroidPrebuiltEtc fixes prebuilt_etc rule

View File

@@ -28,7 +28,7 @@ var targetZipPartitions = []string{
"ODM/", "ODM/",
"OEM/", "OEM/",
"PRODUCT/", "PRODUCT/",
"PRODUCT_SERVICES/", "SYSTEM_EXT/",
"ROOT/", "ROOT/",
"SYSTEM/", "SYSTEM/",
"SYSTEM_OTHER/", "SYSTEM_OTHER/",

View File

@@ -111,7 +111,7 @@ func installClean(ctx Context, config Config, what int) {
productOut("system_other"), productOut("system_other"),
productOut("vendor"), productOut("vendor"),
productOut("product"), productOut("product"),
productOut("product_services"), productOut("system_ext"),
productOut("oem"), productOut("oem"),
productOut("obj/FAKE"), productOut("obj/FAKE"),
productOut("breakpad"), productOut("breakpad"),