Discussion:
Getting rid of build keys
Thiago Macieira
2011-08-23 09:34:48 UTC
Permalink
The subject says it all: I'd like to get rid of the build keys.

Qt is the only toolkit I know that even has such a concept.

I don't know the exact details of why they were introduced in the first place,
but my guess is that it was due to the gcc 3.x ABI changes. The ABI has been
stable now since GCC 3.4, which was first released in 2004. If that was the
reason, then we don't need protection from the ABI anymore.

One of the goals I remember discussing with Lars before the Qt 5 announcement
was to have only the standard configuration be supported by the community and
required in the testing. Changing Qt options would mean you're on your own, or
you need to buy support from someone who will support you.

The STL case from my last thread I am proposing be an exception, and that can
only be achieved if the binary compatibility is kept.

Implications:

- no need to scan potential plugins for build keys, meaning plugin loading
can be faster

- no need to cache the scanned build key, so smaller configuration file,
meaning faster load times; and no stale build keys saved, for plugins long
gone (I invite you to take a look at your ~/.config/Trolltech.conf)

- one less thing to be stored in Trolltech.conf, so it's easier to achieve
the Mac App Store requirements

- no architecture mismatch between different names for the same architecture
(e.g. i386 and i686)

- no ABI mismatch between compilers that do support the same ABI, like GCC,
RVCT, Intel CC, clang

- important: no architecture mismatch in multi-arch systems (currently,
building linux-g++-32 on a 64-bit system encodes the "x86_64" architecture)

There are certain systems with two or more mainstream compilers that are ABI-
incompatible: Windows, Solaris and, to a certain degree, HP-UXi.

On Windows, I frankly do not believe this to be a problem, since Qt is never a
system library, installed for all applications. And since different MSVC
versions are incompatible among themselves, the burden is *already* on the
Windows developer to never try and load a plugin he doesn't know about. The
implication for Qt here is that it must never behave as a system library, such
as writing to a registry entry that another installation by a different
compiler might read.

In light of that and the Mac App Store guidelines, I'd propose that on Mac and
Windows Qt never have global configuration. The configuration belongs to the
applications.

On Solaris, there are only two mainstream ABIs and it's conceivable that
someone would want to install Qt globally. However, as I said in the STL
thread, Sun CC with its default STL implementation is now blacklisted: you
need to change STL implementations anyway (stlport or Apache's stdcxx). I
actually await suggestions on how to address this problem.

Finally, on HP-UXi, despite the "i" meaning Itanium, home of the Itanium C++
ABI and both mainstream compilers adhering to the same ABI, experience has
shown that HP's aCC compiler is not entirely compatible with GCC. And GCC on
HP-UXi has never been tested by the Qt team, it was contributed by a user. But
HP-UXi would probably have the same solution as Solaris.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
C***@csiro.au
2011-08-23 09:44:09 UTC
Permalink
I'd be happy to see the build keys disappear too. They currently treat LSB-compiled plugins on linux as distinct from GCC-compiled plugins, even though the LSB compilers are usually just a wrapper around GCC anyway. See QTBUG-17825 for details (even though there's a fairly easy workaround proposed there).

