On naming qml modules packages
Lisandro Damián Nicanor Pérez Meyer
perezmeyer at gmail.com
Sun Mar 30 03:48:39 UTC 2014
Some days ago a discussion came up on IRC on how to properly name packages
containing QML modules. We are currently shipping them with somewhat misguided
names like qtdeclarative5-controls-plugin.
This has, at least, two problems:
- They are not called plugins by upstream, but modules
- The .so are the plugins for the modules themselves.
After some back and forth, the following scheme (let's name it scheme A) has
been proposed:
qtdeclarative5-[module]-[version]
Where:
module: name of the module used in the path $QT_INSTALL_QML/foo/var/qmldir
(more on this later)
version: supposedly hardcoded in the path
But after checking the docs [0][1][2] things with names and versions are not
that straightforward.
- There are legacy (deprecated) [2] modules which do not contain versioning at
all. Quoting from the docs:
Legacy modules are modules whose specification qmldir file does not contain
a module identifier directive.
- The rest of the modules are identified. They must be locally installed in
$QT_INSTALL_QML [4] and they must be versioned. But...
* They can be nested. QtQuick.Controls is installed in
$QT_INSTALL_QML/QtQuick/Controls
* Versioning can be defined either in the path or in the qmldir file itself.
And multiple versions can exist in the same qmlfile (although not
preferred by the doc).
You could even combine them! Have Foo/ with Foo1.0 to 1.45 and then Foo.2/
having Foo 2.0 to 2.3
Finally, to make things even more muddy, the qtquick1 *source* submodule
provides the *Qt* module "declarative" (not to be confused with a *QML*
module!!!), while the *source* submodule declarative provides *quick* and
*qml*.
To understand things better, take a quick look at the table in [5].
I'm so proposing to change the original naming scheme to:
qml-module-{$module-name}[version]
Where $module-name will be the lower-cased path replacing slashes with '-'.
Examples:
$QT_INSTALL_QML/foo/var/ would be packaged as qml-module-foo-var
$QT_INSTALL_QML/foo/var.2/ would be packaged as qml-module-foo-var2
$QT_INSTALL_QML/foo.2/var/ would be packaged as qml-module-foo2-var
$QT_INSTALL_QML/foo2/var.2/ would be packaged as qml-module-foo2-var2
What do you think of this? I plan to start packaging stuff (with the
transitional packages required) either for 5.2.1 as soon as the transition
finishes (we are almomst there) or for 5.3.0.
Final notes: yes, I know that this name changing story will definitely need
quite some transitional packages, but I think the effort is worth to get this
done as properly as possible for Jessie.
[0] <http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-topic.html>
[1] <http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-identifiedmodules.html>
[2] <http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-legacymodules.html>
[3] <http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-qmldir.html>
[4] qmake -qt5 -query outputs QT_INSTALL_QML:/usr/lib/x86_64-linux-gnu/qt5/qml
[5] <http://qt-project.org/doc/qt-5.0/qtdoc/modules.html>
Kinds regards, Lisandro.
--
Sea estricto cuando envíe y tolerante cuando reciba. En otras palabras, solo
envíe paquetes que cumplan rigurosamente con lo estándares, pero espere
paquetes que tal vez no cumplan del todo y trate de lidiar con ellos.
Andrew S. Tanenbaum, de su libro "Computer Networks"
Lisandro Damián Nicanor Pérez Meyer
http://perezmeyer.com.ar/
http://perezmeyer.blogspot.com/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.alioth.debian.org/pipermail/pkg-kde-talk/attachments/20140330/1aff72da/attachment.sig>
More information about the pkg-kde-talk
mailing list