From d8bbc7858622b6d9c278469aab701ca0b609cddf Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 15 May 2024 05:35:49 +0200 Subject: Merging upstream version 126.0. Signed-off-by: Daniel Baumann --- taskcluster/android_taskgraph/util/group_by.py | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 taskcluster/android_taskgraph/util/group_by.py (limited to 'taskcluster/android_taskgraph/util/group_by.py') diff --git a/taskcluster/android_taskgraph/util/group_by.py b/taskcluster/android_taskgraph/util/group_by.py new file mode 100644 index 0000000000..3c3b10980c --- /dev/null +++ b/taskcluster/android_taskgraph/util/group_by.py @@ -0,0 +1,51 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.util.dependencies import group_by + + +@group_by("component") +def component_grouping(config, tasks): + groups = {} + for task in tasks: + component = task.attributes.get("component") + if component == "all": + continue + + build_type = task.attributes.get("build-type") + groups.setdefault((component, build_type), []).append(task) + + tasks_for_all_components = [ + task + for task in tasks + if task.attributes.get("component") == "all" + # We just want to depend on the task that waits on all chunks. This way + # we have a single dependency for that kind + and task.attributes.get("is_final_chunked_task", True) + ] + for (_, build_type), tasks in groups.items(): + tasks.extend( + [ + task + for task in tasks_for_all_components + if task.attributes.get("build-type") == build_type + ] + ) + + return groups.values() + + +@group_by("build-type") +def build_type_grouping(config, tasks): + groups = {} + for task in tasks: + # We just want to depend on the task that waits on all chunks. This way + # we have a single dependency for that kind + if not task.attributes.get("is_final_chunked_task", True): + continue + + build_type = task.attributes.get("build-type") + groups.setdefault(build_type, []).append(task) + + return groups.values() -- cgit v1.2.3