One possible reason for the build key is to help distinguish between debug and release builds on Windows. Not sure that's really all that good a reason to keep it though.
Post by Thiago Macieira
The subject says it all: I'd like to get rid of the build keys.
Qt is the only toolkit I know that even has such a concept.
I don't know the exact details of why they were introduced in the first place,
but my guess is that it was due to the gcc 3.x ABI changes. The ABI has been
stable now since GCC 3.4, which was first released in 2004. If that was the
reason, then we don't need protection from the ABI anymore.
One of the goals I remember discussing with Lars before the Qt 5 announcement
was to have only the standard configuration be supported by the community and
required in the testing. Changing Qt options would mean you're on your own, or
you need to buy support from someone who will support you.
The STL case from my last thread I am proposing be an exception, and that can
only be achieved if the binary compatibility is kept.
- no need to scan potential plugins for build keys, meaning plugin loading
can be faster
- no need to cache the scanned build key, so smaller configuration file,
meaning faster load times; and no stale build keys saved, for plugins long
gone (I invite you to take a look at your ~/.config/Trolltech.conf)
- one less thing to be stored in Trolltech.conf, so it's easier to achieve
the Mac App Store requirements
- no architecture mismatch between different names for the same architecture
(e.g. i386 and i686)
- no ABI mismatch between compilers that do support the same ABI, like GCC,
RVCT, Intel CC, clang
- important: no architecture mismatch in multi-arch systems (currently,
building linux-g++-32 on a 64-bit system encodes the "x86_64" architecture)
There are certain systems with two or more mainstream compilers that are ABI-
incompatible: Windows, Solaris and, to a certain degree, HP-UXi.
On Windows, I frankly do not believe this to be a problem, since Qt is never a
system library, installed for all applications. And since different MSVC
versions are incompatible among themselves, the burden is *already* on the
Windows developer to never try and load a plugin he doesn't know about. The
implication for Qt here is that it must never behave as a system library, such
as writing to a registry entry that another installation by a different
compiler might read.
In light of that and the Mac App Store guidelines, I'd propose that on Mac and
Windows Qt never have global configuration. The configuration belongs to the
applications.
On Solaris, there are only two mainstream ABIs and it's conceivable that
someone would want to install Qt globally. However, as I said in the STL
thread, Sun CC with its default STL implementation is now blacklisted: you
need to change STL implementations anyway (stlport or Apache's stdcxx). I
actually await suggestions on how to address this problem.
Finally, on HP-UXi, despite the "i" meaning Itanium, home of the Itanium C++
ABI and both mainstream compilers adhering to the same ABI, experience has
shown that HP's aCC compiler is not entirely compatible with GCC. And GCC on
HP-UXi has never been tested by the Qt team, it was contributed by a user. But
HP-UXi would probably have the same solution as Solaris.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
<signature.asc>_______________________________________________
Qt5-feedback mailing list
http://lists.qt.nokia.com/mailman/listinfo/qt5-feedback
--
Dr Craig Scott
Computational Software Engineering Team Leader, CSIRO (CMIS)
Melbourne, Australia
Thiago Macieira
2011-08-23 11:54:19 UTC
Permalink
Post by C***@csiro.au
I'd be happy to see the build keys disappear too. They currently treat
LSB-compiled plugins on linux as distinct from GCC-compiled plugins, even
though the LSB compilers are usually just a wrapper around GCC anyway. See
QTBUG-17825 for details (even though there's a fairly easy workaround
proposed there).
One possible reason for the build key is to help distinguish between debug
and release builds on Windows. Not sure that's really all that good a
reason to keep it though.
Right! That reminds me of another implication I had thought of but forgot to
write:

we need a new, better and much more efficient way of finding out what is a plugin
and what isn't, instead of loading everything found in the plugin directory
and hoping for the best.

For example:
$ pmap `pidof kontact` | awk '/imageformats/ { print $4 }' | sort | uniq
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_dds.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_eps.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_exr.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_jp2.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_pcx.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_pic.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_psd.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_ras.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_rgb.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_xcf.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_xview.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqgif.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqico.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqjpeg.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqmng.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqsvg.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqtga.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqtiff.so

Do we really need the 18 plugins loaded? Also:

/home/thiago/obj/troll/qt-4.7/plugins/bearer/libqconnmanbearer.so
/home/thiago/obj/troll/qt-4.7/plugins/bearer/libqgenericbearer.so
/home/thiago/obj/troll/qt-4.7/plugins/bearer/libqnmbearer.so
/home/thiago/obj/troll/qt-4.7/plugins/codecs/libqcncodecs.so
/home/thiago/obj/troll/qt-4.7/plugins/codecs/libqjpcodecs.so
/home/thiago/obj/troll/qt-4.7/plugins/codecs/libqkrcodecs.so
/home/thiago/obj/troll/qt-4.7/plugins/codecs/libqtwcodecs.so

I doubt that any conversion from the CJK codecs was necessary in the execution
of Kontact so far. And I definitely do not need all three bearer plugins
loaded.

Qt Creator has a "pluginspec" XML file accompanying the plugins that describes
what the plugin is and does. KDE does the same with .desktop files and its own
binary cache of them (system configurarion cache, a.k.a. sycoca).
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
Stephen Kelly
2011-08-23 12:13:22 UTC
Permalink
Post by Thiago Macieira
Post by C***@csiro.au
I'd be happy to see the build keys disappear too. They currently treat
LSB-compiled plugins on linux as distinct from GCC-compiled plugins, even
though the LSB compilers are usually just a wrapper around GCC anyway.
See QTBUG-17825 for details (even though there's a fairly easy workaround
proposed there).
One possible reason for the build key is to help distinguish between
debug and release builds on Windows. Not sure that's really all that good
a reason to keep it though.
Right! That reminds me of another implication I had thought of but forgot
we need a new, better and much more efficient way of finding out what is a
plugin and what isn't, instead of loading everything found in the plugin
directory and hoping for the best.
$ pmap `pidof kontact` | awk '/imageformats/ { print $4 }' | sort | uniq
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_dds.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_eps.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_exr.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_jp2.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_pcx.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_pic.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_psd.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_ras.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_rgb.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_xcf.so
/home/thiago/KDE4.7/lib/kde4/plugins/imageformats/kimg_xview.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqgif.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqico.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqjpeg.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqmng.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqsvg.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqtga.so
/home/thiago/obj/troll/qt-4.7/plugins/imageformats/libqtiff.so
/home/thiago/obj/troll/qt-4.7/plugins/bearer/libqconnmanbearer.so
/home/thiago/obj/troll/qt-4.7/plugins/bearer/libqgenericbearer.so
/home/thiago/obj/troll/qt-4.7/plugins/bearer/libqnmbearer.so
/home/thiago/obj/troll/qt-4.7/plugins/codecs/libqcncodecs.so
/home/thiago/obj/troll/qt-4.7/plugins/codecs/libqjpcodecs.so
/home/thiago/obj/troll/qt-4.7/plugins/codecs/libqkrcodecs.so
/home/thiago/obj/troll/qt-4.7/plugins/codecs/libqtwcodecs.so
I doubt that any conversion from the CJK codecs was necessary in the
execution of Kontact so far. And I definitely do not need all three bearer
plugins loaded.
Qt Creator has a "pluginspec" XML file accompanying the plugins that
describes what the plugin is and does. KDE does the same with .desktop
files and its own binary cache of them (system configurarion cache, a.k.a.
sycoca).
I was discussing this with Kevin Ottens and sebsauer recently. If there's
going to be a solution for this in Qt, please try to make it something that
can be simply cached by ksycoca and reduce the absolute need for a separate
KDE plugin system.

Thanks,

Steve.
Thiago Macieira
2011-08-23 12:45:52 UTC
Permalink
Post by Stephen Kelly
I was discussing this with Kevin Ottens and sebsauer recently. If there's
going to be a solution for this in Qt, please try to make it something that
can be simply cached by ksycoca and reduce the absolute need for a separate
KDE plugin system.
This will require some more thinking. Please take a look at the next email I'm
about to send.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
Philip Ashmore
2011-08-23 13:07:46 UTC
Permalink
Post by Thiago Macieira
Post by Stephen Kelly
I was discussing this with Kevin Ottens and sebsauer recently. If there's
going to be a solution for this in Qt, please try to make it something that
can be simply cached by ksycoca and reduce the absolute need for a separate
KDE plugin system.
This will require some more thinking. Please take a look at the next email I'm
about to send.
_______________________________________________
Qt5-feedback mailing list
http://lists.qt.nokia.com/mailman/listinfo/qt5-feedback
I would suggest (re)using something that was designed for this very purpose - a component

object model.



I wrote a bare-bones implementation called v3c-dcom (in SourceForge) that includes tests

that show that you can create instances of co-classes (implementors) that each implement

the same interface.



For example image file format support, you instantiate a mapping object that looks

up the registry and loads the implementor for that format if it's not already loaded.



I used the names that $soft uses in the API but the thing is so simple I'd be happy to

use some other naming scheme to avoid any legal snafu's - it's just a plugin system with a

registry file after all.



Philip Ashmore
Thiago Macieira
2011-08-23 13:16:34 UTC
Permalink
Post by Philip Ashmore
For example image file format support, you instantiate a mapping object that
looks up the registry and loads the implementor for that format if it's not
already loaded.
What registry are you talking about?

This is exactly the point that Stephen was trying to make: we need a way to
detect which plugins exist and what they do, plus this should be cached
somehow.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
Philip Ashmore
2011-08-23 13:33:21 UTC
Permalink
Post by Thiago Macieira
Post by Philip Ashmore
For example image file format support, you instantiate a mapping object that
looks up the registry and loads the implementor for that format if it's not
already loaded.
What registry are you talking about?
This is exactly the point that Stephen was trying to make: we need a way to
detect which plugins exist and what they do, plus this should be cached
somehow.
V3c-dcom's implementation uses the concept of sandboxes, a kind of registry.

A sandbox is a file, a kind of network database, implemented by meta-treedb.

Meta-treedb(SourceForge) uses treedb(SourceForge) which uses v3c (SourceForge).

You can have system sandboxes where the file is at a well known location - think LSB.
Then there's the users sandbox that can describe other plugins the user installed locally.

There can also be an environment sandbox that's specified by an environment variable,
allowing programs to run in any arbitrary sandboxed environment.

Take a look at the v3c-dcom examples: v3c/tests/calc_test.cpp even creates its own sandbox,
inserts a plugin (in-process server) and loads it from there.

Philip
C***@csiro.au
2011-08-23 23:36:33 UTC
Permalink
Post by Thiago Macieira
Post by Philip Ashmore
For example image file format support, you instantiate a mapping object that
looks up the registry and loads the implementor for that format if it's not
already loaded.
What registry are you talking about?
This is exactly the point that Stephen was trying to make: we need a way to
detect which plugins exist and what they do, plus this should be cached
somehow.
The system chosen also needs to support adding plugins at runtime. For example, a package might get installed and it knows about the plugins that come with it, so it provides registry info for these (whatever that registry functionality ends up looking like). However, the package happens to be a large framework that supports users providing their own plugins *for the framework* and where those plugins are more specialised than Qt's plugins. The framework plugins might have their own Qt plugins as well and it is these Qt plugins that need to be findable at run-time even if they are not in the framework's own Qt plugin registry. Currently, the QT_PLUGIN_PATH environment variable provides the necessary support for this, but if there's a different mechanism introduced in Qt5, it should provide
something similar. Maybe just an environment variable that contains a list of additional registry files to read?


--
Dr Craig Scott
Computational Software Engineering Team Leader, CSIRO (CMIS)
Melbourne, Australia
l***@nokia.com
2011-08-23 10:07:25 UTC
Permalink
Hi Thiago,

Full ack. I'm all for removing them. Are you willing to create the change?

Lars
Post by Thiago Macieira
The subject says it all: I'd like to get rid of the build keys.
Qt is the only toolkit I know that even has such a concept.
I don't know the exact details of why they were introduced in the first place,
but my guess is that it was due to the gcc 3.x ABI changes. The ABI has been
stable now since GCC 3.4, which was first released in 2004. If that was the
reason, then we don't need protection from the ABI anymore.
One of the goals I remember discussing with Lars before the Qt 5 announcement
was to have only the standard configuration be supported by the community and
required in the testing. Changing Qt options would mean you're on your own, or
you need to buy support from someone who will support you.
The STL case from my last thread I am proposing be an exception, and that can
only be achieved if the binary compatibility is kept.
- no need to scan potential plugins for build keys, meaning plugin loading
can be faster
- no need to cache the scanned build key, so smaller configuration file,
meaning faster load times; and no stale build keys saved, for plugins long
gone (I invite you to take a look at your ~/.config/Trolltech.conf)
- one less thing to be stored in Trolltech.conf, so it's easier to achieve
the Mac App Store requirements
- no architecture mismatch between different names for the same architecture
(e.g. i386 and i686)
- no ABI mismatch between compilers that do support the same ABI, like GCC,
RVCT, Intel CC, clang
- important: no architecture mismatch in multi-arch systems (currently,
building linux-g++-32 on a 64-bit system encodes the "x86_64"
architecture)
There are certain systems with two or more mainstream compilers that are ABI-
incompatible: Windows, Solaris and, to a certain degree, HP-UXi.
On Windows, I frankly do not believe this to be a problem, since Qt is never a
system library, installed for all applications. And since different MSVC
versions are incompatible among themselves, the burden is *already* on the
Windows developer to never try and load a plugin he doesn't know about. The
implication for Qt here is that it must never behave as a system library, such
as writing to a registry entry that another installation by a different
compiler might read.
In light of that and the Mac App Store guidelines, I'd propose that on Mac and
Windows Qt never have global configuration. The configuration belongs to the
applications.
On Solaris, there are only two mainstream ABIs and it's conceivable that
someone would want to install Qt globally. However, as I said in the STL
thread, Sun CC with its default STL implementation is now blacklisted: you
need to change STL implementations anyway (stlport or Apache's stdcxx). I
actually await suggestions on how to address this problem.
Finally, on HP-UXi, despite the "i" meaning Itanium, home of the Itanium C++
ABI and both mainstream compilers adhering to the same ABI, experience has
shown that HP's aCC compiler is not entirely compatible with GCC. And GCC on
HP-UXi has never been tested by the Qt team, it was contributed by a user. But
HP-UXi would probably have the same solution as Solaris.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
Thiago Macieira
2011-08-23 11:55:23 UTC
Permalink
Post by l***@nokia.com
Hi Thiago,
Full ack. I'm all for removing them. Are you willing to create the change?
I suppose removing code isn't that hard... I'll do it after the QUrl changes.

The build keys we could remove at any time, even after 5.0.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
l***@nokia.com
2011-08-23 12:04:19 UTC
Permalink
Post by Thiago Macieira
Post by l***@nokia.com
Hi Thiago,
Full ack. I'm all for removing them. Are you willing to create the change?
I suppose removing code isn't that hard... I'll do it after the QUrl changes.
The build keys we could remove at any time, even after 5.0.
Yes, but I'm happy if this is gone for 5.0.
Post by Thiago Macieira
Right! That reminds me of another implication I had thought of but
forgot to
we need a new, better and much more efficient way of finding out what is
a plugin
and what isn't, instead of loading everything found in the plugin
directory
and hoping for the best.
Yes. Didn't we have some code to inspect elf headers? Could we maybe add
some data into a special elf section containing the info about the plugin?
That would at least solve it on elf systems.


Lars
C***@csiro.au
2011-08-23 23:25:03 UTC
Permalink
Post by l***@nokia.com
Post by Thiago Macieira
Right! That reminds me of another implication I had thought of but
forgot to
we need a new, better and much more efficient way of finding out what is
a plugin
and what isn't, instead of loading everything found in the plugin
directory
and hoping for the best.
Yes. Didn't we have some code to inspect elf headers? Could we maybe add
some data into a special elf section containing the info about the plugin?
That would at least solve it on elf systems.
If you went down that path, you'd have to consider whether it was easy to do this with the various build systems people use, not just qmake or whatever Qt is going to be using. I suspect this would not be a popular path to take for this reason.

--
Dr Craig Scott
Computational Software Engineering Team Leader, CSIRO (CMIS)
Melbourne, Australia
Thiago Macieira
2011-08-23 23:56:47 UTC
Permalink
Post by l***@nokia.com
Yes. Didn't we have some code to inspect elf headers? Could we maybe add
some data into a special elf section containing the info about the plugin?
That would at least solve it on elf systems.
Yes, we have that code. I think 4.8 has it.

But that defeats the purpose of not needing to inspect the files before
attempting to load them. Between having the data next to the plugin as opposed
to inside the plugin, I'd rather have it next to them.

In any case: for loading of modules (QLibrary), there's nothing to be
inspected.

It's only for the plugin mechanism that we need something better.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
b***@nokia.com
2011-08-31 13:04:42 UTC
Permalink
Post by Thiago Macieira
Post by l***@nokia.com
Hi Thiago,
Full ack. I'm all for removing them. Are you willing to create the change?
I suppose removing code isn't that hard... I'll do it after the QUrl changes.
The build keys we could remove at any time, even after 5.0.
I've started looking at removing the build-key and QSettings from plugin loading. I'm doing it in two steps, first step is to remove the build-key:

http://pastebin.com/7bJmsTiT

Next step will be to remove QSettings from QLibrary and QFactoryLoader. There is no replacement at the moment (i.e. no pluginspec or .desktop file), but this can always be done later.

--
Bradley T. Hughes
***@nokia.com
b***@nokia.com
2011-08-31 13:21:46 UTC
Permalink
Post by b***@nokia.com
http://pastebin.com/7bJmsTiT
Next step will be to remove QSettings from QLibrary and QFactoryLoader. There is no replacement at the moment (i.e. no pluginspec or .desktop file), but this can always be done later.
See http://pastebin.com/n9wkKXWn

--
Bradley T. Hughes
***@nokia.com

Loading...