Skip to contentSkip to conversation

qt4-native: depend on icu-native to fix build on systems with icu >=59

PATCH In review Cody P Schafer 2 participants 6 messages Jun 7, 2017 – Jun 8, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 qt4-native: depend on icu-native to fix build on systems with icu >=59

Previously, qt4-native would use the system icu to build.

Trying to build against a system ICU 59, however, fails with this root error:

| In file included from /usr/include/unicode/uversion.h:30:0,
|                  from tools/qlocale_icu.cpp:46:
| /usr/include/unicode/umachine.h:347:13: error: ‘char16_t’ does not name a type; did you mean ‘wchar_t’?
|      typedef char16_t UChar;
|              ^~~~~~~~
|              wchar_t

May have to do with our use of -std=gnu98++.

---
 recipes-qt4/qt4/qt4-native.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
recipes-qt4/qt4/qt4-native.inc +1 -1
index 5a873de..a14a647 100644
@@ -1,5 +1,5 @@
 SUMMARY = "Qt version 4 tools and support files for the build host"
-DEPENDS = "zlib-native dbus-native"
+DEPENDS = "zlib-native dbus-native icu-native"
 SECTION = "libs"
 HOMEPAGE = "http://qt-project.org/"
 PROVIDES = "qt4-tools-native"
Signature · 1 line
2.13.0
#1 lore raw
Quoted 5 lines · Cody P Schafer

Previously, qt4-native would use the system icu to build.

Trying to build against a system ICU 59, however, fails with this root error:

Quoted 7 lines
| In file included from /usr/include/unicode/uversion.h:30:0,
|                  from tools/qlocale_icu.cpp:46:
| /usr/include/unicode/umachine.h:347:13: error: ‘char16_t’ does not name a type; did you mean ‘wchar_t’?
|      typedef char16_t UChar;
|              ^~~~~~~~
|              wchar_t

We will introduce icu 59 to oe-core at some point (in fact, I have a patch queued), and then this fix will no longer work.

You need to fix Qt4 itself.

Alex

#2 lore raw

Yep, for master that is certainly true.

For morty & pyro though, meta-qt4 could keep working by using icu-native.

The source of this issue being qt4's general incompatibility with C++ 11 (we build with c++98 because of build errors with the newer std) makes me wonder if it will even be possible to continue supporting qt4 going forward.

This may turn out like the openssl conflicts in that we'll need to disable qt4's use of icu entirely.

Quoted 23 lines · Alexander Kanavin
Quoted 6 lines · Cody P Schafer

Previously, qt4-native would use the system icu to build.

Trying to build against a system ICU 59, however, fails with this root error:

Quoted 8 lines
| In file included from /usr/include/unicode/uversion.h:30:0,
|                  from tools/qlocale_icu.cpp:46:
| /usr/include/unicode/umachine.h:347:13: error: ‘char16_t’ does not name
a type; did you mean ‘wchar_t’?
|      typedef char16_t UChar;
|              ^~~~~~~~
|              wchar_t

We will introduce icu 59 to oe-core at some point (in fact, I have a patch queued), and then this fix will no longer work.

You need to fix Qt4 itself.

Alex

#3 lore raw
Quoted 11 lines · Cody P Schafer

Yep, for master that is certainly true.

For morty & pyro though, meta-qt4 could keep working by using icu-native.

The source of this issue being qt4's general incompatibility with C++ 11 (we build with c++98 because of build errors with the newer std) makes me wonder if it will even be possible to continue supporting qt4 going forward.

This may turn out like the openssl conflicts in that we'll need to disable qt4's use of icu entirely.

I should give you a heads up: we (the yocto project) are going to remove qt4 builds from the autobuilder altogether, sometime during this cycle. The repo will stay, and patches will be accepted though.

So it's up to you to solve these issues, but I wouldn't want to take
patches that fix up older releases, while the master branch remains broken. We have a 'master first' policy :)

Alex

#4 lore raw
Quoted 3 lines

I should give you a heads up: we (the yocto project) are going to remove qt4 builds from the autobuilder altogether, sometime during this cycle. The repo will stay, and patches will be accepted though.

Thanks for the heads up.

Quoted 3 lines

So it's up to you to solve these issues, but I wouldn't want to take patches that fix up older releases, while the master branch remains broken. We have a 'master first' policy :)

master first makes sense if master is going to be supported going forward, but given the extremely stale state of qt4, I don't expect we'll be able to keep it working (at least as a complete unit) for very much longer. And we probably shouldn't :) . At some point there is going to be a last release that works with qt4, forever.

Would it be reasonable to disable icu usage in meta-qt4 master while switching pyro & morty to using the icu-native package?

#5 lore raw
Quoted 2 lines · Cody P Schafer

Would it be reasonable to disable icu usage in meta-qt4 master while switching pyro & morty to using the icu-native package?

Yes, absolutely.

Alex