[Releasing] ICU support in QtCore and QtWebKit

lars.knoll at nokia.com lars.knoll at nokia.com
Wed Sep 12 14:22:01 CEST 2012


After sleeping over it, I'm with Thiago on this one. Let's bundle ICU with the Qt binary packages where required. We already do this on Windows, so adding Linux shouldn't be a huge issue.

Cheers,
Lars



On Sep 11, 2012, at 12:25 PM, ext Thiago Macieira <thiago.macieira at intel.com> wrote:

> tl;dr:
> 
> Let's include our own copy of ICU in the binary packages
> 
> Long story:
> 
> As far as I know, the major reason why we need distribution version-specific 
> packages for Qt 5, unlike in Qt 4, is the need for ICU support. As some of you 
> may know, the ICU developers attended the "OpenSSL School of Library Naming" 
> with "Advanced Boost Naming 101" and haven't learned yet to make library 
> releases.
> 
> I've prepared two sets of patches for QtCore that enable it to dynamically 
> load ICU, at run-time. Unlike D-Bus and OpenSSL dynamic loading, this has the 
> following properties:
> a) it's loaded at library load time, not at first use
> b) there's no graceful fallback when the libraries are absent
> 
> The reason for a) is that the load process itself requires ICU, due to 
> recursion via QString::fromLocal8Bit / toLocal8Bit. Therefore, I had to run it 
> at a time when we're absolutely sure that no other threads could call those 
> functions.
> 
> The reason for b) is that we don't compile code for the fallback case. I'm not 
> expert enough in this area to make that fallback easily. Besides, since this 
> option is to be used *only* for the SDK, it's quite likely it would bit-rot 
> between releases and just cause us headaches because they don't get tested on 
> a day-to-day basis.
> 
> Add another issue: WebKit. It uses ICU extensively and its buildsystem would 
> need to be modified to use the loader in QtCore. Or, to copy the loader into it 
> like the one we'd have in QtCore. Some of the changes might not be acceptable 
> for WebKit mainstream, requiring our team to keep branches.
> 
> None of those options are particularly palatable.
> 
> Therefore I suggest an alternative: let's just bundle the ICU libraries in our 
> SDKs. 
> 
> There are two choices:
> I) build ICU during the binary build process, alongside the rest of Qt
> II) pre-build ICU and keep a binary copy ready to be deployed into the build 
> process
> 
> Is there anyone volunteering for that task? ICU seems to have the options for 
> inserting a suffix to the functions and library names, which we'll need on Linux 
> and on Mac. I don't think we need it on Windows.
> 
> -- 
> Thiago Macieira - thiago.macieira (AT) intel.com
>  Software Architect - Intel Open Source Technology Center
>     Intel Sweden AB - Registration Number: 556189-6027
>     Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden
> _______________________________________________
> Releasing mailing list
> Releasing at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/releasing




More information about the Releasing mailing list