diff mbox series

[1/1] package/xerces: fix build with recent versions of ICU

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

Commit Message

Bernd Kuhls Jan. 2, 2026, 5:26 p.m. UTC
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

Comments

Thomas Petazzoni Jan. 3, 2026, 2:37 p.m. UTC | #1
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
Bernd Kuhls Jan. 3, 2026, 3:52 p.m. UTC | #2
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 mbox series

Patch

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)