# 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)