fune/taskcluster/taskgraph/transforms/build_attrs.py
Ricky Stewart 02a7b4ebdf Bug 1654103: Standardize on Black for Python code in mozilla-central.
Allow-list all Python code in tree for use with the black linter, and re-format all code in-tree accordingly.

To produce this patch I did all of the following:

1. Make changes to tools/lint/black.yml to remove include: stanza and update list of source extensions.

2. Run ./mach lint --linter black --fix

3. Make some ad-hoc manual updates to python/mozbuild/mozbuild/test/configure/test_configure.py -- it has some hard-coded line numbers that the reformat breaks.

4. Make some ad-hoc manual updates to `testing/marionette/client/setup.py`, `testing/marionette/harness/setup.py`, and `testing/firefox-ui/harness/setup.py`, which have hard-coded regexes that break after the reformat.

5. Add a set of exclusions to black.yml. These will be deleted in a follow-up bug (1672023).

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D94045
2020-10-26 18:34:53 +00:00

50 lines
1.7 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 __future__ import absolute_import, print_function, unicode_literals
from taskgraph.transforms.base import TransformSequence
from taskgraph.util.platforms import platform_family
transforms = TransformSequence()
@transforms.add
def set_build_attributes(config, jobs):
"""
Set the build_platform and build_type attributes based on the job name.
Although not all jobs using this transform are actual "builds", the try
option syntax treats them as such, and this arranges the attributes
appropriately for that purpose.
"""
for job in jobs:
build_platform, build_type = job["name"].split("/")
# pgo builds are represented as a different platform, type opt
if build_type == "pgo":
build_platform = build_platform + "-pgo"
build_type = "opt"
attributes = job.setdefault("attributes", {})
attributes.update(
{
"build_platform": build_platform,
"build_type": build_type,
}
)
yield job
@transforms.add
def set_schedules_optimization(config, jobs):
"""Set the `skip-unless-affected` optimization based on the build platform."""
for job in jobs:
# don't add skip-unless-schedules if there's already a when defined
if "when" in job:
yield job
continue
build_platform = job["attributes"]["build_platform"]
job.setdefault("optimization", {"build": [platform_family(build_platform)]})
yield job