Comment 20 for bug 1270838

Revision history for this message
Daniel Holbach (dholbach) wrote :

Adding information from an email conversation. Alex Abreu says:

"So basically cordova pulls in some mangled symbols from 5.2 and tries to resolve them at runtime while being bound
to the 4.8 icu so libs."

"As you can see in the log:

_ZTIN6icu_528ByteSinkE

It it searching for a 5.2 mangled symbol ...

A "dpkg -L libicu-dev | grep .so$ | xargs objdump -T | grep _ZTIN6icu_528ByteSinkE" did indeed showed me that the symbol wasn't defined anywhere.

BUT, and here is the core of the issue, ICU being the backend for some Qt libs (all?) in terms of i8n it pulls the ICU version for which it was build for. so we end up w/:

alex:$ ldd /usr/lib/cordova-ubuntu-2.8/libcoreplugins.so | grep icu
libicui18n.so.48 => /usr/lib/x86_64-linux-gnu/libicui18n.so.48 (0x00007f5b4a6bb000)
libicuuc.so.48 => /usr/lib/x86_64-linux-gnu/libicuuc.so.48 (0x00007f5b4a34f000)
libicudata.so.48 => /usr/lib/x86_64-linux-gnu/libicudata.so.48 (0x00007f5b45492000)

but cordova-ubuntu-2.8 pulls "libicu-dev" as a build depends in its debian/control ... which is ICU 5.2 (unless I am mistaken)."

"Here is a small branch that remove direct icu references from cordova ...

https://code.launchpad.net/~abreu-alexandre/cordova-ubuntu/fix-icu-dev-version

I quickly tested the branch and it seems to work (no more undefined ref, & the symbol is revolved).

So from there:

*Some* of the missing plugin bits that I just removed (those part of cordova "globalization" API
that forced the direct usage of icu because they were not provided by QLocale) are in qt 5.2 (timezone & UTC offset apparently),
I haven't checked if all of them were there yet."