Bug 1340564: filter for android tasks using the build_platform attribute; r?jlorenzo draft
authorDustin J. Mitchell <dustin@mozilla.com>
Tue, 25 Apr 2017 21:59:42 +0000
changeset 576293 d02c34f1a5e68fe14f6bc921edc1bdeb6a81a261
parent 576292 67d58cfda81c78fdad5cfd03a5195c8cba49e091
child 576294 69924d1d7d3e97a95d99a10d2d974f7857ff917e
push id58315
push userdmitchell@mozilla.com
push dateThu, 11 May 2017 15:34:51 +0000
reviewersjlorenzo
bugs1340564
milestone55.0a1
Bug 1340564: filter for android tasks using the build_platform attribute; r?jlorenzo This avoids using substring matching on labels, which is likely to lead to sadness someday. MozReview-Commit-ID: J1pFuP1U335
taskcluster/taskgraph/loader/push_apk.py
taskcluster/taskgraph/util/push_apk.py
--- a/taskcluster/taskgraph/loader/push_apk.py
+++ b/taskcluster/taskgraph/loader/push_apk.py
@@ -21,12 +21,13 @@ def loader(kind, path, config, params, l
 def get_dependent_loaded_tasks(config, loaded_tasks):
     nightly_tasks = (
         task for task in loaded_tasks if task.attributes.get('nightly')
     )
     tasks_with_matching_kind = (
         task for task in nightly_tasks if task.kind in config.get('kind-dependencies')
     )
     android_tasks = [
-        task for task in tasks_with_matching_kind if 'android' in task.label
+        task for task in tasks_with_matching_kind
+        if task.attributes.get('build_platform', '').startswith('android')
     ]
 
     return android_tasks
--- a/taskcluster/taskgraph/util/push_apk.py
+++ b/taskcluster/taskgraph/util/push_apk.py
@@ -4,17 +4,20 @@
 """
 Common functions for both push-apk and push-apk-breakpoint.
 """
 
 import re
 
 from taskgraph.util.schema import validate_schema
 
-REQUIRED_ARCHITECTURES = ('android-x86', 'android-api-15')
+REQUIRED_ARCHITECTURES = {
+    'android-x86-nightly',
+    'android-api-15-nightly',
+}
 PLATFORM_REGEX = re.compile(r'signing-android-(\S+)-nightly')
 
 
 def fill_labels_tranform(_, jobs):
     for job in jobs:
         job['label'] = job['name']
 
         yield job
@@ -31,25 +34,19 @@ def validate_jobs_schema_transform_parti
 
 def validate_dependent_tasks_transform(_, jobs):
     for job in jobs:
         check_every_architecture_is_present_in_dependent_tasks(job['dependent-tasks'])
         yield job
 
 
 def check_every_architecture_is_present_in_dependent_tasks(dependent_tasks):
-    dependencies_labels = [task.label for task in dependent_tasks]
-
-    is_this_required_architecture_present = {
-        architecture: any(architecture in label for label in dependencies_labels)
-        for architecture in REQUIRED_ARCHITECTURES
-    }
-    are_all_required_achitectures_present = all(is_this_required_architecture_present.values())
-
-    if not are_all_required_achitectures_present:
+    dep_platforms = set(t.attributes.get('build_platform') for t in dependent_tasks)
+    missed_architectures = REQUIRED_ARCHITECTURES - dep_platforms
+    if missed_architectures:
         raise Exception('''One or many required architectures are missing.
 
 Required architectures: {}.
 Given dependencies: {}.
 '''.format(REQUIRED_ARCHITECTURES, dependent_tasks)
         )