"Drive Android builds out of taskcluster" .. meaning to run builds of Firefox for Android (we don't build Android) within taskcluster.
The idea is to get something non-b2g from releng running in taskcluster, both as a learning opportunity and as a proof of concept.
- build a docker image for building Android using the tools in alder
- build Android by hand / shell script in that docker image
- do a basic Android build in a simple, docker-compatible way
- handle tooltool cache
- handle ccache for m-c and tools
- encode the build process in a mozharness script
- put that script in-tree
- put all the make commands under 'mach build' (see below)
- coordinate with mshal / @mrrrgn
- post my docker patches for fb from @mrrrgn
- refactor my docker patches to match https://github.com/mrrrgn/ff64-build/blob/master/Dockerfile
- try running an fx desktop build in that container
- Factor in some stuff from my first attempt
- use tc-vcs (check out in the location mozharness will try to check it out later)
- tc-vcs, tooltool caches
- move some build.sh env's to docker
- update tools repo (already installed in image) with tc-vcs in build.sh
- Start Xvfb
- try running an Android build in that container using https://bugzilla.mozilla.org/show_bug.cgi?id=1155349
- parameterize other mozharness options
- install java
- newbug: do so via tooltool
- rebase onto the new tooltool
- allow specification of relengapi token via env variable
- re-evaluate subsequent steps (maybe no in-tree MH script, maybe a script based on fx_desktop, etc.)
- upload/export artifacts somewhere
- use TC's usual mechanism for caching objdirs
- generalize into a "mozharness runner" that takes a MH script and config as args
- compare to build-emulator.sh
- upload docker images somewhere they can be used by taskcluster
- run a build in a hand-written, hand-submitted task
- handle uploads / artifacts
- figure out how to send a relengapi token without mozharness happily logging it everywhere -- just unset in
build.sh
? - hook up to try
Improvements after hooking up to try (all made into bugs)
- move build-setup.sh from ubuntu-build to desktop-build; rename the latter to firefox-build
- encrypt the relengapi token :( :( :(
- handle ccache properly
- handle symbol uploads
- test that the APK actually works
- figure out why compiler / binutils hacks are required and fix
- zconf.h symlink
- a.out.h symlink
- LIBRARY_PATH setting
- retry starting Xvfb in a loop
- align input parameter names with b2g jobs (MOZHARNESS_REF, etc.)
- figure out if we have to set MOZ_BUILD_DATE, and if so to what (comments in bug 1125973)
It looks like my own credentials don't include any caches, so I'll need to get some credentials via some other technique.