gecko-dev/mobile/android/gradle.py
Nick Alexander a8199ab531 Bug 1509573 - Part 1: Use |mach build ...| rather than special Make target. r=snorp
This uses |mach build mobile/android/base/...| rather than a custom
target, reducing Make magic and making it a little easier to reason
about the Gradle build.  This is somewhat rearranging deckchairs, but
the more that gets out of Make and into moz.build, the simpler our
lives become.

The shared `onlyIf` Gradle guard will be used to make it very clear
when certain tasks are being skipped, as we move details about Gecko
binaries to depend on the Gradle task execution graph.

I also took the opportunity to improve the task logging.

Differential Revision: https://phabricator.services.mozilla.com/D12798

--HG--
extra : moz-landing-system : lando
2018-12-18 23:54:08 +00:00

57 lines
1.5 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 buildconfig
import subprocess
from mozbuild.util import (
ensureParentDir,
lock_file,
)
import mozpack.path as mozpath
def android(verb, *args):
# Building the same Gradle root project with multiple concurrent processes
# is not well supported, so we use a simple lock file to serialize build
# steps.
lock_path = '{}/gradle/mach_android.lockfile'.format(buildconfig.topobjdir)
ensureParentDir(lock_path)
lock_instance = lock_file(lock_path)
try:
cmd = [
mozpath.join(buildconfig.topsrcdir, 'mach'),
'android',
verb,
]
cmd.extend(args)
subprocess.check_call(cmd)
return 0
finally:
del lock_instance
def assemble_app(dummy_output_file, *inputs):
return android('assemble-app')
def generate_sdk_bindings(dummy_output_file, *args):
return android('generate-sdk-bindings', *args)
def generate_generated_jni_wrappers(dummy_output_file, *args):
return android('generate-generated-jni-wrappers', *args)
def generate_fennec_jni_wrappers(dummy_output_file, *args):
return android('generate-fennec-jni-wrappers', *args)
def generate_android_code_and_resources(*args):
"""No-op used to ensure inputs are fresh."""
return 0