Source code
Revision control
Copy as Markdown
Other Tools
# 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
"""
Generate labels for tasks without names, consistently.
Uses attributes from primary dependency.
"""
from taskgraph.transforms.base import TransformSequence
from taskgraph.util.dependencies import get_primary_dependency
transforms = TransformSequence()
@transforms.add
def make_label(config, jobs):
"""Generate a sane label for a new task constructed from a dependency
Using attributes from the dependent job and the current task kind"""
for job in jobs:
dep_job = get_primary_dependency(config, job)
assert dep_job
attr = dep_job.attributes.get
if attr("locale", job.get("locale")):
template = "{kind}-{locale}-{build_platform}/{build_type}"
elif attr("l10n_chunk"):
template = "{kind}-{build_platform}-{l10n_chunk}/{build_type}"
elif config.kind.startswith("release-eme-free") or config.kind.startswith(
"release-partner-repack"
):
suffix = job.get("extra", {}).get("repack_suffix", None) or job.get(
"extra", {}
).get("repack_id", None)
template = "{kind}-{build_platform}"
if suffix:
template += "-{}".format(suffix.replace("/", "-"))
else:
template = "{kind}-{build_platform}/{build_type}"
job["label"] = template.format(
kind=config.kind,
build_platform=attr("build_platform"),
build_type=attr("build_type"),
locale=attr("locale", job.get("locale", "")), # Locale can be absent
l10n_chunk=attr("l10n_chunk", ""), # Can be empty
)
yield job