Necessitas alpha4 delays

sierdzio sierdzio at gmail.com
Wed Aug 22 09:34:10 UTC 2012


I'd vote for 3 (using shared lib).

This is still an ALPHA, ABI breakages are to be expected, and if someone 
complains - he is missing the point. Better to have a good solution that 
works than a hacky workaround, IMO.

On Wednesday, 22 August 2012 07:32:10 UTC+2, BogDan wrote:
>
> Hello everyone, 
>
> We've faced some big problems which prevent us to release alpha4 SDK, 
> so, I think we own you some explanations why we delay it that much. 
>
>   First problem we've encountered it was the changes done in QtCreator 
> (by Nokia guys), which delayed the release with more than 2-3 weeks, 
> then we had to wait for ssl certificates for Ministro to arrive, then 
> we've discovered that the official Android NDK had to be rebuilt for 
> all platforms, then, again, we've found problems in QtCreator, then 
> the SDK installer keep me busy for a couple of days, then we've face 
> even more problems with Ministro [1] and now we've found the biggest 
> one, which might break some apps. 
> The problem is the C++ support on Android. The default libstdc++ 
> library is useless, it contains only "new", "delete", "type_info" 
> implementations, so we had to use something else which also comes with 
> stl support, so I choose to use the static gnu libstdc++. 
> Shortly after we release alpha3 I found that is not very wise to use 
> static libstdc++ on more than one library, 
> android-ndk/docs/STANDALONE-TOOLCHAIN.html says that: 
>
> [quote] 
> The standalone toolchain also comes with a copy of the GNU libstdc++ 
> library, which provides an implementation of the C++ Standard Template 
> Library. To use it, you however need to link with the proper library: 
>
>   * Use -lstdc++ to link against the _static_ library version. This 
> ensures 
>     that all required C++ STL code is included into your final binary. 
> This 
>     is ideal if you are only generating a single shared library or 
> executable. 
>
>     This is the recommended way to do it. 
>
>   * Use -lgnustl_shared to link against the _shared_ library version. This 
>     is required if you have several related shared libraries or 
> executables 
>     that need to run in the same address space at runtime (some global 
> variables 
>     need to be defined uniquely, which is not possible if you link the 
> static 
>     libstdc++ against each one of your executables). 
> [/quote] 
>
> Now the question is, how to fix this problem without breaking the ABI? 
> The answer it seemed to be easy, theoretically just adding the whole 
> libstdc++ to QtCore should do the job [2], I loved myself for that 
> idea, but ... not for a long time, because hey, in real life nothing 
> is that simple, after we shipped the second testing SDK, Marco post an 
> alarming message [3] on necessitas-devel mailing list. The problem 
> seems to be easy to fix, because I removed the STL library from the 
> mkspecs file, the STL test didn't  compile anymore and that it seemed 
> it  was the reason for the problems, but again, "la vie en rose" 
> doesn't apply to me, because soon I discover that the --whole-archive 
> [2] flag is not working as it should, basically it doesn't export all 
> the symbols from libstdc++ and you can not use only QtCore to link 
> your STL apps. We (mostly Ray)  tried a lot of different paths but all 
> of them ended badly, then Ray reported this issue to Google 
> http://code.google.com/p/android/issues/detail?id=36472,  we really 
> hopped that we did something stupid but ... it seems we didn't. 
>
> Now we must decide what we do next, we see the following solutions: 
> 1 - Release the SDK in a few days, but we must keep it as it is, try 
> to embed the whole libstdc++ library into QtCore, even it is not 
> exported all of it,but it seems it fixes the "static libstdc++" 
> problem described above, but we are not 100% sure. 
> 2 - Delay the release, and fix the bloody linker, make it export 
> everything it should from libstdc++. The "static libstdc++" problem 
> will be 100% fixed (at least theoretically). 
> 3 - Delay the release, switch to shared libstdc++ library, but this 
> move it will break the ABI, because all existing apps will search for 
> stl and c++ symbols into QtCore not in the shared libstdc++. Of course 
> we can not afford to break all existing apps, so we Ministro will need 
> more love to handle multiple ABI versions. 
> 4. Is a combination between first and the seconds solution: we ship 
> the SDK now (1), but we (actually Ray is doing this tremendous job, 
> I'm just  the assistant)  keep working on (2). 
>
> Please let us know your opinions on this matter. 
>
> Any help with (2) will be very appreciated. 
>
> Cheers, 
> BogDan. 
>
>
> [1] 
> http://www.omat.nl/2012/08/11/how-necessitas-grew-to-be-a-20tb-of-traffic-a-month-project/ 
> [2] 
> http://quickgit.kde.org/index.php?p=android-qt.git&a=blobdiff&h=348a33a421017d7fd77426dec24736cadec83d1f&hp=d7306e05aca22ba519b7b4d3332197649619779f&hb=8c4c862ee26283d1f4cd698071d002577aff72df&f=src/corelib/corelib.pro 
> [3] http://mail.kde.org/pipermail/necessitas-devel/2012-August/001123.html 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/necessitas-devel/attachments/20120822/9cfc6432/attachment.html>


More information about the Necessitas-devel mailing list