Integrate the building of the android phablet parts into cdimage

Registered by Oliver Grawert on 2013-03-01

To build consistent phablet images which consist of two layers (android and ubuntu rootfs) it is essential that we can build both parts at the same time (featuresets and bugfixes can span across both layers). As of today cdimage will be easily able to roll the ubuntu rootfs while the android bits can not be triggered by cdimage yet. One proper solution would be to use the i386 livefs builder for cross building android img files that can be published alongside with the rootfs builds.

Blueprint information

Status:
Not started
Approver:
Steve Langasek
Priority:
Undefined
Drafter:
Oliver Grawert
Direction:
Needs approval
Assignee:
Oliver Grawert
Definition:
New
Series goal:
Accepted for raring
Implementation:
Unknown
Milestone target:
milestone icon ubuntu-13.04-month-5

Related branches

Sprints

Whiteboard

Notes from session:

Currently the Android image is generated by the internal PS jenkins instance, while the Ubuntu rootfs is generated at IBS (with an older live-build).

We want to move both parts at cdimage, so we could follow the same path as done for the other Ubuntu images.

Do we have enough CPU/Memory/Disk resource to cross build the Android images there?
 * Seems so, as it's already building a lot of livefs images

How many builds do we need initially? Seems 4 would be a start (nexus family), but it might need to support more depending on external need for official images/products.

Would have a new map of cross-livefs buildds on top of the current map of livefs buildds (cjwatson: not really necessary to have a layer of abstraction just for this; it's just another entry in the existing project/series/image-type/arch/subarch -> builder map)

Complying with requirement to provide source: could either base on tarballs with a checkout, or never ever remove commits and repos from phablet.u.c
In any case, should include a manifest summing up the commit ids of all the repos
android x86 source tarball downloads:
https://01.org/android-ia/downloads

Don't strictly need a tarball for now as with the git repos and all it would be ~ 10 GB or so, but we could consider it in the future

Could use a tarball to seed an initial cache which could then be updated with git; similar for build performance

Wouldn't need a phablet.u.c mirror, even internally

What's the target time budget for building?

Current builds are less than one hour in jenkins, which doesn't really need further optimization right now

Could consider caches to speed up initial cloning and such, but only if that's useful

Currently, all devices are built in a single pass, would prefer one pass per device unless that's too costly

Does it interfere/benefit with/from livefs builds in Launchpad?

This work is only intended for resource usage optimizations, which aren't really an issue

Probably don't need to handle community builds in the short-term (we can't for legal reasons, binary blobs); will focus on Nexus builds

Would need a BuildLiveCD parameter to pick the right branch name from the git repos; would be transporter by manifest URL though

How do we combine the cross-livefs build with the livefs build? would just push them in the same directory

Currently the output looks like http://cdimage.ubuntu.com/ubuntu-touch-preview/daily-preinstalled/current/

There would likely be 3 build ids: 1 for livefs builds, 1 for cross-livefs builds, one for combined directory

Currently using http://cdimage.ubuntu.com/ubuntu-touch-preview/daily-preinstalled/current/quantal-ubuntu_stamp

Would like to implement a /latest link just as for the livefs build logs, always pointing at the latest *good* build

Would need to poke a hole in the firewall and find a way to trigger the update of /latest from jenkins once it has run the smoke tests back to cdimage

------------------

Seeds have been created at:
https://code.launchpad.net/~ubuntu-core-dev/ubuntu-seeds/ubuntu-touch.raring

The corresponding meta package is ubuntu-touch-meta

(?)

Work Items

Work items:
[ogra] create an ubuntu-touch seed and corresponding metapackage: DONE
[ogra] Publish a legal disclaimer at cdimage as well: DONE
[rsalveti] Publish the git head hash for all git repositories used during build: DONE
[ogra] Talk to sergio about the existing scripts and how to integrate them into BuildLiveCD: DONE
[ogra] Implement building in BuildLiveCD of livecd-rootfs: DONE
[cjwatson] Work with IS to get firewall hole from jenkins to nusakan/ssh (RT#60215): DONE
[cjwatson] Integrate jenkins-triggered latest/current symlink management into cdimage: DONE

Work items for ubuntu-13.04-month-6:
[ogra] Implement the right magic into cdimage's buildlive to trigger BuildLiveCD the right way: INPROGRESS
[ogra] Make sure the amd64 livefs builder can see phablet.ubuntu.com (RT#60362): DONE
[ogra] make sure the new BuildLiveCD is in place on the respective livecd builders (RT #60446): DONE
[ogra] make sure that the hashes for all the branches being used are published as part of a log/manifest, for reproducibility/debuggability: TODO
[ogra] Make cdimage aware of the different image parts a phablet image consist: TODO
[sergiusens] Update PS Jenkins to poll cdimage and trigger /pending update on Touch images once smoke tests pass: TODO