This patch adds JaCoCo as a dependency for the geckoview androidTest configurations, as well as
the `mach android archive-geckoview-coverage-artifacts` command, and the `--enable-java-coverage`
mozconfig flag.
MozReview-Commit-ID: 36jNAzK44g3
--HG--
extra : rebase_source : 9edc37913a3929ad045270c601c77791d122e363
The 'codecoverage' mozharness script and a code coverage mach command for Android
did their own custom bootstrapping of MOZ_FETCHES. Now that run-task does this
automatically, we should make sure we aren't downloading MOZ_FETCHES twice.
Depends on D2167.
Differential Revision: https://phabricator.services.mozilla.com/D2368
--HG--
extra : moz-landing-system : lando
mach android-emulator currently supports 6 different avds; I am struggling to maintain
that many configurations. I don't see a lot of value in keeping both 6.0 and 7.0,
and Android 6.0 is not as popular as 7.0. Let's remove 6.0, encouraging 7.0 as an
alternative; same for x86-6.0 -> x86-7.0.
Run unit tests under geckoview/ when running 'mach android test'. This
also lets us run those tests on Taskcluster.
The test report parser for 'mach android test' had a bug where the input
directory was wrong. As a result, we weren't producing test output at
all. This patch fixes the input directory, and outputs an error if no
reports are found at all to avoid this bug in the future.
MozReview-Commit-ID: IiswQaSPCr0
Add a './mach android geckoview-docs' command that generates javadoc for
GeckoView using Gradle. Specifying the '--archive' option will generate
a geckoview-javadoc.jar archive. Specifying the '--upload' option,
intended primarily for Taskcluster, will upload the javadoc to Github
pages under the given user/repository.
MozReview-Commit-ID: HfwXlf8aFhw
--HG--
extra : rebase_source : 25ccbf3380ba2c8f391c48c882256f970be92c9f
This pushes all of the magic Gradle targets into gradle.configure,
which is the most accessible central place for them. Some impact the
build, so they almost certainly need to be in moz.configure; and its
better to have one central place to update than many places.
Gradle has a notion of configurations. Fennec determines many
configurations, only one of which is used in automation; and right
now, that one is "officialPhotonDebug". Evolving the "one true"
configuration is frustrating, and this helps with that. Post
Android-Gradle plugin 3.0+, we can do better and also extract the
configuration details for the :geckoview and :geckoview_example Gradle
projects, but right now they are ad-hoc and can't really be improved.
MozReview-Commit-ID: LdGE05zn2H1
--HG--
extra : rebase_source : db7e9fe90f2bd1ae5058af046a66edd0cd549141
These magic locations evolve over time. Baking them into
moz.configure is the easiest way to share them across the build
system, and pushing them into a new |mach android *| command continues
a pattern that has been very successful.
MozReview-Commit-ID: CyxVQ0LHHgl
--HG--
extra : rebase_source : 8350d71665f0126aa4ee2c8fec32c4b8e34dc772
This was in Gradle due to history. When this first landed, we invoked
Gradle directly from the mozharness, and the best way to print the
report URLs was from Gradle itself. When the Android Gradle suites
were made tier 1, little harnesses (|mach android
{checkstyle,findbugs,lint,test}|) were written and invoked locally and
in automation. This functionality should have migrated with them.
This removes the special Gradle target names from the Gradle
configuration, making it easier to change them in the future.
MozReview-Commit-ID: 1KPd3J5t82Q
--HG--
extra : rebase_source : 1da85e31c113bc9da138817bebf981af8b9b66dd
We've had good success with |mach android *| for invoking test suites
and other Gradle-related features; this was just an oversight. The
real advantage is that almost all of the magic Gradle targets are now
in mobile/android/mach_commands.py and not scattered throughout the
tree. That'll make it easier to move the actual Gradle configuration
choices forward in the future.
MozReview-Commit-ID: GI1pUHHfXeO
--HG--
extra : rebase_source : 9d7b98e968a2537f8dd1ffd0646c51ffe429bd57
This pushes all of the magic Gradle targets into gradle.configure,
which is the most accessible central place for them. Some impact the
build, so they almost certainly need to be in moz.configure; and its
better to have one central place to update than many places.
Gradle has a notion of configurations. Fennec determines many
configurations, only one of which is used in automation; and right
now, that one is "officialPhotonDebug". Evolving the "one true"
configuration is frustrating, and this helps with that. Post
Android-Gradle plugin 3.0+, we can do better and also extract the
configuration details for the :geckoview and :geckoview_example Gradle
projects, but right now they are ad-hoc and can't really be improved.
MozReview-Commit-ID: LdGE05zn2H1
--HG--
extra : rebase_source : 3cf360a814ed4927ec6c767b42448285ed2ffb35
These magic locations evolve over time. Baking them into
moz.configure is the easiest way to share them across the build
system, and pushing them into a new |mach android *| command continues
a pattern that has been very successful.
MozReview-Commit-ID: CyxVQ0LHHgl
--HG--
extra : rebase_source : 8350d71665f0126aa4ee2c8fec32c4b8e34dc772
This was in Gradle due to history. When this first landed, we invoked
Gradle directly from the mozharness, and the best way to print the
report URLs was from Gradle itself. When the Android Gradle suites
were made tier 1, little harnesses (|mach android
{checkstyle,findbugs,lint,test}|) were written and invoked locally and
in automation. This functionality should have migrated with them.
This removes the special Gradle target names from the Gradle
configuration, making it easier to change them in the future.
MozReview-Commit-ID: 1KPd3J5t82Q
--HG--
extra : rebase_source : 1da85e31c113bc9da138817bebf981af8b9b66dd
We've had good success with |mach android *| for invoking test suites
and other Gradle-related features; this was just an oversight. The
real advantage is that almost all of the magic Gradle targets are now
in mobile/android/mach_commands.py and not scattered throughout the
tree. That'll make it easier to move the actual Gradle configuration
choices forward in the future.
MozReview-Commit-ID: GI1pUHHfXeO
--HG--
extra : rebase_source : 9d7b98e968a2537f8dd1ffd0646c51ffe429bd57
We already had a work-around in place for Gradle invocations, but
apparently that wasn't enough for the Maven deployer, which must
launch its own JVM, which doesn't have the correct file encoding on
Linux.
MozReview-Commit-ID: 4z1IEZBmLaz
--HG--
extra : rebase_source : 951bb4c75ecba0d83cb86e728e1164dda99a6a08
extra : source : 6dd2abe095b82ed1a0fed4e687a7bbf3a5e036de
The goal is to use a newer Android-Gradle build plugin version (2.3.3
is latest stable). That requires a modern Gradle (anything 3.3+, but
3.4.1 is the default from my Android Studio), and also a newer
build-tools (25.0.3 is latest stable).
The locations of lint output changed, and we want to use the standard
output location because it's difficult to accommodate variant details
in custom names. We change the location of findbugs output to follow
suit.
This requires either:
- fixing lint errors
- adding to the lint whitelist
- using the new lint baseline
It's best to use the new lint baseline, which will happen in the next commit.
MozReview-Commit-ID: D19FzIDCJrE
--HG--
extra : rebase_source : 12d132c0c3e0dbe2b8873b31360ea96d612de44c
We should now only maintain Photon flavor. Remove all Australis related configuration in build scripts.
MozReview-Commit-ID: H4LE8LAso42
--HG--
extra : rebase_source : 2d5a05e43b261d573677834210a7b3fb18aebcac
It be ideal to have |mach test {findbugs,test}| and |mach lint
{lint,checkstyle}|, but the |mach test| command is very difficult to
extend in a direction orthogonal to the existing direction. The
existing |mach test| is built around in-tree manifests, tagged and
divided into suites, intended to support |mach test
path/to/arbitrary/test|. The Android findbugs task is a global static
analysis that doesn't fit into the path/manifest model. The Android
test task is based on JUnit and not easy to build manifest support
for. The |mach lint| command is intended to be extended, but the
effort to extend it is non-trivial and not worth the effort (at this
time).
Therefore, I've taken the existing, little used |mach android| command
and added subcommands for use by local developers and automation. If
nothing else, this reduces the number of "special Gradle targets" --
the equivalent of "special Make targets" -- sprinkled throughout the
tree, which can only be a good thing!
MozReview-Commit-ID: 24b1vbgykpN
--HG--
extra : rebase_source : 8843a6e3840586fe05a1434484a848d48b2a6e8b
This also adds a GRADLE_FLAGS environment variable for use in
automation.
Manually tested.
MozReview-Commit-ID: 8nDkqz2VnJn
--HG--
extra : rebase_source : 32626a7dc0c0a6a440e300d92c31670f14319325
extra : amend_source : fe134e25f079851b4c648b53a7a485ee20c15c18
Enable building with Gradle using --with-gradle. Configure the
location of Gradle with --with-gradle=/path/to/gradle. For local
developers, this is always the in tree Gradle wrapper, which downloads
and installs the correct Gradle version automatically. In automation,
this will be a version of Gradle fetched from tooltool.
Configure the location to use to download Gradle Maven dependencies
(including the Android-Gradle plugin) by setting
GRADLE_MAVEN_REPOSITORY in your mozconfig. For local developers, this
defaults to the jcenter repository. In automation, this will be an
archived directory fetched from tooltool.
Android-specific Maven dependencies are shipped as "extras" with the
Android SDK, and should be found automatically by the Android-Gradle
plugin.
MozReview-Commit-ID: Hrkn88Vig5H
--HG--
extra : rebase_source : c5e83590c9b28ad5a10f91ec0a3663e6d64b3b40
extra : amend_source : c3e162673238d6c6191838cc98f8301e325e01a2
Opt-in by adding --enable-gradle-mobile-android-builds.
Gradle dependencies (including the Android-Gradle plugin) are assumed
to be present. Local developers will fetch them from the jcentral
repository.
Android-specific Maven dependencies are shipped as "extras" with the
Android SDK, and should be found automatically by the Android-Gradle
plugin.
MozReview-Commit-ID: 966XgddWgEu
--HG--
extra : rebase_source : 8e8c6156e1d06813c250662e104fd14c621d91ab
extra : source : 306cf0271d3e3a344fcbfd2baf75e0450c288cf1
extra : histedit_source : d17446714236c408699a0953882e84ac3a192380%2Cc21b166af79ef1e00215748820bc2670405ac1dc
Opt-in by adding --enable-gradle-mobile-android-builds.
Gradle dependencies (including the Android-Gradle plugin) are assumed
to be present. Local developers will fetch them from the jcentral
repository.
Android-specific Maven dependencies are shipped as "extras" with the
Android SDK, and should be found automatically by the Android-Gradle
plugin.
MozReview-Commit-ID: 966XgddWgEu
--HG--
extra : rebase_source : ff1cf18a59c7c5633e238090cb6a9abb307ed4fb