| Message ID | 20260102172639.1908616-1-bernd@kuhls.net |
|---|---|
| State | New |
| Headers | show |
| Series | [1/1] package/xerces: fix build with recent versions of ICU | expand |
Hello Bernd, On Fri, 2 Jan 2026 18:26:39 +0100 Bernd Kuhls <bernd@kuhls.net> wrote: > Since Buildroot commit dcee99507c6767230fd1faeeefe95f5662eb03a3 that > bumped package/icu to version 77-1, the build of xerces with ICU > support enabled fails: > > In file included from /home/bernd/buildroot/output/host/i586-buildroot-linux-gnu/sysroot/usr/include/unicode/uset.h:38, > from /home/bernd/buildroot/output/build/xerces-3.3.0/src/xercesc/util/regx/RangeToken.cpp:40: > /home/bernd/buildroot/output/host/i586-buildroot-linux-gnu/sysroot/usr/include/unicode/char16ptr.h:271:55: > error: 'is_same_v' is not a member of 'std'; did you mean 'is_same'? > > Indeed, ICU now requires C++17. Instead of using a patch from Gentoo[1] > we use a backported upstream commit, limited to CMakeLists.txt, to raise > the c++ version. > > The build error was not recorded yet by the autobuilders but can be > reproduced with this defconfig: > > BR2_TOOLCHAIN_BUILDROOT_CXX=y > BR2_PACKAGE_XERCES=y > BR2_PACKAGE_ICU=y > > [1] https://bugs.gentoo.org/931105 > > Signed-off-by: Bernd Kuhls <bernd@kuhls.net> Thanks for the patch! Does this mean that xerces now needs some BR2_TOOLCHAIN_GCC_AT_LEAST_xyz dependency to make sure we have a C++ compiler that supports C++17 ? Or maybe ICU needs this? Right now it only depends on gcc >= 4.9, with a comment saying "C++11". Is gcc 4.9 really sufficient? Thomas
Hi Thomas, Am Sat, 3 Jan 2026 15:37:36 +0100 schrieb Thomas Petazzoni via buildroot: > Does this mean that xerces now needs some BR2_TOOLCHAIN_GCC_AT_LEAST_xyz > dependency to make sure we have a C++ compiler that supports C++17 ? no, for xerces icu is only an optional dependency. > Or maybe ICU needs this? Right now it only depends on gcc >= 4.9, with a > comment saying "C++11". Is gcc 4.9 really sufficient? Right, ICU needs C++17 since 75-1, sent patch: https://patchwork.ozlabs.org/project/buildroot/patch/ 20260103154904.1130572-1-bernd@kuhls.net/ Regards, Bernd
diff --git a/package/xerces/0001-XERCESC-2141-Enable-C++17-C++14-or-C++11-when-available.patch b/package/xerces/0001-XERCESC-2141-Enable-C++17-C++14-or-C++11-when-available.patch new file mode 100644 index 0000000000..96dc5b2326 --- /dev/null +++ b/package/xerces/0001-XERCESC-2141-Enable-C++17-C++14-or-C++11-when-available.patch @@ -0,0 +1,32 @@ +From 6883e346fa88f48022edf84328a09a4653b8c2fe Mon Sep 17 00:00:00 2001 +From: Roger Leigh <rleigh@codelibre.net> +Date: Sat, 10 Mar 2018 21:27:27 +0000 +Subject: [PATCH] XERCESC-2141: Enable C++17, C++14 or C++11 when available + +Upstream: https://github.com/apache/xerces-c/commit/6883e346fa88f48022edf84328a09a4653b8c2fe + +[Bernd: rebased for version 3.3.0, limited to CMakeLists.txt] +Signed-off-by: Bernd Kuhls <bernd@kuhls.net> +--- + CMakeLists.txt | 4 +- + configure.ac | 9 + + m4/ax_cxx_compile_stdcxx.m4 | 982 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 993 insertions(+), 2 deletions(-) + create mode 100644 m4/ax_cxx_compile_stdcxx.m4 + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4254f89bb..f5cdb55cc 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -32,9 +32,9 @@ if (POLICY CMP0067) + + cmake_minimum_required(VERSION 3.12.0) + +-# Try C++14, then fall back to C++11 and C++98. Used for feature tests ++# Try C++17, then fall back to C++14, C++11 then C++98. Used for feature tests + # for optional features. +-set(CMAKE_CXX_STANDARD 14) ++set(CMAKE_CXX_STANDARD 17) + + # Use folders (for IDE project grouping) + set_property(GLOBAL PROPERTY USE_FOLDERS ON)
Since Buildroot commit dcee99507c6767230fd1faeeefe95f5662eb03a3 that bumped package/icu to version 77-1, the build of xerces with ICU support enabled fails: In file included from /home/bernd/buildroot/output/host/i586-buildroot-linux-gnu/sysroot/usr/include/unicode/uset.h:38, from /home/bernd/buildroot/output/build/xerces-3.3.0/src/xercesc/util/regx/RangeToken.cpp:40: /home/bernd/buildroot/output/host/i586-buildroot-linux-gnu/sysroot/usr/include/unicode/char16ptr.h:271:55: error: 'is_same_v' is not a member of 'std'; did you mean 'is_same'? Indeed, ICU now requires C++17. Instead of using a patch from Gentoo[1] we use a backported upstream commit, limited to CMakeLists.txt, to raise the c++ version. The build error was not recorded yet by the autobuilders but can be reproduced with this defconfig: BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_PACKAGE_XERCES=y BR2_PACKAGE_ICU=y [1] https://bugs.gentoo.org/931105 Signed-off-by: Bernd Kuhls <bernd@kuhls.net> --- ...-C++17-C++14-or-C++11-when-available.patch | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 package/xerces/0001-XERCESC-2141-Enable-C++17-C++14-or-C++11-when-available.patch