← Back to team overview

ubuntu-phone team mailing list archive

SDK Tools - creating fat packages

 

Hi all,

here is the detailed feature description of the fat packages support in the SDK Tools

User story:
As an application developer I want to create .click package what can be installed on armhf phone, amd64 desktop or i386 emulator and the same application will just work the same way on all platforms.


Technical  requirement:
- Developer environment has all (amd64, i386 and armhf) click chroots [1] available.
 - Build process is initiated for each target architecture one by one
 - Build artefacts are collected to a single location
 - Combined build directory is packaged up to .click with a single command


Developer experience:
The developer opens the application project and does the magic. The application can be tested the known way: a target Kit is selected and clicking the Run button deploys the application either on the desktop, emulator or phone. On this path an arch specific .click package is created and deployed on the target what is assigned to the Kit. When the application is ready to be published the developer should go to the Publish page and hit the "Create multiarch package" [3]. This will open a dialogue with a multi-selection list of the available Kits. The developer selects the targets and hits the "Create" button. This will trigger the build and packaging chain. The click build will be fired up for each target one by one with a common installation path. The non compiled build artifacts (qlm files, media content, etc) are expected to be identical for each architecture and the compiled binaries are installed to an arch specific path. So the merge is expected to be trivial [4] The click packaging of the merged build/install directory is identical to the arch specific builds.

Schedule:
To implement this feature we will need 2-3 weeks with testing and whatsoever. Our plate is far from empty but I expect this feature to land before 15.04 is released.

Questions, ideas?

cheers,

Zoltan


[1] Right now there is no way to guarantee that the chroots are in sync. The chroots made for stable frameworks like 14.04 and 14.10 are expected to be on the same page, but chroots made for the development release can diverge as it is up to the developer to keep the chroots up to date. [2] The QtCreator's internal Build/Run frontend can not be used for doing multiarch builds. The reason is simple that QtCreator can build against single Kits and Kits have only one sysroot. [3] The text is for sure subject of change. That button might be the actuall "Create package" button. [4] We can not stop the developers to break this trivial merge. It is technically possible to mess around with the qmake/cmake project files in a way that the merge might not be trivial. But from developers who are smart enough to mess around with the cmake/qmake files we can expect to fix the problems they cause to themselves.


Follow ups