qt4-native: depend on icu-native to fix build on systems with icu >=59
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
@@ -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
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
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_tWe 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
Quoted 11 lines · Cody P Schafer
Yep, for
masterthat is certainly true.For
morty&pyrothough, 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
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?
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