tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

beetmover_repackage_rpm.py (3441B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 """
      5 Transform the beetmover-repackage-rpm task into an actual task description.
      6 """
      7 
      8 from taskgraph.transforms.base import TransformSequence
      9 from taskgraph.util.dependencies import get_primary_dependency
     10 from taskgraph.util.schema import Schema
     11 from taskgraph.util.treeherder import inherit_treeherder_from_dep, replace_group
     12 from voluptuous import Required
     13 
     14 from gecko_taskgraph.transforms.beetmover import craft_release_properties
     15 from gecko_taskgraph.transforms.task import task_description_schema
     16 from gecko_taskgraph.util.scriptworker import (
     17    generate_beetmover_artifact_map,
     18    generate_beetmover_upstream_artifacts,
     19    get_beetmover_action_scope,
     20    get_beetmover_bucket_scope,
     21 )
     22 
     23 transforms = TransformSequence()
     24 
     25 beetmover_description_schema = Schema({
     26    Required("attributes"): task_description_schema["attributes"],
     27    Required("dependencies"): task_description_schema["dependencies"],
     28    Required("label"): str,
     29    Required("name"): str,
     30    Required("shipping-phase"): task_description_schema["shipping-phase"],
     31    Required("task-from"): task_description_schema["task-from"],
     32 })
     33 
     34 transforms.add_validate(beetmover_description_schema)
     35 
     36 
     37 @transforms.add
     38 def make_beetmover_rpm_task(config, jobs):
     39    for job in jobs:
     40        dep_job = get_primary_dependency(config, job)
     41        assert dep_job
     42 
     43        attributes = job["attributes"]
     44        platform = attributes["build_platform"]
     45 
     46        bucket_scope = get_beetmover_bucket_scope(config)
     47        action_scope = get_beetmover_action_scope(config)
     48 
     49        dependencies = {"repackage-rpm": dep_job.label}
     50        treeherder = inherit_treeherder_from_dep(job, dep_job)
     51        upstream_symbol = dep_job.task["extra"]["treeherder"]["symbol"]
     52        treeherder.setdefault("symbol", replace_group(upstream_symbol, "BMR"))
     53 
     54        task = {
     55            "label": job["label"],
     56            "description": f"Publish RPM packages for {platform}",
     57            "worker-type": "beetmover",
     58            "scopes": [bucket_scope, action_scope],
     59            "dependencies": dependencies,
     60            "attributes": attributes,
     61            "run-on-projects": dep_job.attributes.get("run_on_projects"),
     62            "treeherder": treeherder,
     63            "shipping-phase": job["shipping-phase"],
     64            "shipping-product": job.get("shipping-product"),
     65        }
     66 
     67        locales = ["en-US"]
     68        for dep_task in config.kind_dependencies_tasks.values():
     69            if dep_task.kind in ("shippable-l10n-signing", "l10n"):
     70                if dep_task.attributes.get("build_platform") == platform:
     71                    task_locales = dep_task.attributes.get(
     72                        "chunk_locales", dep_task.attributes.get("all_locales", [])
     73                    )
     74                    locales.extend(task_locales)
     75 
     76        task["worker"] = {
     77            "implementation": "beetmover",
     78            "release-properties": craft_release_properties(config, task),
     79            "upstream-artifacts": generate_beetmover_upstream_artifacts(
     80                config, task, platform=platform, locale=locales
     81            ),
     82            "artifact-map": generate_beetmover_artifact_map(
     83                config, task, platform=platform, locale=locales
     84            ),
     85        }
     86 
     87        yield task