Commit Graph

47 Commits

Author SHA1 Message Date
Nick Alexander
bc6c4ce1f8 Bug 1207890 - Post: Move |mach artifact| command out of mobile/android. r=glandium 2015-12-23 17:08:49 -08:00
Nick Alexander
442044f1ce Bug 1207890 - Part 4: Download and process Mac OS X artifacts. r=glandium
This mounts the downloaded DMG and copies a subset of the libraries
into the correct places in the processed archive.  They'll be
installed, with paths, into dist/bin from there.
2015-12-23 16:41:17 -08:00
Nick Alexander
3ffcb7eef5 Bug 1216817 - Part 3: Add files from artifacts to $OBJDIR/_build_manifests/install/dist_bin. r=glandium
This allows to run |mach artifact install| immediately after |mach
configure| and not have a subsequent |mach build| delete the files
that |mach artifact install| copied into dist/bin.
2015-10-30 12:39:46 -07:00
Nick Alexander
fd3081e979 Bug 1216817 - Part 2: Narrow distdir to bindir in artifacts. r=gps 2015-10-30 12:30:35 -07:00
Geoff Brown
9d13c4ac57 Bug 1232962 - Use emulator device-serial for android-emulator command only; r=jmaher 2015-12-16 13:59:11 -07:00
Geoff Brown
696e2d0c58 Bug 1231491 - Warn when android-emulator run from a non-Android context; r=jmaher 2015-12-16 13:59:09 -07:00
Nick Alexander
a2df8f3cff Bug 1230848 - Remove Gradle configuration rooted in the object directory. r=gps
DONTBUILD NPOTB

