2
0
mirror of https://github.com/fork-maintainers/iceraven-browser synced 2024-11-15 18:12:54 +00:00
iceraven-browser/taskcluster/fenix_taskgraph/gradle.py

59 lines
1.8 KiB
Python
Raw Normal View History

2019-04-23 12:21:21 +00:00
# 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/.
import json
import subprocess
from taskgraph.util.memoize import memoize
2019-04-23 12:21:21 +00:00
def get_variant(build_type):
2019-09-24 14:18:45 +00:00
all_variants = _fetch_all_variants()
matching_variants = [
2022-03-11 23:23:38 +00:00
variant for variant in all_variants if variant["build_type"] == build_type
2019-09-24 14:18:45 +00:00
]
number_of_matching_variants = len(matching_variants)
if number_of_matching_variants == 0:
2022-03-11 23:23:38 +00:00
raise ValueError('No variant found for build type "{}"'.format(build_type))
2019-09-24 14:18:45 +00:00
elif number_of_matching_variants > 1:
2022-03-11 23:23:38 +00:00
raise ValueError(
'Too many variants found for build type "{}"": {}'.format(
build_type, matching_variants
)
)
2019-09-24 14:18:45 +00:00
return matching_variants.pop()
@memoize
def _fetch_all_variants():
2022-03-11 23:23:38 +00:00
output = _run_gradle_process("printVariants")
content = _extract_content_from_command_output(output, prefix="variants: ")
return json.loads(content)
2019-04-23 12:21:21 +00:00
Configure either geckoview beta or nightly at compile-time (#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 15:32:01 +00:00
def _run_gradle_process(gradle_command, **kwargs):
gradle_properties = [
2022-03-11 23:23:38 +00:00
"-P{property_name}={value}".format(property_name=property_name, value=value)
for property_name, value in kwargs.items()
Configure either geckoview beta or nightly at compile-time (#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 15:32:01 +00:00
]
2019-04-23 12:21:21 +00:00
2022-03-11 23:23:38 +00:00
process = subprocess.Popen(
["./gradlew", "--no-daemon", "--quiet", gradle_command] + gradle_properties,
stdout=subprocess.PIPE,
universal_newlines=True,
)
2019-04-23 12:21:21 +00:00
output, err = process.communicate()
exit_code = process.wait()
if exit_code != 0:
raise RuntimeError("Gradle command returned error: {}".format(exit_code))
2019-04-23 12:21:21 +00:00
return output
def _extract_content_from_command_output(output, prefix):
2022-03-11 23:23:38 +00:00
variants_line = [line for line in output.split("\n") if line.startswith(prefix)][0]
return variants_line.split(" ", 1)[1]