2
0
mirror of https://github.com/fork-maintainers/iceraven-browser synced 2024-11-05 21:20:45 +00:00
iceraven-browser/automation/taskcluster/lib/gradle.py
Mitchell Hentges e7ca5257b4 [fenix] Configure either geckoview beta or nightly at compile-time (https://github.com/mozilla-mobile/fenix/pull/4851)
* Remove "abi" product flavor and introduce "engine" product flavor.

This patch will allow us to build Fenix against GeckoView Nightly and GeckoView Beta by
introducing a new flavor dimension: engine = [geckoNightly, geckoBeta].

In addition to that it adds a "fenix"  prefix to the nightly, beta and production flavors
to reduce the ambiguity between fenix beta/nightly and GeckoView beta/nightly.

For now the build types have the following engine variants enabled:

**debug**: geckoNightly, geckoBeta
Both variants enabled for local development and testing.

**forPerformanceTest**: geckoNightly, geckoBeta
Both variants enabled unless the perf team only cares about Nightly (tbd)

**fenixNightlyLegacy**: geckoBeta
Uses GeckoView Beta for now - the same version we ship production builds with (same behavior
as before). This release type will eventualyl be decommissioned once we switch to a separate
Nightly app on Google Play.

**fenixNightly**: geckoBeta
Uses GeckoView Beta for now - the same version we ship production builds with (same behavior
as before). Changing this build to use GeckoView Nightly is currently being discussed.

**fenixBeta**: geckoBeta
Fenix Beta uses GeckoView Beta.

**fenixProduction**
Fenix Production uses GeckoView Beta (69) currently.

* gradle.py/variant.py: Replace "abi" with "engine".

* Disable enableUnitTestBinaryResources until we can switch to Android Gradle plugin 3.5.

* Fenix nightly should use both geckoview nightly and beta

* Updates automation to use apk splitting and support different engine
2019-08-21 08:32:01 -07:00

43 lines
1.6 KiB
Python

# 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 print_function
import json
import subprocess
from lib.variant import Variant, VariantApk
def get_variant(build_type, engine):
print("Fetching variant information for build_type='{}', engine='{}'".format(build_type, engine))
output = _run_gradle_process('printVariant', variantBuildType=build_type, variantEngine=engine)
content = _extract_content_from_command_output(output, prefix='variant: ')
raw_variant = json.loads(content)
return Variant(
raw_variant['name'],
build_type,
[VariantApk(build_type, raw_apk['abi'], engine, raw_apk['fileName']) for raw_apk in raw_variant['apks']]
)
def _run_gradle_process(gradle_command, **kwargs):
gradle_properties = [
'-P{property_name}={value}'.format(property_name=property_name, value=value)
for property_name, value in kwargs.iteritems()
]
process = subprocess.Popen(["./gradlew", "--no-daemon", "--quiet", gradle_command] + gradle_properties, stdout=subprocess.PIPE)
output, err = process.communicate()
exit_code = process.wait()
if exit_code is not 0:
print("Gradle command returned error: {}".format(exit_code))
return output
def _extract_content_from_command_output(output, prefix):
variants_line = [line for line in output.split('\n') if line.startswith(prefix)][0]
return variants_line.split(' ', 1)[1]