* Pre: Bump version to 0.3.2.
This just needs to be greater than 0.3.1, the last version I pushed in
testing.
* Publish logins AAR to nalexander's personal bintray.
* Post: Bump task timeout for build and publishing.
Building everything for three architectures just takes a long time --
15 minutes per architecture or more.
I investigated speeding this up, and I conclude that compiling the
architectures in parallel is both work (you need to work around cargo
a little bit, and you need to use a Make jobserver to limit the total
thread pool) and doesn't pay off (I witnessed only about a 5-10%
speed-up locally). My guess is that it pays off even less in AWS,
where IO throughput is relatively low and context switching relatively
more expensive.
* [logins-api] Pre: Extract version and dependency details to top-level project.
* [logins-api] Pre: Fix issue with launching intents on Android 21 devices.
When invoked outside of an `Activity` `Context`, we need to launch a
new Android task.
* [logins-api] Use `rust-android-gradle` plugin to integrate Rust into logins-api.
* [logins-api] Publish `org.mozilla.sync15.logins` when tagged.
* Add `scopes` map to the tag task in .taskcluster.yml
* Comment out bintray portions of .taskcluster.yml for now (#189)
This reduces the set of artifacts and will require changes in the
`android-components` repository.
SQLcipher is still built (statically), but it's not exposed as a Task
Cluster artifact. When we get to shipping the Logins API, we'll use
`libsqlcipher.a` (statically, like we do `lib{crypto,ssl}.a`.
It's non-trivial to build OpenSSL and target Android API 21. NDK
r17{b} has problems that I wasn't able to work-around, either for
OpenSSL 1.0.2* or for 1.1.0*. Using an older NDK with the
--deprecated-headers flag to `make_standalone_toolchain.py` (in the
Docker image) addresses the problem... but the --deprecated-headers
flag is itself removed from r17*.
There are a number of changes here. The most obvious is that we run a
decision task and build a taskgraph for PRs now. But internally, many
things are ready to generalize to non-FxA Rust Client projects. The
NDK and Rust toolchains are built into a Docker image (with a very
verbose name!) that is shared with Mentat. It's nice! The standalone
toolchains are installed in that image. The image sets:
ANDROID_NDK_HOME=/build/android-ndk
ANDROID_NDK_API_VERSION=26
ANDROID_NDK_TOOLCHAIN_DIR=/build/android-ndk-toolchain
In $ANDROID_NDK_TOOLCHAIN_DIR the toolchains are named like
$ARCH-$ANDROID_NDK_API_VERSION; this allows to cache multiple versions
of the toolchain (if needed). So we have, say
/build/android-ndk-toolchain/arm-26
/build/android-ndk-toolchain/arm64-26
/build/android-ndk-toolchain/x86-26
This configuration is what the `rust-android-gradle` plugin expects.
That plugin will be used for the Android Logins API in this repository.
The Dockerfile is in the Mentat repository right now, but I expect it
to migrate to application-services (or even android-components)
eventually.