tor-browser

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

beetmover.py (2562B)


      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 
      6 import os
      7 
      8 from taskgraph.transforms.base import TransformSequence
      9 from taskgraph.util.dependencies import get_dependencies
     10 from taskgraph.util.schema import resolve_keyed_by
     11 
     12 from .build_components import craft_path_version, get_nightly_version
     13 
     14 transforms = TransformSequence()
     15 
     16 
     17 @transforms.add
     18 def resolve_keys(config, tasks):
     19    for task in tasks:
     20        for key in (
     21            "treeherder.symbol",
     22            "worker.bucket",
     23            "worker.beetmover-application-name",
     24        ):
     25            resolve_keyed_by(
     26                task,
     27                key,
     28                item_name=task["name"],
     29                **{
     30                    "build-type": task["attributes"]["build-type"],
     31                    "level": config.params["level"],
     32                },
     33            )
     34        yield task
     35 
     36 
     37 @transforms.add
     38 def set_artifact_map(config, tasks):
     39    version = config.params["version"]
     40    nightly_version = get_nightly_version(config, version)
     41 
     42    for task in tasks:
     43        maven_destination = task.pop("maven-destination")
     44        deps = get_dependencies(config, task)
     45        task["worker"]["artifact-map"] = [
     46            {
     47                "paths": {
     48                    artifact_path: {
     49                        "destinations": [
     50                            maven_destination.format(
     51                                component=task["attributes"]["component"],
     52                                version=craft_path_version(
     53                                    version,
     54                                    task["attributes"]["build-type"],
     55                                    nightly_version,
     56                                ),
     57                                artifact_file_name=os.path.basename(artifact_path),
     58                            )
     59                        ]
     60                    }
     61                    for artifact_path in dep.attributes["artifacts"].values()
     62                },
     63                "taskId": {"task-reference": f"<{dep.kind}>"},
     64            }
     65            for dep in deps
     66        ]
     67 
     68        yield task
     69 
     70 
     71 @transforms.add
     72 def add_version(config, tasks):
     73    version = config.params["version"]
     74    nightly_version = get_nightly_version(config, version)
     75 
     76    for task in tasks:
     77        task["worker"]["version"] = craft_path_version(
     78            version, task["attributes"]["build-type"], nightly_version
     79        )
     80        yield task