forked from mirrors/gecko-dev
		
	 02a7b4ebdf
			
		
	
	
		02a7b4ebdf
		
	
	
	
	
		
			
			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
		
			
				
	
	
		
			169 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
	
		
			5.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/.
 | |
| """
 | |
| Transform the partials task into an actual task description.
 | |
| """
 | |
| from __future__ import absolute_import, print_function, unicode_literals
 | |
| 
 | |
| from taskgraph.transforms.base import TransformSequence
 | |
| from taskgraph.util.attributes import copy_attributes_from_dependent_job
 | |
| from taskgraph.util.partials import get_builds
 | |
| from taskgraph.util.platforms import architecture
 | |
| from taskgraph.util.taskcluster import get_artifact_prefix
 | |
| from taskgraph.util.treeherder import inherit_treeherder_from_dep
 | |
| 
 | |
| import logging
 | |
| 
 | |
| logger = logging.getLogger(__name__)
 | |
| 
 | |
| transforms = TransformSequence()
 | |
| 
 | |
| 
 | |
| def _generate_task_output_files(job, filenames, locale=None):
 | |
|     locale_output_path = "{}/".format(locale) if locale else ""
 | |
|     artifact_prefix = get_artifact_prefix(job)
 | |
| 
 | |
|     data = list()
 | |
|     for filename in filenames:
 | |
|         data.append(
 | |
|             {
 | |
|                 "type": "file",
 | |
|                 "path": "/home/worker/artifacts/{}".format(filename),
 | |
|                 "name": "{}/{}{}".format(artifact_prefix, locale_output_path, filename),
 | |
|             }
 | |
|         )
 | |
|     data.append(
 | |
|         {
 | |
|             "type": "file",
 | |
|             "path": "/home/worker/artifacts/manifest.json",
 | |
|             "name": "{}/{}manifest.json".format(artifact_prefix, locale_output_path),
 | |
|         }
 | |
|     )
 | |
|     return data
 | |
| 
 | |
| 
 | |
| def identify_desired_signing_keys(project, product):
 | |
|     if project in ["mozilla-central", "comm-central", "oak"]:
 | |
|         return "nightly"
 | |
|     elif project == "mozilla-beta":
 | |
|         if product == "devedition":
 | |
|             return "nightly"
 | |
|         return "release"
 | |
|     elif (
 | |
|         project in ["mozilla-release", "comm-beta"]
 | |
|         or project.startswith("mozilla-esr")
 | |
|         or project.startswith("comm-esr")
 | |
|     ):
 | |
|         return "release"
 | |
|     return "dep1"
 | |
| 
 | |
| 
 | |
| @transforms.add
 | |
| def make_task_description(config, jobs):
 | |
|     # If no balrog release history, then don't generate partials
 | |
|     if not config.params.get("release_history"):
 | |
|         return
 | |
|     for job in jobs:
 | |
|         dep_job = job["primary-dependency"]
 | |
| 
 | |
|         treeherder = inherit_treeherder_from_dep(job, dep_job)
 | |
|         treeherder.setdefault("symbol", "p(N)")
 | |
| 
 | |
|         label = job.get("label", "partials-{}".format(dep_job.label))
 | |
| 
 | |
|         dependencies = {dep_job.kind: dep_job.label}
 | |
| 
 | |
|         attributes = copy_attributes_from_dependent_job(dep_job)
 | |
|         locale = dep_job.attributes.get("locale")
 | |
|         if locale:
 | |
|             attributes["locale"] = locale
 | |
|             treeherder["symbol"] = "p({})".format(locale)
 | |
|         attributes["shipping_phase"] = job["shipping-phase"]
 | |
| 
 | |
|         build_locale = locale or "en-US"
 | |
| 
 | |
|         build_platform = attributes["build_platform"]
 | |
|         builds = get_builds(
 | |
|             config.params["release_history"], build_platform, build_locale
 | |
|         )
 | |
| 
 | |
|         # If the list is empty there's no available history for this platform
 | |
|         # and locale combination, so we can't build any partials.
 | |
|         if not builds:
 | |
|             continue
 | |
| 
 | |
|         extra = {"funsize": {"partials": list()}}
 | |
|         update_number = 1
 | |
| 
 | |
|         locale_suffix = ""
 | |
|         if locale:
 | |
|             locale_suffix = "{}/".format(locale)
 | |
|         artifact_path = "<{}/{}/{}target.complete.mar>".format(
 | |
|             dep_job.kind,
 | |
|             get_artifact_prefix(dep_job),
 | |
|             locale_suffix,
 | |
|         )
 | |
|         for build in sorted(builds):
 | |
|             partial_info = {
 | |
|                 "locale": build_locale,
 | |
|                 "from_mar": builds[build]["mar_url"],
 | |
|                 "to_mar": {"artifact-reference": artifact_path},
 | |
|                 "branch": config.params["project"],
 | |
|                 "update_number": update_number,
 | |
|                 "dest_mar": build,
 | |
|             }
 | |
|             if "product" in builds[build]:
 | |
|                 partial_info["product"] = builds[build]["product"]
 | |
|             if "previousVersion" in builds[build]:
 | |
|                 partial_info["previousVersion"] = builds[build]["previousVersion"]
 | |
|             if "previousBuildNumber" in builds[build]:
 | |
|                 partial_info["previousBuildNumber"] = builds[build][
 | |
|                     "previousBuildNumber"
 | |
|                 ]
 | |
|             extra["funsize"]["partials"].append(partial_info)
 | |
|             update_number += 1
 | |
| 
 | |
|         level = config.params["level"]
 | |
| 
 | |
|         worker = {
 | |
|             "artifacts": _generate_task_output_files(dep_job, builds.keys(), locale),
 | |
|             "implementation": "docker-worker",
 | |
|             "docker-image": {"in-tree": "funsize-update-generator"},
 | |
|             "os": "linux",
 | |
|             "max-run-time": 3600 if "asan" in dep_job.label else 900,
 | |
|             "chain-of-trust": True,
 | |
|             "taskcluster-proxy": True,
 | |
|             "env": {
 | |
|                 "SIGNING_CERT": identify_desired_signing_keys(
 | |
|                     config.params["project"], config.params["release_product"]
 | |
|                 ),
 | |
|                 "EXTRA_PARAMS": "--arch={}".format(architecture(build_platform)),
 | |
|                 "MAR_CHANNEL_ID": attributes["mar-channel-id"],
 | |
|             },
 | |
|         }
 | |
|         if config.params.release_level() == "staging":
 | |
|             worker["env"]["FUNSIZE_ALLOW_STAGING_PREFIXES"] = "true"
 | |
| 
 | |
|         task = {
 | |
|             "label": label,
 | |
|             "description": "{} Partials".format(dep_job.description),
 | |
|             "worker-type": "b-linux",
 | |
|             "dependencies": dependencies,
 | |
|             "scopes": [],
 | |
|             "attributes": attributes,
 | |
|             "run-on-projects": dep_job.attributes.get("run_on_projects"),
 | |
|             "treeherder": treeherder,
 | |
|             "extra": extra,
 | |
|             "worker": worker,
 | |
|         }
 | |
| 
 | |
|         # We only want caching on linux/windows due to bug 1436977
 | |
|         if int(level) == 3 and any(
 | |
|             [build_platform.startswith(prefix) for prefix in ["linux", "win"]]
 | |
|         ):
 | |
|             task["scopes"].append(
 | |
|                 "auth:aws-s3:read-write:tc-gp-private-1d-us-east-1/releng/mbsdiff-cache/"
 | |
|             )
 | |
| 
 | |
|         yield task
 |