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

Commit e1a8385d authored by Håkan Kvist's avatar Håkan Kvist
Browse files

Sysconfig: Allow runtime differentiation of product configuration

Single product partition can support multiple sku's with different
capabilities.
Add support to load configuration xml's from below locations.

product/etc/sysconf/sku_${ro.boot.hardware.sku}/*.xml
product/etc/permissions/sku_${ro.boot.hardware.sku}/*.xml

Fixes: 149416322
Bug: 149416322
Test: Manual, copy configuration file to above locations, confirm
      in logcat that files are loaded.
Change-Id: Ia945fb105403256ec335859579df51bad6c9860a
parent 9138e506
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -103,6 +103,9 @@ public class SystemConfig {
    // property for runtime configuration differentiation in vendor
    private static final String VENDOR_SKU_PROPERTY = "ro.boot.product.vendor.sku";

    // property for runtime configuration differentation in product
    private static final String PRODUCT_SKU_PROPERTY = "ro.boot.hardware.sku";

    private static final ArrayMap<String, ArraySet<String>> EMPTY_PERMISSIONS =
            new ArrayMap<>();

@@ -657,6 +660,17 @@ public class SystemConfig {
        readPermissions(parser, Environment.buildPath(
                Environment.getProductDirectory(), "etc", "permissions"), productPermissionFlag);

        String productSkuProperty = SystemProperties.get(PRODUCT_SKU_PROPERTY, "");
        if (!productSkuProperty.isEmpty()) {
            String productSkuDir = "sku_" + productSkuProperty;
            readPermissions(parser, Environment.buildPath(
                    Environment.getProductDirectory(), "etc", "sysconfig", productSkuDir),
                    productPermissionFlag);
            readPermissions(parser, Environment.buildPath(
                    Environment.getProductDirectory(), "etc", "permissions", productSkuDir),
                    productPermissionFlag);
        }

        // Allow /system_ext to customize all system configs
        readPermissions(parser, Environment.buildPath(
                Environment.getSystemExtDirectory(), "etc", "sysconfig"), ALLOW_ALL);