A better publishing mechanism for Wubi

Registered by Evan

Right now, Wubi is built locally, then uploaded by Evan to http://people.canonical.com/~evand/wubi . This has meant that, on occasion, changes to grub that affect Wubi users, as well as milestone CD builds block on Evan.

We should fix this bottleneck by making publishing of new Wubi binaries an automated process. This should, if possible, also sign the Wubi binary.

Blueprint information

Status:
Not started
Approver:
Steve Langasek
Priority:
High
Drafter:
Evan
Direction:
Approved
Assignee:
None
Definition:
Approved
Series goal:
Accepted for raring
Implementation:
Not started
Milestone target:
milestone icon ubuntu-13.04-feature-freeze

Related branches

Sprints

Whiteboard

Wubi embeds following code:
* python2.3
* ctypes
* google mock python module
* subprocess
* pycrypto
* 7zip
* resize2fs
* pure python modules
* pylauncher
* grub2 bootloader ()

We could:
* use newer python (ctypes, subprocess included) (not cross-compile, use pre-build)
* use matchin pycrypto (not cross-compile, use pre-build)
* use mock from the archive
* cross-compile 7zip
* cross-compile resize2fs (and dependencies)
* pylauncher is good and small, let's keep it (py2exe doesn't work under wine, out of the picture. pyinstaller is the "new" kid in town which is considering to remove wine support...)
* make it produce the wubi build headless

Cross-compiling python would be asking for a full mingw-w64 cross-compiled partial-arch.
This will not make it fully build from source due to embedding windows python & pycrypto builds.

For an automatic build in a PPA, i'd propose the following:
* upgrade to python2.4 (first one that has automatic MSI package)
* include all dependencies as *.msi packages or pre-builds
* in a recipe build: install all *.msi packages and build wubi.exe and shove it into a deb package =)
* WIN!

(?)

Work Items

Work items:
[xnox] create automated WUBI recipe builds in a PPA and/or archive: TODO
[ev] liaise with release/archive team on bisecting .debs from the PPA or archive for release: TODO

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.