| Message ID | 20260530070830.1495792-1-f_l_k@t-online.de |
|---|---|
| State | Accepted |
| Headers | show |
| Series | [meta-oe] jsoncpp: add a backport patch to fix build with gcc16 | expand |
I had to move the patch status tag to patch itself not the commit message On Sat, May 30, 2026, 12:08 AM Markus Volk via lists.openembedded.org <f_l_k=t-online.de@lists.openembedded.org> wrote: > Partially backport > https://github.com/open-source-parsers/jsoncpp/commit/71d46ca38e90dc902e8178ba484af4f27fa11947.patch > > This fixes build with gcc 16 > > Upstream-Status: Backport [ > https://github.com/open-source-parsers/jsoncpp/commit/71d46ca38e90dc902e8178ba484af4f27fa11947 > ] > > Signed-off-by: Markus Volk <f_l_k@t-online.de> > --- > ...6ca38e90dc902e8178ba484af4f27fa11947.patch | 59 +++++++++++++++++++ > .../recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb | 1 + > 2 files changed, 60 insertions(+) > create mode 100644 > meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch > > diff --git > a/meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch > b/meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch > new file mode 100644 > index 0000000000..3f7ca7bd66 > --- /dev/null > +++ > b/meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch > @@ -0,0 +1,59 @@ > +From 71d46ca38e90dc902e8178ba484af4f27fa11947 Mon Sep 17 00:00:00 2001 > +From: Jordan Bayles <bayles.jordan@gmail.com> > +Date: Thu, 14 May 2026 15:57:53 -0700 > +Subject: [PATCH] fix: GCC 16 / C++20 build failure with u8 string literals > + (#1685) > + > +* fix: GCC 16 / C++20 build failure with u8 string literals (#1684) > + > +In C++20, the `u8""` string literal prefix was changed to evaluate to > `const char8_t[]` instead of `const char[]`. This caused compilation errors > when these literals were implicitly converted to `std::string` or passed to > functions expecting `const char*`. > + > +This commit adds `reinterpret_cast<const char*>` around the `u8` string > literals in the test suite to resolve the build errors while maintaining > the intended UTF-8 semantics. > + > +Additionally, this adds C++20 to the GitHub Actions CMake test matrix to > ensure we don't regress on newer standards. > + > +Fixes #1684 > + > +* style: run clang-format > +--- > + .github/workflows/cmake.yml | 2 +- > + src/test_lib_json/main.cpp | 12 +++++++----- > + 2 files changed, 8 insertions(+), 6 deletions(-) > + > +diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp > +index 501aba10e..08731f66a 100644 > +--- a/src/test_lib_json/main.cpp > ++++ b/src/test_lib_json/main.cpp > +@@ -1993,7 +1993,8 @@ JSONTEST_FIXTURE_LOCAL(ValueTest, StaticString) { > + > + JSONTEST_FIXTURE_LOCAL(ValueTest, WideString) { > + // https://github.com/open-source-parsers/jsoncpp/issues/756 > +- const std::string uni = u8"\u5f0f\uff0c\u8fdb"; // "式,进" > ++ const std::string uni = > ++ reinterpret_cast<const char*>(u8"\u5f0f\uff0c\u8fdb"); // "式,进" > + std::string styled; > + { > + Json::Value v; > +@@ -3109,9 +3110,9 @@ JSONTEST_FIXTURE_LOCAL(ReaderTest, > strictModeParseNumber) { > + } > + > + JSONTEST_FIXTURE_LOCAL(ReaderTest, parseChineseWithOneError) { > +- checkParse(R"({ "pr)" > +- u8"\u4f50\u85e4" // 佐藤 > +- R"(erty" :: "value" })", > ++ checkParse(reinterpret_cast<const char*>(R"({ "pr)" > ++ u8"\u4f50\u85e4" // 佐藤 > ++ R"(erty" :: "value" })"), > + {{18, 19, "Syntax error: value, object or array > expected."}}, > + "* Line 1, Column 19\n Syntax error: value, object or > array " > + "expected.\n"); > +@@ -3223,7 +3224,8 @@ JSONTEST_FIXTURE_LOCAL(CharReaderTest, parseString) > { > + bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs); > + JSONTEST_ASSERT(ok); > + JSONTEST_ASSERT(errs.empty()); > +- JSONTEST_ASSERT_EQUAL(u8"\u8A2a", root[0].asString()); // "訪" > ++ JSONTEST_ASSERT_EQUAL(reinterpret_cast<const char*>(u8"\u8A2a"), > ++ root[0].asString()); // "訪" > + } > + { > + char const doc[] = R"([ "\uD801" ])"; > diff --git a/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb > b/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb > index 354f4e9115..bf91f8eff4 100644 > --- a/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb > +++ b/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb > @@ -16,6 +16,7 @@ PE = "1" > SRCREV = "3455302847cf1e4671f1d8f5fa953fd46a7b1404" > SRC_URI = "git:// > github.com/open-source-parsers/jsoncpp;branch=master;protocol=https;tag=${PV} > <http://github.com/open-source-parsers/jsoncpp;branch=master;protocol=https;tag=$%7BPV%7D> > \ > > file://0001-Fix-C-11-ABI-breakage-when-compiled-with-C-17-1668-1.patch \ > + file://71d46ca38e90dc902e8178ba484af4f27fa11947.patch \ > file://run-ptest \ > " > > -- > 2.54.0 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#127292): > https://lists.openembedded.org/g/openembedded-devel/message/127292 > Mute This Topic: https://lists.openembedded.org/mt/119559219/1997914 > Group Owner: openembedded-devel+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [ > raj.khem@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- > >
diff --git a/meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch b/meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch new file mode 100644 index 0000000000..3f7ca7bd66 --- /dev/null +++ b/meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch @@ -0,0 +1,59 @@ +From 71d46ca38e90dc902e8178ba484af4f27fa11947 Mon Sep 17 00:00:00 2001 +From: Jordan Bayles <bayles.jordan@gmail.com> +Date: Thu, 14 May 2026 15:57:53 -0700 +Subject: [PATCH] fix: GCC 16 / C++20 build failure with u8 string literals + (#1685) + +* fix: GCC 16 / C++20 build failure with u8 string literals (#1684) + +In C++20, the `u8""` string literal prefix was changed to evaluate to `const char8_t[]` instead of `const char[]`. This caused compilation errors when these literals were implicitly converted to `std::string` or passed to functions expecting `const char*`. + +This commit adds `reinterpret_cast<const char*>` around the `u8` string literals in the test suite to resolve the build errors while maintaining the intended UTF-8 semantics. + +Additionally, this adds C++20 to the GitHub Actions CMake test matrix to ensure we don't regress on newer standards. + +Fixes #1684 + +* style: run clang-format +--- + .github/workflows/cmake.yml | 2 +- + src/test_lib_json/main.cpp | 12 +++++++----- + 2 files changed, 8 insertions(+), 6 deletions(-) + +diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp +index 501aba10e..08731f66a 100644 +--- a/src/test_lib_json/main.cpp ++++ b/src/test_lib_json/main.cpp +@@ -1993,7 +1993,8 @@ JSONTEST_FIXTURE_LOCAL(ValueTest, StaticString) { + + JSONTEST_FIXTURE_LOCAL(ValueTest, WideString) { + // https://github.com/open-source-parsers/jsoncpp/issues/756 +- const std::string uni = u8"\u5f0f\uff0c\u8fdb"; // "式,进" ++ const std::string uni = ++ reinterpret_cast<const char*>(u8"\u5f0f\uff0c\u8fdb"); // "式,进" + std::string styled; + { + Json::Value v; +@@ -3109,9 +3110,9 @@ JSONTEST_FIXTURE_LOCAL(ReaderTest, strictModeParseNumber) { + } + + JSONTEST_FIXTURE_LOCAL(ReaderTest, parseChineseWithOneError) { +- checkParse(R"({ "pr)" +- u8"\u4f50\u85e4" // 佐藤 +- R"(erty" :: "value" })", ++ checkParse(reinterpret_cast<const char*>(R"({ "pr)" ++ u8"\u4f50\u85e4" // 佐藤 ++ R"(erty" :: "value" })"), + {{18, 19, "Syntax error: value, object or array expected."}}, + "* Line 1, Column 19\n Syntax error: value, object or array " + "expected.\n"); +@@ -3223,7 +3224,8 @@ JSONTEST_FIXTURE_LOCAL(CharReaderTest, parseString) { + bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs); + JSONTEST_ASSERT(ok); + JSONTEST_ASSERT(errs.empty()); +- JSONTEST_ASSERT_EQUAL(u8"\u8A2a", root[0].asString()); // "訪" ++ JSONTEST_ASSERT_EQUAL(reinterpret_cast<const char*>(u8"\u8A2a"), ++ root[0].asString()); // "訪" + } + { + char const doc[] = R"([ "\uD801" ])"; diff --git a/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb b/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb index 354f4e9115..bf91f8eff4 100644 --- a/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb +++ b/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb @@ -16,6 +16,7 @@ PE = "1" SRCREV = "3455302847cf1e4671f1d8f5fa953fd46a7b1404" SRC_URI = "git://github.com/open-source-parsers/jsoncpp;branch=master;protocol=https;tag=${PV} \ file://0001-Fix-C-11-ABI-breakage-when-compiled-with-C-17-1668-1.patch \ + file://71d46ca38e90dc902e8178ba484af4f27fa11947.patch \ file://run-ptest \ "
Partially backport https://github.com/open-source-parsers/jsoncpp/commit/71d46ca38e90dc902e8178ba484af4f27fa11947.patch This fixes build with gcc 16 Upstream-Status: Backport [https://github.com/open-source-parsers/jsoncpp/commit/71d46ca38e90dc902e8178ba484af4f27fa11947] Signed-off-by: Markus Volk <f_l_k@t-online.de> --- ...6ca38e90dc902e8178ba484af4f27fa11947.patch | 59 +++++++++++++++++++ .../recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb | 1 + 2 files changed, 60 insertions(+) create mode 100644 meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch