Loading Android.bp +9 −0 Original line number Diff line number Diff line Loading @@ -141,3 +141,12 @@ build_prop { "//packages/modules/Virtualization/build/microdroid", ], } build_prop { name: "system_ext-build.prop", stem: "build.prop", system_ext_specific: true, product_config: ":product_config", relative_install_path: "etc", // system_ext/etc/build.prop visibility: ["//visibility:private"], } android/build_prop.go +8 −3 Original line number Diff line number Diff line Loading @@ -37,6 +37,9 @@ type buildPropProperties struct { // Path to a JSON file containing product configs. Product_config *string `android:"path"` // Optional subdirectory under which this file is installed into Relative_install_path *string } type buildPropModule struct { Loading @@ -56,6 +59,8 @@ func (p *buildPropModule) propFiles(ctx ModuleContext) Paths { partition := p.PartitionTag(ctx.DeviceConfig()) if partition == "system" { return ctx.Config().SystemPropFiles(ctx) } else if partition == "system_ext" { return ctx.Config().SystemExtPropFiles(ctx) } return nil } Loading Loading @@ -84,8 +89,8 @@ func (p *buildPropModule) GenerateAndroidBuildActions(ctx ModuleContext) { } partition := p.PartitionTag(ctx.DeviceConfig()) if partition != "system" { ctx.PropertyErrorf("partition", "unsupported partition %q: only \"system\" is supported", partition) if partition != "system" && partition != "system_ext" { ctx.PropertyErrorf("partition", "unsupported partition %q: only \"system\" and \"system_ext\" are supported", partition) return } Loading Loading @@ -134,7 +139,7 @@ func (p *buildPropModule) GenerateAndroidBuildActions(ctx ModuleContext) { rule.Build(ctx.ModuleName(), "generating build.prop") p.installPath = PathForModuleInstall(ctx) p.installPath = PathForModuleInstall(ctx, proptools.String(p.properties.Relative_install_path)) ctx.InstallFile(p.installPath, p.stem(), p.outputFilePath) ctx.SetOutputFiles(Paths{p.outputFilePath}, "") Loading android/config.go +4 −0 Original line number Diff line number Diff line Loading @@ -2090,6 +2090,10 @@ func (c *config) SystemPropFiles(ctx PathContext) Paths { return PathsForSource(ctx, c.productVariables.SystemPropFiles) } func (c *config) SystemExtPropFiles(ctx PathContext) Paths { return PathsForSource(ctx, c.productVariables.SystemExtPropFiles) } func (c *config) EnableUffdGc() string { return String(c.productVariables.EnableUffdGc) } android/variable.go +2 −1 Original line number Diff line number Diff line Loading @@ -509,6 +509,7 @@ type ProductVariables struct { ArtTargetIncludeDebugBuild *bool `json:",omitempty"` SystemPropFiles []string `json:",omitempty"` SystemExtPropFiles []string `json:",omitempty"` EnableUffdGc *string `json:",omitempty"` } Loading scripts/gen_build_prop.py +21 −10 Original line number Diff line number Diff line Loading @@ -129,16 +129,16 @@ def generate_common_build_props(args): print(f"ro.product.{partition}.name={config['DeviceProduct']}") if partition != "system": if config["ModelForAttestation"]: print(f"ro.product.model_for_attestation={config['ModelForAttestation']}") if config["BrandForAttestation"]: print(f"ro.product.brand_for_attestation={config['BrandForAttestation']}") if config["NameForAttestation"]: print(f"ro.product.name_for_attestation={config['NameForAttestation']}") if config["DeviceForAttestation"]: print(f"ro.product.device_for_attestation={config['DeviceForAttestation']}") if config["ManufacturerForAttestation"]: print(f"ro.product.manufacturer_for_attestation={config['ManufacturerForAttestation']}") if config["ProductModelForAttestation"]: print(f"ro.product.model_for_attestation={config['ProductModelForAttestation']}") if config["ProductBrandForAttestation"]: print(f"ro.product.brand_for_attestation={config['ProductBrandForAttestation']}") if config["ProductNameForAttestation"]: print(f"ro.product.name_for_attestation={config['ProductNameForAttestation']}") if config["ProductDeviceForAttestation"]: print(f"ro.product.device_for_attestation={config['ProductDeviceForAttestation']}") if config["ProductManufacturerForAttestation"]: print(f"ro.product.manufacturer_for_attestation={config['ProductManufacturerForAttestation']}") if config["ZygoteForce64"]: if partition == "vendor": Loading Loading @@ -511,6 +511,15 @@ def build_system_prop(args): build_prop(args, gen_build_info=True, gen_common_build_props=True, variables=variables) def build_system_ext_prop(args): config = args.config # Order matters here. When there are duplicates, the last one wins. # TODO(b/117892318): don't allow duplicates so that the ordering doesn't matter variables = ["PRODUCT_SYSTEM_EXT_PROPERTIES"] build_prop(args, gen_build_info=False, gen_common_build_props=True, variables=variables) ''' def build_vendor_prop(args): config = args.config Loading Loading @@ -563,6 +572,8 @@ def main(): with contextlib.redirect_stdout(args.out): if args.partition == "system": build_system_prop(args) elif args.partition == "system_ext": build_system_ext_prop(args) ''' elif args.partition == "vendor": build_vendor_prop(args) Loading Loading
Android.bp +9 −0 Original line number Diff line number Diff line Loading @@ -141,3 +141,12 @@ build_prop { "//packages/modules/Virtualization/build/microdroid", ], } build_prop { name: "system_ext-build.prop", stem: "build.prop", system_ext_specific: true, product_config: ":product_config", relative_install_path: "etc", // system_ext/etc/build.prop visibility: ["//visibility:private"], }
android/build_prop.go +8 −3 Original line number Diff line number Diff line Loading @@ -37,6 +37,9 @@ type buildPropProperties struct { // Path to a JSON file containing product configs. Product_config *string `android:"path"` // Optional subdirectory under which this file is installed into Relative_install_path *string } type buildPropModule struct { Loading @@ -56,6 +59,8 @@ func (p *buildPropModule) propFiles(ctx ModuleContext) Paths { partition := p.PartitionTag(ctx.DeviceConfig()) if partition == "system" { return ctx.Config().SystemPropFiles(ctx) } else if partition == "system_ext" { return ctx.Config().SystemExtPropFiles(ctx) } return nil } Loading Loading @@ -84,8 +89,8 @@ func (p *buildPropModule) GenerateAndroidBuildActions(ctx ModuleContext) { } partition := p.PartitionTag(ctx.DeviceConfig()) if partition != "system" { ctx.PropertyErrorf("partition", "unsupported partition %q: only \"system\" is supported", partition) if partition != "system" && partition != "system_ext" { ctx.PropertyErrorf("partition", "unsupported partition %q: only \"system\" and \"system_ext\" are supported", partition) return } Loading Loading @@ -134,7 +139,7 @@ func (p *buildPropModule) GenerateAndroidBuildActions(ctx ModuleContext) { rule.Build(ctx.ModuleName(), "generating build.prop") p.installPath = PathForModuleInstall(ctx) p.installPath = PathForModuleInstall(ctx, proptools.String(p.properties.Relative_install_path)) ctx.InstallFile(p.installPath, p.stem(), p.outputFilePath) ctx.SetOutputFiles(Paths{p.outputFilePath}, "") Loading
android/config.go +4 −0 Original line number Diff line number Diff line Loading @@ -2090,6 +2090,10 @@ func (c *config) SystemPropFiles(ctx PathContext) Paths { return PathsForSource(ctx, c.productVariables.SystemPropFiles) } func (c *config) SystemExtPropFiles(ctx PathContext) Paths { return PathsForSource(ctx, c.productVariables.SystemExtPropFiles) } func (c *config) EnableUffdGc() string { return String(c.productVariables.EnableUffdGc) }
android/variable.go +2 −1 Original line number Diff line number Diff line Loading @@ -509,6 +509,7 @@ type ProductVariables struct { ArtTargetIncludeDebugBuild *bool `json:",omitempty"` SystemPropFiles []string `json:",omitempty"` SystemExtPropFiles []string `json:",omitempty"` EnableUffdGc *string `json:",omitempty"` } Loading
scripts/gen_build_prop.py +21 −10 Original line number Diff line number Diff line Loading @@ -129,16 +129,16 @@ def generate_common_build_props(args): print(f"ro.product.{partition}.name={config['DeviceProduct']}") if partition != "system": if config["ModelForAttestation"]: print(f"ro.product.model_for_attestation={config['ModelForAttestation']}") if config["BrandForAttestation"]: print(f"ro.product.brand_for_attestation={config['BrandForAttestation']}") if config["NameForAttestation"]: print(f"ro.product.name_for_attestation={config['NameForAttestation']}") if config["DeviceForAttestation"]: print(f"ro.product.device_for_attestation={config['DeviceForAttestation']}") if config["ManufacturerForAttestation"]: print(f"ro.product.manufacturer_for_attestation={config['ManufacturerForAttestation']}") if config["ProductModelForAttestation"]: print(f"ro.product.model_for_attestation={config['ProductModelForAttestation']}") if config["ProductBrandForAttestation"]: print(f"ro.product.brand_for_attestation={config['ProductBrandForAttestation']}") if config["ProductNameForAttestation"]: print(f"ro.product.name_for_attestation={config['ProductNameForAttestation']}") if config["ProductDeviceForAttestation"]: print(f"ro.product.device_for_attestation={config['ProductDeviceForAttestation']}") if config["ProductManufacturerForAttestation"]: print(f"ro.product.manufacturer_for_attestation={config['ProductManufacturerForAttestation']}") if config["ZygoteForce64"]: if partition == "vendor": Loading Loading @@ -511,6 +511,15 @@ def build_system_prop(args): build_prop(args, gen_build_info=True, gen_common_build_props=True, variables=variables) def build_system_ext_prop(args): config = args.config # Order matters here. When there are duplicates, the last one wins. # TODO(b/117892318): don't allow duplicates so that the ordering doesn't matter variables = ["PRODUCT_SYSTEM_EXT_PROPERTIES"] build_prop(args, gen_build_info=False, gen_common_build_props=True, variables=variables) ''' def build_vendor_prop(args): config = args.config Loading Loading @@ -563,6 +572,8 @@ def main(): with contextlib.redirect_stdout(args.out): if args.partition == "system": build_system_prop(args) elif args.partition == "system_ext": build_system_ext_prop(args) ''' elif args.partition == "vendor": build_vendor_prop(args) Loading