author Nick Alexander <nalexander@mozilla.com>
Mon, 22 Dec 2014 19:49:04 -0800
changeset 234226 6d4ab59f9764de7a00e9a22074d909994d3cd34a
parent 216665 b83b13e93c23dbc66bc08fa82582ff12aadadeb6
child 253731 d7e29ec6a5123e07d44685c34d46d338075358cb
permissions -rw-r--r--
Bug 1098239 - Rewrite mobile/android Gradle integration. r=me This is a big patch, but it's essentially NPOTB. The part that is POTB is ... removing Gradle integration from the build. I've implemented |mach gradle-install| as a substitute for the build system stuff; it's just so much easier to iterate on a mach command than a moz.build and Makefile.in. I'm landing this with self-review because this lessens the impact of the Gradle integration on the build system and because I am the only person who understands either the old or the new system. You'll need to run |mach gradle-install| at top level to configure the new Gradle integration. But |mach gradle ...| does the right thing configuration steps too. This patch rewrites most of the Gradle integration. The major changes are: * all .gradle files move into mobile/android/gradle; * all the Gradle projects live in the object directory; * mozconfig exposed to all build.gradle files; * simplification of Android configuration between build.gradle files; * support for user-specified version of build tools; * first steps towards supporting builds from the source directory; * bumps Gradle to 2.2.1; * bumps the Android-Gradle plugin to 0.14.4. This is seemingly a step backwards given that we'd prefer to ship the .idea directory in the source directory. But in fact we get closer to that; it's possible to run ./gradlew in the source directory and get a reasonable build. We'll progress with this in time. The win right now is that the projects are nested, which makes importing work better on Linux machines. Unfortunately IntelliJ 13 and 14 now have conflicting Android-Gradle plugin version requirements, so we now only support IntelliJ 14.0.2 and above.

# .hgignore - List of filenames hg should ignore

# Filenames that should be ignored wherever they appear

# Vim swap files.

# Emacs directory variable files.

# User files that may appear at the root

# Empty marker file that's generated when we check out NSS

# Build directories

# Build directories for js shell

# SpiderMonkey configury
# SpiderMonkey test result logs

# Java HTML5 parser classes

# SVN directories

# Ignore the files and directory that Eclipse IDE creates

# Ignore the directory that JetBrains IDEs create

# Python stuff installed at build time.

# Git repositories

# Ignore chrome.manifest files from the devtools loader

# git checkout of libstagefright

# Tag files generated by GNU Global

# Unit tests for Loop

# Git clone directory for updating web-platform-tests

# Loop web client build/deploy dependencies

# Loop legal content build/deploy artifacts

# XXX Once a grunt contrib-clean command has been added (bug 1066491), or
# once legal has centralized their ToS and PP hosting infrastructure,
# (expected Q4 2014) the legal doc build stuff for Loop can be removed,
# including the following three lines

# Android Gradle artifacts.