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

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Qt5-feedback mailing list
Qt5-feedback@qt.nokia.com
http://lists.qt.nokia.com/mailman/listinfo/qt5-feedback

Reply via email to