splitting qt4 into pieces
Sune Vuorela
debian at pusling.com
Tue Feb 12 00:02:27 UTC 2008
Hi!
This is going to be a long email, so let us start with a executive summary:
split off libqtdbus and libqtscript from libqt4-core and rename libqt4-core
keep libqt4-gui
rework libqt4-sql entirely to make it plugin based
split -dev package.
And the real report:
several times, different requests for splitting qt4 into pieces have been
made.
I find many of them kind of reasonable - and especially when qt4 becomes more
and more popular.
A couple of example use cases:
John have found it quite easy to write a small network service using qt. He
would like to deploy it on some small device, so he would like to only have
around what he actually needs: libQtCore && libQtNetwork. With current
packaging, he also needs to install dbus, a xml parser and other similar
thintgs
Brian wants to have a set of cross platform command line utilities, so he
writes a set of utils using qt. He only uses QtCore, as he needs no network,
no Xml, no anything.
Joanne does small graphical apps, like a image viewer and text viewer. In
order to have her programs installed, only parts of qt that is needed is
QtCore and QtGui. no Xml, no openGL, no SVG, ...
But enough bullshit. let us look at some numbers:
libQtCore is used by all packages - and have a set of external dependencies.
libQtCore is 1.5M big
libQtXml has the same set of external dependencies as libQtCore and is 350K
big. No need to split this out unless we care for 350K
libQtNetwork has the same set of external dependencies as libQtCore and is 575
K big. No need to split this out unless we care for 575K (we might do that)
libQtScript has same set of external dependences and is 1 mb big. I think we
should care for 1mb. I don't yet know what uses this.
libQtDBus has same set of external dependencies as QtCore + QtXml + libdbus.
Libdbus + libQtDBus is around 1 mb of extra space and isn't used for quite
many things.
libQtTest has same set external dependencies as QtCore. is 56k big. no need to
talk about that.
This is libqt4-core package.
libQtGui is used by all gui libraries.
libQtSvg has the same external dependencies as QtGui. Internally it also pulls
in QtXml. libQtSvg is 275K big.
libQtOpenGL pulls quite some more dependencies in compared to QtGui (libGL,
libGLU, libXdamage, libXxf86vm,libdrm) - but I guess most people still have
those installed. QtOpenGL is 500k big
Is libQtDesigner, libQtDesignerComponents, libQtAssistantClient anything but
private libraries of designer and assistant ? and shouldn't they be around
them?
libQt3Support fits nicely in its own package
libQtSql:
pulls in all sorts of evilness. and I still don't think we support everything.
we build in the support for postgresql, mysql, sqlite and sqlite 2. All this
can be as modular packages so people don't have to pull in postgresql to get
mysqlsupport and the other way around.
This way, we could also support firebird and odbc
and for completeness:
QtWebkit is 10 mb big - and pulls in Gui, Network, XMl - and libsqlite.
And for the -dev stuff.
Several people would like to have the possibility to not pull in everything in
order to do development. especially the huge QtSql module has had some
complaints.
Some people would also like qmake in a special package.
A split like the following:
libqt4-dev: empty meta package depending on the following
libqt4-gui-dev: gui dev stuff
libqt4-core-dev: core dev stuff (could also contain the dev stuff for the
libraries gets splitted off)
libqt4-sql-dev: sql stuff.
I guess we should put qmake either in its own package - or among the core dev
stuff.
I would like to not have qmake in a seperate package, as it kind of encourages
people to use it for anything - while it is only a nice tool for qt
development.
Things to make sure to consider:
a package called libqt4-core cannot contain any less functionality than
libqt4-core does today. that means we have to rename the package if we split
stuff off. similar for all other packages.
there might be a abi breakage on mips in qt4.4, so we might need a package
name change here anyway.
Recomendations:
Take libqt4-core, split off libqtscript4 and libqtdbus4 to its own packages
and rename libqt4-core to libqtcore4
keep libqt4-gui as is
rework libqt4-sql to make it plugin based, which it supports and enable the
rest of the avilable database connectors
split libqt4-dev, but keep libqt4-dev as a meta package.
(move some translations and other data files to correct packagages -
translations for assistant is in -core for example)
/Sune
--
I cannot uninstall on a LCD connector on the mouse from Internet Explorer NT,
how does it work?
You should turn on a attachment for logging in a gadget.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://lists.alioth.debian.org/pipermail/pkg-kde-talk/attachments/20080212/a8f76269/attachment.pgp
More information about the pkg-kde-talk
mailing list