blob: 3c3b10980c2e6e4fe818268c09247df14c14c73a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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()
|