Bug 1522380: [win64-aarch64] Add in-tree support for win64-aarch64 partner repacks; r=nthomas a=tomprince
authorTom Prince <mozilla@hocat.ca>
Fri, 25 Jan 2019 16:07:33 +0000
changeset 515635 90eaf95b4002b4ec6ba4c3e0f6ed8c9700096146
parent 515634 c7319aa82972b04272719c172e83fdf6e61d9d5a
child 515636 f4b59de65923cffd3fdde3f2637c2ad3e0260d44
push id1953
push userffxbld-merge
push dateMon, 11 Mar 2019 12:10:20 +0000
treeherdermozilla-release@9c35dcbaa899 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnthomas, tomprince
bugs1522380
milestone66.0
Bug 1522380: [win64-aarch64] Add in-tree support for win64-aarch64 partner repacks; r=nthomas a=tomprince Differential Revision: https://phabricator.services.mozilla.com/D17454
taskcluster/ci/release-partner-repack-beetmover/kind.yml
taskcluster/ci/release-partner-repack-repackage-signing/kind.yml
taskcluster/ci/release-partner-repack-repackage/kind.yml
taskcluster/ci/release-partner-repack/kind.yml
taskcluster/taskgraph/transforms/partner_repack.py
taskcluster/taskgraph/util/partners.py
--- a/taskcluster/ci/release-partner-repack-beetmover/kind.yml
+++ b/taskcluster/ci/release-partner-repack-beetmover/kind.yml
@@ -13,16 +13,17 @@ kind-dependencies:
    - release-partner-repack-repackage-signing
 
 only-for-build-platforms:
    - linux-nightly/opt
    - linux64-nightly/opt
    - macosx64-nightly/opt
    - win32-nightly/opt
    - win64-nightly/opt
+   - win64-aarch64-nightly/opt
 
 job-template:
    shipping-phase: promote
    partner-bucket-scope:
       by-release-level:
          production: beetmover:bucket:partner
          staging: beetmover:bucket:dep-partner
    partner-public-path: "partner-repacks/{partner}/{subpartner}/v{release_partner_build_number}/{platform}/{locale}"
--- a/taskcluster/ci/release-partner-repack-repackage-signing/kind.yml
+++ b/taskcluster/ci/release-partner-repack-repackage-signing/kind.yml
@@ -14,8 +14,9 @@ kind-dependencies:
    - release-partner-repack-repackage  # Windows, Mac
 
 only-for-build-platforms:
    - linux-nightly/opt
    - linux64-nightly/opt
    - macosx64-nightly/opt
    - win32-nightly/opt
    - win64-nightly/opt
+   - win64-aarch64-nightly/opt
--- a/taskcluster/ci/release-partner-repack-repackage/kind.yml
+++ b/taskcluster/ci/release-partner-repack-repackage/kind.yml
@@ -16,16 +16,17 @@ kind-dependencies:
    - release-partner-repack
    - release-partner-repack-signing
    - toolchain
 
 only-for-build-platforms:
    - macosx64-nightly/opt
    - win32-nightly/opt
    - win64-nightly/opt
+   - win64-aarch64-nightly/opt
 
 job-template:
    mozharness:
       config:
          by-build-platform:
             macosx64-.*:
                - repackage/base.py
                - repackage/osx_partner.py
--- a/taskcluster/ci/release-partner-repack/kind.yml
+++ b/taskcluster/ci/release-partner-repack/kind.yml
@@ -70,8 +70,15 @@ jobs:
          nightly: true
 
    win64-nightly:
       attributes:
          build_platform: win64-nightly
          build_type: opt
          artifact_prefix: releng/partner
          nightly: true
+
+   win64-aarch64-nightly:
+      attributes:
+         build_platform: win64-aarch64-nightly
+         build_type: opt
+         artifact_prefix: releng/partner
+         nightly: true
--- a/taskcluster/taskgraph/transforms/partner_repack.py
+++ b/taskcluster/taskgraph/transforms/partner_repack.py
@@ -61,20 +61,26 @@ def add_command_arguments(config, tasks)
     release_config = get_release_config(config)
     all_locales = set()
     for partner_class in config.params['release_partner_config'].values():
         for partner in partner_class.values():
             for sub_partner in partner.values():
                 all_locales.update(sub_partner.get('locales', []))
     for task in tasks:
         # add the MOZHARNESS_OPTIONS, eg version=61.0, build-number=1, platform=win64
+        if not task['attributes']['build_platform'].endswith('-nightly'):
+            raise Exception(
+                "Unexpected partner repack platform: {}".format(
+                    task['attributes']['build_platform'],
+                ),
+            )
         task['run']['options'] = [
             'version={}'.format(release_config['version']),
             'build-number={}'.format(release_config['build_number']),
-            'platform={}'.format(task['attributes']['build_platform'].split('-')[0]),
+            'platform={}'.format(task['attributes']['build_platform'].partition('-nightly')[0]),
         ]
         if task['extra']['limit-locales']:
             for locale in all_locales:
                 task['run']['options'].append('limit-locale={}'.format(locale))
         if 'partner' in config.kind and config.params['release_partners']:
             for partner in config.params['release_partners']:
                 task['run']['options'].append('partner={}'.format(partner))
 
--- a/taskcluster/taskgraph/util/partners.py
+++ b/taskcluster/taskgraph/util/partners.py
@@ -121,16 +121,17 @@ REPACK_CFG_QUERY = """query{
 
 # Map platforms in repack.cfg into their equivalents in taskcluster
 TC_PLATFORM_PER_FTP = {
     'linux-i686': 'linux-nightly',
     'linux-x86_64': 'linux64-nightly',
     'mac': 'macosx64-nightly',
     'win32': 'win32-nightly',
     'win64': 'win64-nightly',
+    'win64-aarch64': 'win64-aarch64-nightly',
 }
 
 TASKCLUSTER_PROXY_SECRET_ROOT = 'http://taskcluster/secrets/v1/secret'
 
 LOCALES_FILE = os.path.join(
     os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))),
     'browser', 'locales', 'l10n-changesets.json'
 )
@@ -235,17 +236,17 @@ def parse_config(data):
     """
     ALLOWED_KEYS = ('locales', 'upload_to_candidates', 'platforms')
     config = {'platforms': []}
     for l in data.splitlines():
         if '=' in l:
             l = str(l)
             key, value = l.split('=', 2)
             value = value.strip('\'"').rstrip('\'"')
-            if key in ('linux-i686', 'linux-x86_64', 'mac', 'win32', 'win64'):
+            if key in TC_PLATFORM_PER_FTP.keys():
                 if value.lower() == 'true':
                     config['platforms'].append(TC_PLATFORM_PER_FTP[key])
                 continue
             if key not in ALLOWED_KEYS:
                 continue
             if key == 'locales':
                 # a list please
                 value = value.split(" ")
@@ -362,16 +363,18 @@ def fix_partner_config(orig_config):
                     _fix_subpartner_locales(subpartner_config, all_locales)
     return pc
 
 
 # seems likely this exists elsewhere already
 def get_ftp_platform(platform):
     if platform.startswith('win32'):
         return 'win32'
+    elif platform.startswith('win64-aarch64'):
+        return 'win64-aarch64'
     elif platform.startswith('win64'):
         return 'win64'
     elif platform.startswith('macosx'):
         return 'mac'
     elif platform.startswith('linux-'):
         return 'linux-i686'
     elif platform.startswith('linux64'):
         return 'linux-x86_64'