The top source directory configuration requires
mobile/android/gradle/m2repo/**, so it stays.  There's no value
changing the location; it contains an Android-specific Gradle plugin.

We note the removal of |mach gradle-install| and point to the new
documentation.
2015-12-06 15:02:11 -08:00
Nick Alexander
c1dd1f403b Bug 1107811 - Part 3: Fix Gradle configurations. r=me 2015-12-05 17:33:55 -08:00
Nick Alexander
f8b3ba19ac Bug 1229438 - Part 3: Update build. r=rnewman 2015-12-01 10:56:09 -08:00
Nick Alexander
a6949f3c1b Bug 938994 - Post: Update Gradle configurations. r=sebastian
I moved the JAR out of the root directory because I didn't want
multiple copies of things in robocop/ appearing in IntelliJ, although
this turns out to not be strictly necessary.  Keeping it as part of a
general push to move things out of the root dumping ground.
2015-11-09 10:18:45 -08:00
Nick Alexander
7607c92392 No bug - Add --verbose flag to |mach artifact| commands. r=me
DONTBUILD NPOTB
2015-11-05 14:49:33 -08:00
Nick Alexander
231ad77d9b Bug 1219058 - Part 2: Normalize Robocop test harness source layout. r=gbrown
Pretty straight-forward.  The win here is that the directory is now
sensible, so we don't need the robocop_harness symlink for the Gradle
build configuration.
2015-10-27 17:16:09 -07:00
Nick Alexander
3cf3174243 Bug 1219058 - Part 1: Normalize Robocop test source layout. r=gbrown,mfinkle
This moves the Robocop test code into src/org/mozilla/gecko/tests.
The org/mozilla/gecko/tests matches the package name we have now.
2015-10-27 16:45:00 -07:00
Nick Alexander
04c3308b4c Backed out changesets fb5765dffe01 and 0447429a5627 (Bug 1219058). r=me
I realize I wanted to shorten these paths in response to review
comments.  I'll reland shortly.
2015-10-28 14:47:14 -07:00
Nick Alexander
e04d2ebd56 Bug 1219058 - Part 2: Normalize Robocop test harness source layout. r=gbrown
Pretty straight-forward.  The win here is that the directory is now
sensible, so we don't need the robocop_harness symlink for the Gradle
build configuration.
2015-10-27 17:16:09 -07:00
Nick Alexander
81efb9df3f Bug 1219058 - Part 1: Normalize Robocop test source layout. r=gbrown,mfinkle
This moves the Robocop test code into
src/androidTest/java/org/mozilla/gecko/tests.  The
src/androidTest/java is Gradle standard; the org/mozilla/gecko/tests
matches the package name we have now.
2015-10-27 16:45:00 -07:00
Nick Alexander
1ad122e69a Bug 1218935 - Normalize background JUnit3 source layout. r=me,rnewman 2015-10-27 11:56:06 -07:00
Nick Alexander
736af7e6fa Bug 1192064 - Determine |mach artifact| job from mozconfig. r=me 2015-10-23 15:02:02 -07:00
Nick Alexander
5fb41e1225 Bug 1192064 - Add 'android-x86' job to |mach artifact|. r=jonalmeida 2015-10-23 12:55:16 -07:00
Nick Alexander
58fef741e3 Bug 1174244 - Part 4: Remove 'thirdparty_adjust_sdk' Gradle project. r=sebastian 2015-10-20 17:52:15 -07:00
Nick Alexander
ff65d80026 Bug 1216434 - Don't symlink to objdir in |mach gradle-install|. r=sebastian
DONTBUILD NPOTB

This has always been possible with Gradle -- Gradle doesn't care where
in the file tree resources are found.  (Gradle is perfectly happy to
take resources from outside of the root project directory.)  IntelliJ,
however, displays resources outside of known "content roots" in
special and frankly unhelpful ways.  Here, we avoid that on a
technicality: IntelliJ doesn't acknowledge (or even register a content
root!) for the non-standard AndroidManifest.xml locations set in
build.gradle.  This means we don't see odd content roots in unexpected
places in IntelliJ.

With this change, the formerly failing command

mach clobber && mach configure && mach gradle-install

completes successfully.  That gets us one step closer to being able to
open Fennec in IntelliJ without running additional commands.
2015-10-18 16:44:04 -07:00
Nick Alexander
5d56d23345 Bug 1208793 - Part 4: Remove 'preprocessed_code' Gradle project. r=sebastian
DONTBUILD NPOTB

This needed the same dependency changes that the previous part did.
There's a nice simplification here because some of the code is now
being compiled in the containing project (base) and not the (now
removed) sibling project.
2015-10-19 18:22:32 -07:00
Nick Alexander
4736d48a74 Bug 1208793 - Part 3: Remove 'preprocessed_resources' Gradle project. r=sebastian
While testing, I found some issues with the existing dependencies.  To
address them, I've made all project preBuild tasks depend on the
(single) root generateCodeAndResources; this should ensure that the
Make integration happens as early as possible.  In addition, I fixed
the dependencies syncing the generated resources into the build
directory, which weren't quite right.  This works well locally now.
2015-10-19 18:06:10 -07:00
Nick Alexander
e15d31e5ec Bug 1208793 - Part 2: Remove 'branding' Gradle project. r=sebastian
Technically, branding should be part of the App and not GeckoView, but
we don't have separated resources yet, so in it goes.
2015-10-19 17:10:53 -07:00
Nick Alexander
c3815047b7 Bug 1213418 - Part 1: Use mozregression to download in |mach artifact|. r=me
DONTBUILD NPOTB
2015-10-09 17:47:17 -07:00
vivek
8bcbe8a667 Bug 1182193 - Part 1: Add Gradle-based Robolectric JUnit 4 tests r=nalexander 2015-08-29 00:26:36 +03:00
Nick Alexander
a067f87693 No bug - Add |mach android| command. r=me
DONTBUILD NPOTB

This adds a pass-thru |mach android| command.  It's just here to make
it easier to add and remove Android SDK packages: since most folks
don't have the Android tools on their PATH, this saves them having to
root through the object directory to find the path to the tool.
2015-08-26 10:57:49 -07:00
Geoff Brown
8b60b03872 Bug 1164596 - Add mach android-emulator command; r=ahal 2015-09-01 15:07:53 -06:00
Nick Alexander
89bcc4e5ab Bug 1196970 - Part 6: Copy preprocessed resources from objdir to build directory during Gradle build. r=sebastian
DONTBUILD NPOTB

This means we don't require the directory in the object directory at
gradle-install time.  We're not concerned if the resource files are
missing, since we have code to ensure they're fresh already; and if
they are missing, we'll quickly fail as we try to process the resource
set.
2015-08-07 17:00:51 -07:00
Nick Alexander
0667dc5d85 Bug 1196970 - Part 5: Copy preprocessed code from objdir to build directory during Gradle build. r=sebastian
This means we don't require the directory in the object directory at
gradle-install time.  We're not concerned if the source files are
missing, since we have code to ensure they're fresh already; and if
they are missing, we'll quickly fail as we try to compile with missing
sources.
2015-08-07 16:38:43 -07:00
Nick Alexander
f5ba8c186f Bug 1196970 - Part 4: Copy omni.ja, native libraries, and asset libraries from dist/fennec manually. r=sebastian
This allows us to not require dist/fennec/* to exist in the object
directory at gradle-install time.  It gets us one small step closer to
being able to sit down to a fresh source tree and open a Fennec
project in IntelliJ.
2015-08-18 10:51:10 -07:00
Nick Alexander
5049d2bcca Bug 1196970 - Part 3: Keep all preprocessed_code references in the objdir. r=sebastian
This was just an oversight.  The Gradle configuration referenced
topsrcdir rather than having a symlink via the objdir.  This didn't
impact the Gradle build, but it did make the preprocessed_code Gradle
project appear outside of the root Gradle project in IntelliJ.
2015-08-07 14:05:50 -07:00
Nick Alexander
2cb62bed1d Bug 1160563 - Part 2: Make ANDROID_ASSETS_DIRS a moz.build variable. r=gps
We have had singular ANDROID_ASSETS_DIR in Makefile.in for a while.
Fennec itself does not use the existing Makefile.in Android code, for
complicated historical reasons.

This makes the existing variable moz.build-only; generalizes the
existing variable to an ordered list; and adds the equivalent use of
the new list to the Fennec build, with a simple example asset.

This patch also updates the packager to include assets packed into the
gecko.ap_.  Without the packager change, the assets/ directory in the
ap_ gets left out of the final apk.  This whole approach is totally
non-standard but is more or less required to support our single-locale
repack scheme.
2015-08-12 11:04:03 -07:00
Nick Alexander
52fe429475 Bug 1190940 - Handle MOZ_NATIVE_DEVICES and MOZ_WEBRTC in Gradle build. r=sebastian
This is an information sharing review request.  This patch
demonstrates two ways to handle static build flags in the Java source
base.

For MOZ_NATIVE_DEVICES, we /exclude/ certain Java source files.  This
is unwieldy but works fine.

For MOZ_WEBRTC, we selectively /include/ certain Javas source
directories.  We symlink the directories into the objdir so that the
IntelliJ configuration remains entirely under the project directory --
IJ really doesn't like it when sources are outside of the project
content root.  Since two source directories declare the same package
(org.webrtc.videoengine) we can't symlink deep in the package
hierarchy.  Therefore, we add top-level source directories sibling to
src/main.
2015-08-04 10:01:26 -07:00
Gregory Szorc
0d16ec0cfa Bug 1176642 - Use absolute_import in mach_commands.py files; r=glandium
This removes ambiguity as to which modules are being imported, making
import slightly faster as Python doesn't need to test so many
directories for file presence.

All files should already be using absolute imports because mach command
modules aren't imported to the package they belong to: they instead
belong to the "mach" package. So relative imports shouldn't have been
used.
2015-06-21 17:39:09 -07:00
Nick Alexander
cbe57abf71 Bug 1162191 - Add |mach artifact| for installing downloaded Fennec binaries. r=gps
DONTBUILD ON A CLOSED TREE: Android-only and the build changes are cosmetic.

Very much a first cut, but I'd like to get some Fennec early adopters testing.

This adds:

* |mach artifact install| to fetch and install Fennec binaries;
* |mach artifact last| to print details about what was last installed;
* |mach artifact {print,clear}-caches|, for debugging.

This code is exposed as a new mozbuild.artifacts Python but it's not
particularly general.  My intention was to get things out of the mach command
more than produce a general artifact fetching API.  We can leave that bike
shed to Bug 1124378.

I've been testing this with --disable-compile-environment and it works well
locally, although there's no reason a knowledgeable developer couldn't use
this in conjunction with a fully-built tree.  (I don't know when such a
situation would arise, but I know of no technical impediment.)
2015-06-24 23:12:00 -07:00
Nick Alexander
7e516a64dd Bug 1168407 - Implement a bidirectional Java addon interface. f=jchen,r=rnewman,r=mfinkle
There are several parts to this ticket:

1) Produce javaaddons-1.0.jar, a standalone JAR defining a (versioned)
Java interface suitable for consumption by third-party Java addon
implementations.

2) Support the new V1 interface in the JavaAddonManager.

3) Add Robocop JavascriptTests testing the JavaScript message passing
interface to and from Java.

This patch can be read as "not in tests/" and "everything in tests/".
2015-06-17 21:47:29 -07:00
Nick Alexander
5e214da8cb Bug 1171566 - Part 1: Configure Gradle and Spoon. rs=mcomella
There are few things happening here:

* A purely mechanical move of test sources into org.mozilla.test.browser.junit3.
  This is only to make it easy to specify the suite in Spoon.  (But it has the
  advantage of making it possible to move files around in IntelliJ, since the
  symlink points to src instead of org/mozilla/gecko.)

* Specifying the suite (package name) ended up requiring changes to the
  spoon-gradle-plugin anyway.  Hence, I've included this custom
  spoon-gradle-plugin version locally, while I work to upstream the changes.

* Some Gradle trickery to make |mach gradle runBrowserTests| execute Spoon with
  the correct package name.
2015-06-04 12:09:23 -07:00
Michael Comella
61d09e5b92 Bug 1170285 - Add lint.xml config file to base sub-project. r?nalexander
While it might seem like a good idea to disable all of the checks we don't
currently pass, Intellij uses the same lint configuration file as the
command-line invocation and so we'll be more likely to write in new errors by
disabling some checks.
2015-06-03 21:12:00 -07:00
Nick Alexander
1646b86ded Bug 938659 - Part 2: build system changes. r=mfinkle 2015-05-01 17:33:03 -07:00
Nick Alexander
5adeac18ee Bug 1159390 - Set sharedUserId in robocop.apk. r=gbrown 2015-04-28 11:29:18 -07:00
Mark Finkle
8b0e18b6db Bug 1143888 - Integrate the Adjust install tracking SDK. r=mfinkle 2015-04-08 22:49:16 -07:00
Nick Alexander
c866136d6c No bug - Make Gradle debug test APK look like Robocop. r=me 2015-01-26 21:52:43 -08:00
Nick Alexander
322945eb0d Bug 1121622 - Insert omnijar and libraries into debug APK only; Proguard release APK. r=me
DONTBUILD NPOTB

Local developers should only be building debug APKs.  I intend
automation to only build release APKs, and automation will insert the
omnijar and native libraries into the release APK during packaging.

This change requires local developers to delete
$OBJDIR/mobile/android/gradle/app/src/main/{assets,jniLibs}.
2015-01-14 11:07:06 -08:00
Nick Alexander
92faa61cd9 Bug 1115064 - Fix small errors and make Gradle integration work in Android Studio 1.0.2. r=me
The important change here is that we allow the Android-Gradle plugin
to be version 0.14.4 or version 1.0.0, which appears to work in
IntelliJ 14.0.2 and in Android Studio 1.0.2.

Testing feedback came from imjalpreet and garvank.

--HG--
extra : rebase_source : 2b93dd91603666f1c6a1d2fe0fa7721d5741bdda
2014-12-23 11:39:15 -08:00
Nick Alexander
4f393b3ebb 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.

--HG--
rename : mobile/android/base/gradle_AndroidManifest.xml => mobile/android/gradle/base/AndroidManifest.xml
rename : mobile/android/base/gradle_AndroidManifest.xml => mobile/android/gradle/branding/AndroidManifest.xml
rename : mobile/android/gradle/omnijar/gradle_AndroidManifest.xml => mobile/android/gradle/omnijar/AndroidManifest.xml
rename : mobile/android/base/gradle_AndroidManifest.xml => mobile/android/gradle/preprocessed_code/AndroidManifest.xml
rename : mobile/android/base/gradle_AndroidManifest.xml => mobile/android/gradle/preprocessed_resources/AndroidManifest.xml
rename : mobile/android/thirdparty/gradle_AndroidManifest.xml => mobile/android/gradle/thirdparty/AndroidManifest.xml
2014-12-22 19:49:04 -08:00
Nick Alexander
43e3611170 Bug 1103121 - Add |mach gradle| command for building Fennec Gradle. r=gps
I went with gradle instead of gradlew because it's more likely to be
what users consider.  And mach helpfully fixes up the uncommon typo.

This is a little hard-coded right now but I don't think it's likely
any other Gradle consumer will arise in the short term.

--HG--
extra : source : 67ce3d7591f944fa458758d97f443651f0e40dac
extra : amend_source : d10846e845deda5d368bdfdbb5b3d68706038992
extra : histedit_source : fb30750f389444a9619778d4c690d7de5e5fcbc1
2014-11-21 12:40:00 -08:00