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 )