Fix single value variable inheritance order
List variables needed to be percolated in the order of inherit() calls.
children.keys() was in that order, due to starlark dictionaries being
iterable in the order of insertion, but the previous cl broke that
behavior by sorting them. Instead, only sort the children for
single value variables.
Fixes: 226206409
Fixes: 228044099
Test: ./out/rbcrun ./build/make/tests/run.rbc and testing aosp_arm64
Change-Id: I5b91514e87b158b615e4d4ec7868fccb0248379b
diff --git a/tests/single_value_inheritance/inherit1.rbc b/tests/single_value_inheritance/inherit1.rbc
index b71ffb3..0cc98a9 100644
--- a/tests/single_value_inheritance/inherit1.rbc
+++ b/tests/single_value_inheritance/inherit1.rbc
@@ -19,3 +19,5 @@
cfg["PRODUCT_CHARACTERISTICS"] = "tablet"
cfg["PRODUCT_DEFAULT_DEV_CERTIFICATE"] = "vendor/myvendor/certs/devkeys/devkey"
+ cfg.setdefault("PRODUCT_PACKAGES", [])
+ cfg["PRODUCT_PACKAGES"] += ["bar"]
diff --git a/tests/single_value_inheritance/inherit2.rbc b/tests/single_value_inheritance/inherit2.rbc
index be85866..ed5e569 100644
--- a/tests/single_value_inheritance/inherit2.rbc
+++ b/tests/single_value_inheritance/inherit2.rbc
@@ -18,3 +18,5 @@
cfg = rblf.cfg(handle)
cfg["PRODUCT_CHARACTERISTICS"] = "nosdcard"
+ cfg.setdefault("PRODUCT_PACKAGES", [])
+ cfg["PRODUCT_PACKAGES"] += ["foo"]
diff --git a/tests/single_value_inheritance/product.rbc b/tests/single_value_inheritance/product.rbc
index 3327043..d090af6 100644
--- a/tests/single_value_inheritance/product.rbc
+++ b/tests/single_value_inheritance/product.rbc
@@ -18,7 +18,7 @@
def init(g, handle):
cfg = rblf.cfg(handle)
- rblf.inherit(handle, "test/inherit1", _inherit1_init)
rblf.inherit(handle, "test/inherit2", _inherit2_init)
+ rblf.inherit(handle, "test/inherit1", _inherit1_init)
cfg["PRODUCT_DEFAULT_DEV_CERTIFICATE"] = ""
diff --git a/tests/single_value_inheritance/test.rbc b/tests/single_value_inheritance/test.rbc
index 07a5e65..dcde7e0 100644
--- a/tests/single_value_inheritance/test.rbc
+++ b/tests/single_value_inheritance/test.rbc
@@ -25,3 +25,4 @@
(globals, config, globals_base) = rblf.product_configuration("test/device", init, input_variables_init)
assert_eq("tablet", config["PRODUCT_CHARACTERISTICS"])
assert_eq("vendor/myvendor/certs/devkeys/devkey", config["PRODUCT_DEFAULT_DEV_CERTIFICATE"])
+ assert_eq(["foo", "bar"], config["PRODUCT_PACKAGES"])