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

Commit 0339142a authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Sort inherited products correctly"

parents 845e23b0 d370a3f7
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -104,6 +104,11 @@ def __printvars_rearrange_list(value_list):
    seen = {item: 0 for item in value_list}
    return sorted(seen.keys()) if _options.rearrange == "sort" else seen.keys()

def __sort_pcm_names(pcm_names):
    # We have to add an extension back onto the pcm names when sorting,
    # or else the sort order could be wrong when one is a prefix of another.
    return [x[:-3] for x in sorted([y + ".mk" for y in pcm_names], reverse=True)]

def _product_configuration(top_pcm_name, top_pcm, input_variables_init):
    """Creates configuration."""

@@ -167,7 +172,7 @@ def _product_configuration(top_pcm_name, top_pcm, input_variables_init):
        # so children.keys() will be ordered by the inherit() calls
        configs[name] = (pcm, handle.cfg, children.keys(), False)

        for child_name in sorted(children, reverse = True):
        for child_name in __sort_pcm_names(children.keys()):
            if child_name not in configs:
                configs[child_name] = (children[child_name], None, [], False)
            pcm_stack.append(child_name)
@@ -202,7 +207,7 @@ def evaluate_finalized_product_variables(configs, top_level_pcm_name, trace=Fals
        pcm_name, before = pcm_stack.pop()
        if before:
            pcm_stack.append((pcm_name, False))
            for child in sorted(configs[pcm_name][2], reverse = True):
            for child in __sort_pcm_names(configs[pcm_name][2]):
                pcm_stack.append((child, True))
        else:
            configs_postfix.append(pcm_name)
+21 −0
Original line number Diff line number Diff line
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load("//build/make/core:product_config.rbc", "rblf")

def init(g, handle):
  cfg = rblf.cfg(handle)

  g.setdefault("MY_VAR", [])
  g["MY_VAR"] += ["foo"]
+21 −0
Original line number Diff line number Diff line
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load("//build/make/core:product_config.rbc", "rblf")

def init(g, handle):
  cfg = rblf.cfg(handle)

  g.setdefault("MY_VAR", [])
  g["MY_VAR"] += ["bar"]
+29 −0
Original line number Diff line number Diff line
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load("//build/make/core:product_config.rbc", "rblf")
load(":base.rbc", _base_init = "init")
load(":base-secondary.rbc", _base_secondary_init = "init")

def init(g, handle):
  cfg = rblf.cfg(handle)

  # It's important that base-secondary uses a dash, an underscore won't expose the sort order issue:
  # >>> sorted(["base", "base-secondary"])
  # ['base', 'base-secondary']
  # >>> sorted(["base.mk", "base-secondary.mk"])
  # ['base-secondary.mk', 'base.mk']

  rblf.inherit(handle, "base", _base_init)
  rblf.inherit(handle, "base-secondary", _base_secondary_init)
+26 −0
Original line number Diff line number Diff line
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load("//build/make/core:product_config.rbc", "rblf")
load("//build/make/tests/input_variables.rbc", input_variables_init = "init")
load(":product.rbc", "init")


def assert_eq(expected, actual):
    if expected != actual:
        fail("Expected '%s', got '%s'" % (expected, actual))

def test():
    (globals, globals_base) = rblf.product_configuration("test/device", init, input_variables_init)
    assert_eq(["foo", "bar"], globals["MY_VAR"])
Loading