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_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)
}

View File

@ -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 {

View File

@ -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() {

View File

@ -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"
}

View File

@ -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,

View File

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

View File

@ -192,7 +192,7 @@ func init() {
"LOCAL_VENDOR_MODULE": "vendor",
"LOCAL_ODM_MODULE": "device_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_PRIVILEGED_MODULE": "privileged",
"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")
}
// Analyze value in order to set the correct values for the 'device_specific',
// 'product_specific', 'product_services_specific' 'vendor'/'soc_specific',
// 'product_services_specific' attribute. Two cases are allowed:
// 'product_specific', 'system_ext_specific' 'vendor'/'soc_specific',
// 'system_ext_specific' attribute. Two cases are allowed:
// $(VAR)/<literal-value>
// $(PRODUCT_OUT)/$(TARGET_COPY_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: `
include $(CLEAR_VARS)
LOCAL_MODULE := etc.test1
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)
`,
expected: `
prebuilt_etc {
name: "etc.test1",
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: `
include $(CLEAR_VARS)
LOCAL_MODULE := etc.test1
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)
`,
expected: `
prebuilt_etc {
name: "etc.test1",
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"},
{prefix: "/etc/firmware", modType: "prebuilt_firmware"}, {prefix: "/vendor/firmware", modType: "prebuilt_firmware", flags: []string{"proprietary"}},
{prefix: "/etc"}},
"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_ETC": {{prefix: "", flags: []string{"product_specific"}}},
"TARGET_OUT_ODM": {{prefix: "/etc", flags: []string{"device_specific"}}},
"TARGET_OUT_PRODUCT_SERVICES": {{prefix: "/etc", flags: []string{"product_services_specific"}}},
"TARGET_OUT_PRODUCT_SERVICES_ETC": {{prefix: "", flags: []string{"product_services_specific"}}},
"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_RECOVERY_ROOT_OUT": {{prefix: "/system/etc", flags: []string{"recovery"}}},
"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_ETC": {{prefix: "", flags: []string{"product_specific"}}},
"TARGET_OUT_ODM": {{prefix: "/etc", flags: []string{"device_specific"}}},
"TARGET_OUT_SYSTEM_EXT": {{prefix: "/etc", flags: []string{"system_ext_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_ETC": {{prefix: "", flags: []string{"proprietary"}}},
"TARGET_RECOVERY_ROOT_OUT": {{prefix: "/system/etc", flags: []string{"recovery"}}},
}
// rewriteAndroidPrebuiltEtc fixes prebuilt_etc rule

View File

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

View File

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