Bug 1366404 - Add AArch64 Nightly build; r?nalexander
Add configurations for building and uploading AArch64 Nightly builds.
Right now the builds are in tier 1, but I'm not sure if they should be
in tier 2.
I also didn't want to worry about Artifact builds for this patch, but I
can try adding that if needed.
MozReview-Commit-ID: 4U7uw0NX2eV
new file mode 100644
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/debug
@@ -0,0 +1,16 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+ac_add_options --enable-marionette
+
+# Android
+ac_add_options --with-android-min-sdk=21
+ac_add_options --target=aarch64-linux-android
+
+export MOZILLA_OFFICIAL=1
+export MOZ_TELEMETRY_REPORTING=1
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
new file mode 100644
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/l10n-nightly
@@ -0,0 +1,32 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# L10n
+ac_add_options --with-l10n-base=../../l10n-central
+
+# Global options
+ac_add_options --disable-tests
+
+# Android
+ac_add_options --with-android-min-sdk=21
+ac_add_options --target=aarch64-linux-android
+
+ac_add_options --with-system-zlib
+ac_add_options --enable-updater
+ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+ac_add_options --disable-stdcxx-compat
+
+# Don't autoclobber l10n, as this can lead to missing binaries and broken builds
+# Bug 1283438
+mk_add_options AUTOCLOBBER=
+
+# Disable Keyfile Loading (and checks) since l10n doesn't need these keys
+# This overrides the settings in the common android mozconfig
+ac_add_options --without-mozilla-api-keyfile
+ac_add_options --without-adjust-sdk-keyfile
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
new file mode 100644
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/l10n-release
@@ -0,0 +1,28 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# L10n
+ac_add_options --with-l10n-base=../../l10n-central
+
+# Global options
+ac_add_options --disable-tests
+
+# Android
+ac_add_options --with-android-min-sdk=21
+ac_add_options --target=aarch64-linux-android
+
+ac_add_options --with-system-zlib
+ac_add_options --enable-updater
+ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --enable-official-branding
+ac_add_options --with-branding=mobile/android/branding/beta
+
+ac_add_options --disable-stdcxx-compat
+
+# Don't autoclobber l10n, as this can lead to missing binaries and broken builds
+# Bug 1283438
+mk_add_options AUTOCLOBBER=
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
new file mode 100644
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/nightly
@@ -0,0 +1,18 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+ac_add_options --enable-profiling
+
+# Android
+ac_add_options --with-android-min-sdk=21
+ac_add_options --target=aarch64-linux-android
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+# This will overwrite the default of stripping everything and keep the symbol table.
+# This is useful for profiling with eideticker. See bug 788680
+STRIP_FLAGS="--strip-debug"
+
+export MOZILLA_OFFICIAL=1
+export MOZ_TELEMETRY_REPORTING=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
new file mode 100644
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/release
@@ -0,0 +1,16 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Android
+ac_add_options --with-android-min-sdk=21
+ac_add_options --target=aarch64-linux-android
+
+ac_add_options --with-branding=mobile/android/branding/beta
+
+ac_add_options --enable-updater
+
+export MOZILLA_OFFICIAL=1
+export MOZ_TELEMETRY_REPORTING=1
+
+ac_add_options --enable-official-branding
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
--- a/taskcluster/ci/build/android.yml
+++ b/taskcluster/ci/build/android.yml
@@ -158,8 +158,60 @@ android-api-15-gradle/opt:
config:
- builds/releng_base_android_64_builds.py
- disable_signing.py
- platform_supports_post_upload_to_latest.py
script: "mozharness/scripts/fx_desktop_build.py"
secrets: true
custom-build-variant-cfg: api-15-gradle
tooltool-downloads: internal
+
+android-aarch64/opt:
+ description: "Android 5.0 AArch64 Opt"
+ index:
+ product: mobile
+ job-name: android-aarch64-opt
+ treeherder:
+ platform: android-5-0-aarch64/opt
+ symbol: tc(B)
+ worker-type: aws-provisioner-v1/gecko-{level}-b-android
+ worker:
+ implementation: docker-worker
+ max-run-time: 7200
+ run:
+ using: mozharness
+ actions: [get-secrets build generate-build-stats multi-l10n update]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - disable_signing.py
+ - platform_supports_post_upload_to_latest.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: aarch64
+ tooltool-downloads: internal
+
+android-aarch64-nightly/opt:
+ description: "Android 5.0 AArch64 Nightly"
+ attributes:
+ nightly: true
+ index:
+ product: mobile
+ job-name: android-aarch64-opt
+ type: nightly
+ treeherder:
+ platform: android-5-0-aarch64/opt
+ symbol: tc(N)
+ worker-type: aws-provisioner-v1/gecko-{level}-b-android
+ worker:
+ implementation: docker-worker
+ max-run-time: 7200
+ run:
+ using: mozharness
+ actions: [get-secrets build generate-build-stats multi-l10n update]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - disable_signing.py
+ - platform_supports_post_upload_to_latest.py
+ - taskcluster_nightly.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: aarch64
+ tooltool-downloads: internal
--- a/taskcluster/ci/upload-symbols/kind.yml
+++ b/taskcluster/ci/upload-symbols/kind.yml
@@ -14,16 +14,17 @@ kind-dependencies:
only-for-build-platforms:
- linux64/opt
- linux64/debug
- linux64-nightly/opt
- linux-nightly/opt
- android-api-15/opt
- android-api-15-nightly/opt
- android-x86-nightly/opt
+ - android-aarch64-nightly/opt
- macosx64-nightly/opt
- win64-nightly/opt
job-template:
label: # see transforms
description: Upload Symbols
dependencies: # see transforms
expires-after: 7 days
--- a/taskcluster/taskgraph/target_tasks.py
+++ b/taskcluster/taskgraph/target_tasks.py
@@ -202,17 +202,20 @@ def target_tasks_code_coverage(full_task
@_target_task('nightly_fennec')
def target_tasks_nightly_fennec(full_task_graph, parameters):
"""Select the set of tasks required for a nightly build of fennec. The
nightly build process involves a pipeline of builds, signing,
and, eventually, uploading the tasks to balrog."""
def filter(task):
platform = task.attributes.get('build_platform')
- if platform in ('android-api-15-nightly', 'android-x86-nightly', 'android-nightly'):
+ if platform in ('android-api-15-nightly',
+ 'android-x86-nightly',
+ 'android-aarch64-nightly',
+ 'android-nightly'):
if not task.attributes.get('nightly', False):
return False
return filter_for_project(task, parameters)
return [l for l, t in full_task_graph.tasks.iteritems() if filter(t)]
@_target_task('nightly_linux')
def target_tasks_nightly_linux(full_task_graph, parameters):
--- a/taskcluster/taskgraph/transforms/beetmover.py
+++ b/taskcluster/taskgraph/transforms/beetmover.py
@@ -101,22 +101,24 @@ from voluptuous import Any, Required, Op
UPSTREAM_ARTIFACT_UNSIGNED_PATHS = {
'linux64-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
'linux-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
'linux64-devedition-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
'linux-devedition-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
'android-x86-nightly': _MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
+ 'android-aarch64-nightly': _MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
'android-api-15-nightly': _MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
'macosx64-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
'linux64-nightly-l10n': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_L10N,
'linux-nightly-l10n': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_L10N,
'android-x86-nightly-multi': _MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_MULTI,
+ 'android-aarch64-nightly-multi': _MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_MULTI,
'android-api-15-nightly-l10n': ["balrog_props.json"],
'android-api-15-nightly-multi': _MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_MULTI,
'macosx64-nightly-l10n': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_L10N,
}
UPSTREAM_ARTIFACT_SIGNED_PATHS = {
'linux64-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_EN_US + [
"target.tar.bz2",
"target.tar.bz2.asc",
@@ -129,31 +131,33 @@ UPSTREAM_ARTIFACT_SIGNED_PATHS = {
"target.tar.bz2",
"target.tar.bz2.asc",
],
'linux-devedition-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_EN_US + [
"target.tar.bz2",
"target.tar.bz2.asc",
],
'android-x86-nightly': ["en-US/target.apk"],
+ 'android-aarch64-nightly': ["en-US/target.apk"],
'android-api-15-nightly': ["en-US/target.apk"],
'macosx64-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_EN_US + [
"target.dmg",
"target.dmg.asc",
],
'linux64-nightly-l10n': _DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_L10N + [
"target.tar.bz2",
"target.tar.bz2.asc",
],
'linux-nightly-l10n': _DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_L10N + [
"target.tar.bz2",
"target.tar.bz2.asc",
],
'android-x86-nightly-multi': ["target.apk"],
+ 'android-aarch64-nightly-multi': ["target.apk"],
'android-api-15-nightly-l10n': ["target.apk"],
'android-api-15-nightly-multi': ["target.apk"],
'macosx64-nightly-l10n': _DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_L10N + [
"target.dmg",
"target.dmg.asc",
],
}
--- a/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
+++ b/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
@@ -11,16 +11,17 @@ here without any further fuss.
Once all jobs have been ported from Buildbot, this file can be removed.
"""
from __future__ import absolute_import, print_function, unicode_literals
# please keep me in lexical order
JOB_NAME_WHITELIST = set([
+ 'android-aarch64-opt',
'android-api-15-debug',
'android-api-15-gradle-dependencies-opt',
'android-api-15-gradle-opt',
'android-api-15-opt',
'android-x86-opt',
'browser-haz-debug',
'linux-debug',
'linux-devedition',
--- a/taskcluster/taskgraph/util/push_apk.py
+++ b/taskcluster/taskgraph/util/push_apk.py
@@ -6,16 +6,17 @@ Common functions for both push-apk and p
"""
import re
from taskgraph.util.schema import validate_schema
REQUIRED_ARCHITECTURES = {
'android-x86-nightly',
+ 'android-aarch64-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']
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64.py
@@ -0,0 +1,9 @@
+config = {
+ 'base_name': 'Android aarch64 API 21+ %(branch)s',
+ 'stage_platform': 'android-aarch64',
+ 'build_type': 'aarch64-opt',
+ 'src_mozconfig': 'mobile/android/config/mozconfigs/android-aarch64/nightly',
+ 'tooltool_manifest_src': 'mobile/android/config/tooltool-manifests/android/releng.manifest',
+ 'multi_locale_config_platform': 'android',
+ 'artifact_flag_build_variant_in_try': 'aarch64-artifact',
+}
--- a/testing/mozharness/mozharness/mozilla/building/buildbase.py
+++ b/testing/mozharness/mozharness/mozilla/building/buildbase.py
@@ -367,16 +367,17 @@ class BuildOptionParser(object):
'api-15-artifact': 'builds/releng_sub_%s_configs/%s_api_15_artifact.py',
'api-15-debug': 'builds/releng_sub_%s_configs/%s_api_15_debug.py',
'api-15-debug-artifact': 'builds/releng_sub_%s_configs/%s_api_15_debug_artifact.py',
'api-15-gradle': 'builds/releng_sub_%s_configs/%s_api_15_gradle.py',
'api-15-gradle-artifact': 'builds/releng_sub_%s_configs/%s_api_15_gradle_artifact.py',
'x86': 'builds/releng_sub_%s_configs/%s_x86.py',
'x86-artifact': 'builds/releng_sub_%s_configs/%s_x86_artifact.py',
'api-15-partner-sample1': 'builds/releng_sub_%s_configs/%s_api_15_partner_sample1.py',
+ 'aarch64': 'builds/releng_sub_%s_configs/%s_aarch64.py',
'android-test': 'builds/releng_sub_%s_configs/%s_test.py',
'android-checkstyle': 'builds/releng_sub_%s_configs/%s_checkstyle.py',
'android-lint': 'builds/releng_sub_%s_configs/%s_lint.py',
'android-findbugs': 'builds/releng_sub_%s_configs/%s_findbugs.py',
'valgrind' : 'builds/releng_sub_%s_configs/%s_valgrind.py',
'artifact': 'builds/releng_sub_%s_configs/%s_artifact.py',
'debug-artifact': 'builds/releng_sub_%s_configs/%s_debug_artifact.py',
'qr-debug': 'builds/releng_sub_%s_configs/%s_qr_debug.py',