cannot create click packages for QML Extension Library + Tabbed Touch UI
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
qtcreator (Ubuntu) |
Fix Released
|
High
|
Zoltan Balogh | ||
Saucy |
Fix Released
|
High
|
Zoltan Balogh |
Bug Description
After setting up a QML Extension Library + Tabbed Touch UI project following bug #1215913, if I click the Packaging button on the far left, I am told "Click packaging is only available for QML projects".
Certainly this is due to the fact that the appstore and click don't have the concept of fat packages yet. Attached is a rather dumb script to create click packages. Here are the steps:
1. create a QML Extension Library + Tabbed Touch UI project following bug #1215913 (being careful not to use dashes or underscores in the name (see bug #1215133 and bug #1215918). Eg "myapp".
2. create manifest.json in the toplvel source, with something like the following (adjusting description, maintainer, name and title):
{
"description": "description of myapp",
"framework": "ubuntu-sdk-13.10",
"hooks": {
"myapp": {
}
},
"maintainer": "Your Name <email address hidden>",
"name": "com.ubuntu.
"title": "myapp",
"version": "0.1"
}
3. create the security manifest, myapp.json, with the following (adjusting policy_groups as necessary):
{
"policy_groups": [
"networking"
],
"policy_version": 1.0
}
4. put the attached 'make-click' in your toplevel source directory, and run it:
Reading /tmp/tmp.
Reading /tmp/tmp.
...
make[2]: Leaving directory `/tmp/tmp.
make[1]: Leaving directory `/tmp/tmp.
Adjust the manifest to include: "architecture": "amd64",
Adjust the desktop file
Clean out install dir
Running: click build /tmp/tmp.JPZZJf7oCx
Successfully built package in './com.
Install with: sudo click install --force-
Now, make-click is dumb. Really dumb. It doesn't know about .pro files, etc. There is a cc_args that can be adjusted for your project. Eg, if you need dbus compiled in, use:
cc_args=
To have proper integration, qtcreator should:
1. build the package in %buildDir%
2. clean out %buildDir% in some reasonable manner
3. generate the initial app/*.desktop file in the toplevel source, being careful of bug #1204595, and using "qmlscene -I backend/modules app/myapp.qml"
4. generate the click package in the %buildDir% (eg, 'cd %buildDir% && click build .')
Step '4' for now should detect the architecture and add this to the manifest:
"architecture": "<qtcreator detected arch>",
When fat packages (or whatever implementation is chosen) are in use, step '4' should be adjusted for that.
Changed in qtcreator (Ubuntu Saucy): | |
status: | New → Confirmed |
importance: | Undecided → Wishlist |
Changed in qtcreator (Ubuntu Saucy): | |
assignee: | nobody → Zoltan Balogh (bzoltan) |
importance: | Wishlist → High |
The very core of the issue is that we have little understanding on how the cross build of the C++/Qt projects should be handled in the Click world. If a developer wants to upload a phablet application with a QML extension to the application store then this extension should be built for armhf target on a x86 environment. The on device build will be out of the options and the RO image will not make it possible. All other chroot based builders are made for .dsc debian style building. The whole feature set of the C++ development scenarios should be first cover before we can start working on the Click packaging of the QML extensions.