diff options
Diffstat (limited to 'taskcluster/taskgraph/util/declarative_artifacts.py')
-rw-r--r-- | taskcluster/taskgraph/util/declarative_artifacts.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/taskcluster/taskgraph/util/declarative_artifacts.py b/taskcluster/taskgraph/util/declarative_artifacts.py new file mode 100644 index 0000000000..821200e71d --- /dev/null +++ b/taskcluster/taskgraph/util/declarative_artifacts.py @@ -0,0 +1,70 @@ +# 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, unicode_literals + +import re + +from taskgraph.util.scriptworker import generate_beetmover_upstream_artifacts + + +_ARTIFACT_ID_PER_PLATFORM = { + "android-aarch64-opt": "geckoview-default-arm64-v8a", + "android-api-16-opt": "geckoview-default-armeabi-v7a", + "android-x86-opt": "geckoview-default-x86", + "android-x86_64-opt": "geckoview-default-x86_64", + "android-geckoview-fat-aar-opt": "geckoview-default", + "android-aarch64-shippable": "geckoview{update_channel}-arm64-v8a", + "android-api-16-shippable": "geckoview{update_channel}-armeabi-v7a", + "android-x86-shippable": "geckoview{update_channel}-x86", + "android-x86_64-shippable": "geckoview{update_channel}-x86_64", + "android-geckoview-fat-aar-shippable": "geckoview{update_channel}", +} + + +def get_geckoview_upstream_artifacts(config, job, platform=""): + if not platform: + platform = job["attributes"]["build_platform"] + upstream_artifacts = generate_beetmover_upstream_artifacts( + config, + job, + platform="", + **get_geckoview_template_vars( + config, platform, job["attributes"].get("update-channel") + ) + ) + return [ + {key: value for key, value in upstream_artifact.items() if key != "locale"} + for upstream_artifact in upstream_artifacts + ] + + +def get_geckoview_template_vars(config, platform, update_channel): + version_groups = re.match(r"(\d+).(\d+).*", config.params["version"]) + if version_groups: + major_version, minor_version = version_groups.groups() + + return { + "artifact_id": get_geckoview_artifact_id( + config, + platform, + update_channel, + ), + "build_date": config.params["moz_build_date"], + "major_version": major_version, + "minor_version": minor_version, + } + + +def get_geckoview_artifact_id(config, platform, update_channel=None): + if update_channel == "release": + update_channel = "" + elif update_channel is not None: + update_channel = "-{}".format(update_channel) + else: + # For shippable builds, mozharness defaults to using + # "nightly-{project}" for the update channel. For other builds, the + # update channel is not set, but the value is not substituted. + update_channel = "-nightly-{}".format(config.params["project"]) + return _ARTIFACT_ID_PER_PLATFORM[platform].format(update_channel=update_channel) |