tor-browser

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

declarative_artifacts.py (3287B)


      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 re
      7 
      8 from gecko_taskgraph.util.scriptworker import (
      9    generate_beetmover_artifact_map,
     10    generate_beetmover_upstream_artifacts,
     11 )
     12 
     13 _ARTIFACT_ID_PER_PLATFORM = {
     14    "android-aarch64-opt": "{package}-default-omni-arm64-v8a",
     15    "android-arm-opt": "{package}-default-omni-armeabi-v7a",
     16    "android-x86_64-opt": "{package}-default-omni-x86_64",
     17    "android-geckoview-fat-aar-opt": "{package}-default",
     18    "android-aarch64-shippable": "{package}{update_channel}-omni-arm64-v8a",
     19    "android-aarch64-shippable-lite": "{package}{update_channel}-arm64-v8a",
     20    "android-arm-shippable": "{package}{update_channel}-omni-armeabi-v7a",
     21    "android-arm-shippable-lite": "{package}{update_channel}-armeabi-v7a",
     22    "android-x86_64-shippable": "{package}{update_channel}-omni-x86_64",
     23    "android-x86_64-shippable-lite": "{package}{update_channel}-x86_64",
     24    "android-geckoview-fat-aar-shippable": "{package}{update_channel}-omni",
     25    "android-geckoview-fat-aar-shippable-lite": "{package}{update_channel}",
     26 }
     27 
     28 
     29 def get_geckoview_artifact_map(config, job):
     30    return generate_beetmover_artifact_map(
     31        config,
     32        job,
     33        **get_geckoview_template_vars(
     34            config,
     35            job["attributes"]["build_platform"],
     36            job["maven-package"],
     37            job["attributes"].get("update-channel"),
     38        ),
     39    )
     40 
     41 
     42 def get_geckoview_upstream_artifacts(config, job, package, platform=""):
     43    if not platform:
     44        platform = job["attributes"]["build_platform"]
     45    upstream_artifacts = generate_beetmover_upstream_artifacts(
     46        config,
     47        job,
     48        platform="",
     49        **get_geckoview_template_vars(
     50            config, platform, package, job["attributes"].get("update-channel")
     51        ),
     52    )
     53    return [
     54        {key: value for key, value in upstream_artifact.items() if key != "locale"}
     55        for upstream_artifact in upstream_artifacts
     56    ]
     57 
     58 
     59 def get_geckoview_template_vars(config, platform, package, update_channel):
     60    version_groups = re.match(r"(\d+).(\d+).*", config.params["version"])
     61    if version_groups:
     62        major_version, minor_version = version_groups.groups()
     63 
     64    return {
     65        "artifact_id": get_geckoview_artifact_id(
     66            config,
     67            platform,
     68            package,
     69            update_channel,
     70        ),
     71        "build_date": config.params["moz_build_date"],
     72        "major_version": major_version,
     73        "minor_version": minor_version,
     74    }
     75 
     76 
     77 def get_geckoview_artifact_id(config, platform, package, update_channel=None):
     78    if update_channel == "release":
     79        update_channel = ""
     80    elif update_channel is not None:
     81        update_channel = f"-{update_channel}"
     82    else:
     83        # For shippable builds, mozharness defaults to using
     84        # "nightly-{project}" for the update channel.  For other builds, the
     85        # update channel is not set, but the value is not substituted.
     86        update_channel = "-nightly-{}".format(config.params["project"])
     87    return _ARTIFACT_ID_PER_PLATFORM[platform].format(
     88        update_channel=update_channel, package=package
     89    )