These were added in support of https://bugzilla.mozilla.org/show_bug.cgi?id=1471202. While the goal of that bug may still be something we want to achieve, we have never done anything with these, and it's likely that if we were to proceed with that work, we'd need a different implementation. Additionally, the [verification we have for these](https://searchfox.org/firefox-main/rev/1372522d3de2c9aeedc8020ec8d81326f1a9516e/taskcluster/gecko_taskgraph/util/verify.py#275-301) requires us to set these in various places even though we don't use them, which is annoying and confusing. Differential Revision: https://phabricator.services.mozilla.com/D299774
120 lines
3.9 KiB
Python
120 lines
3.9 KiB
Python
# 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.transforms.base import TransformSequence
|
|
from taskgraph.util.dependencies import get_primary_dependency
|
|
from taskgraph.util.schema import resolve_keyed_by
|
|
|
|
from gecko_taskgraph.util.partners import build_macos_attribution_dmg_command
|
|
|
|
transforms = TransformSequence()
|
|
resolve_keyed_by_transforms = TransformSequence()
|
|
|
|
|
|
@resolve_keyed_by_transforms.add
|
|
def attribution_keyed_by(config, jobs):
|
|
keyed_by_fields = (
|
|
"attributes.release_artifacts",
|
|
"run.command",
|
|
"properties-with-locale", # properties-with-locale only exists in the l10n task
|
|
)
|
|
for job in jobs:
|
|
build_platform = {"build-platform": job["attributes"]["build_platform"]}
|
|
for field in keyed_by_fields:
|
|
resolve_keyed_by(item=job, field=field, item_name=field, **build_platform)
|
|
yield job
|
|
|
|
|
|
@transforms.add
|
|
def remove_attributes(config, jobs):
|
|
"""Remove attributes from parent task that aren't necessary."""
|
|
for job in jobs:
|
|
for attr in (
|
|
"accepted-mar-channel-ids",
|
|
"l10n_chunk",
|
|
"mar-channel-id",
|
|
"repackage_type",
|
|
"shippable",
|
|
"signed",
|
|
"stub-installer",
|
|
"update-channel",
|
|
):
|
|
if attr in job["attributes"]:
|
|
del job["attributes"][attr]
|
|
yield job
|
|
|
|
|
|
@transforms.add
|
|
def stub_installer(config, jobs):
|
|
"""Not all windows builds come with a stub installer (only win32, and not
|
|
on esr), so conditionally add it here based on our dependency's
|
|
stub-installer attribute."""
|
|
for job in jobs:
|
|
dep_task = get_primary_dependency(config, job)
|
|
assert dep_task
|
|
|
|
if dep_task.attributes.get("stub-installer"):
|
|
locale = job["attributes"].get("locale")
|
|
if locale:
|
|
artifact = f"{locale}/target.stub-installer.exe"
|
|
else:
|
|
artifact = "target.stub-installer.exe"
|
|
|
|
job["fetches"][dep_task.kind].append(artifact)
|
|
job["run"]["command"] += [
|
|
"--input",
|
|
"/builds/worker/fetches/target.stub-installer.exe",
|
|
]
|
|
job["attributes"]["release_artifacts"].append(
|
|
"public/build/target.stub-installer.exe"
|
|
)
|
|
yield job
|
|
|
|
|
|
@transforms.add
|
|
def set_treeherder(config, jobs):
|
|
for job in jobs:
|
|
th = job.setdefault("treeherder", {})
|
|
attrs = job["attributes"]
|
|
|
|
th["platform"] = f"{attrs['build_platform']}/{attrs['build_type']}"
|
|
th["symbol"] = th["symbol"].format(**attrs)
|
|
yield job
|
|
|
|
|
|
@transforms.add
|
|
def set_locale_label(config, jobs):
|
|
for job in jobs:
|
|
attrs = job["attributes"]
|
|
if locale := attrs.get("locale"):
|
|
platform, ship_type = attrs["build_platform"].rsplit("-", 1)
|
|
job["label"] = (
|
|
f"attribution-{platform}-{locale}-{ship_type}/{attrs['build_type']}"
|
|
)
|
|
|
|
yield job
|
|
|
|
|
|
@transforms.add
|
|
def mac_attribution(config, jobs):
|
|
"""Adds \t padding to the mac attribution data. Implicitly assumes that the
|
|
attribution data is the last thing in job.run.command
|
|
"""
|
|
for job in jobs:
|
|
dlsource = job.pop("dlsource")
|
|
if "macosx" in job["attributes"]["build_platform"]:
|
|
job["run"]["command"] = build_macos_attribution_dmg_command(
|
|
"/builds/worker/fetches/dmg/dmg",
|
|
[
|
|
{
|
|
"input": "/builds/worker/fetches/target.dmg",
|
|
"output": "/builds/worker/artifacts/target.dmg",
|
|
"attribution": f"dlsource={dlsource}",
|
|
}
|
|
],
|
|
)
|
|
job["fetches"].setdefault("toolchain", []).append("linux64-libdmg")
|
|
|
|
yield job
|