diff mbox series

[meta-oe,master-next,8/11] jsoncpp: upgrade 1.9.7 -> 1.9.8

Message ID 20260802120444.2973561-8-ankur.tyagi85@gmail.com
State Under Review
Headers show
Series [meta-networking,master-next,1/11] ulogd2: upgrade 2.0.8 -> 2.0.9 | expand

Commit Message

Ankur Tyagi Aug. 2, 2026, 12:04 p.m. UTC
From: Ankur Tyagi <ankur.tyagi85@gmail.com>

Dropped patches that are merged in the upstream version.

Changelog:
https://github.com/open-source-parsers/jsoncpp/releases/tag/1.9.8

Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
---
 ...akage-when-compiled-with-C-17-1668-1.patch | 368 ------------------
 ...6ca38e90dc902e8178ba484af4f27fa11947.patch |  63 ---
 .../{jsoncpp_1.9.7.bb => jsoncpp_1.9.8.bb}    |   4 +-
 3 files changed, 1 insertion(+), 434 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/jsoncpp/jsoncpp/0001-Fix-C-11-ABI-breakage-when-compiled-with-C-17-1668-1.patch
 delete mode 100644 meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch
 rename meta-oe/recipes-devtools/jsoncpp/{jsoncpp_1.9.7.bb => jsoncpp_1.9.8.bb} (90%)
diff mbox series

Patch

diff --git a/meta-oe/recipes-devtools/jsoncpp/jsoncpp/0001-Fix-C-11-ABI-breakage-when-compiled-with-C-17-1668-1.patch b/meta-oe/recipes-devtools/jsoncpp/jsoncpp/0001-Fix-C-11-ABI-breakage-when-compiled-with-C-17-1668-1.patch
deleted file mode 100644
index 887bf14d2a..0000000000
--- a/meta-oe/recipes-devtools/jsoncpp/jsoncpp/0001-Fix-C-11-ABI-breakage-when-compiled-with-C-17-1668-1.patch
+++ /dev/null
@@ -1,368 +0,0 @@ 
-From c67034e4b4c722579ee15fddb8e4af8f04252b08 Mon Sep 17 00:00:00 2001
-From: Jordan Bayles <bayles.jordan@gmail.com>
-Date: Thu, 9 Apr 2026 10:37:08 -0700
-Subject: [PATCH] Fix C++11 ABI breakage when compiled with C++17 #1668 (#1675)
-
-When JSONCPP_HAS_STRING_VIEW was defined, the library dropped the
-`const char*` and `const String&` overloads for `operator[]`, `get`,
-`removeMember`, and `isMember`, breaking ABI compatibility for projects
-consuming the library with C++11.
-
-This change unconditionally declares and defines the legacy overloads
-so they are always exported, restoring compatibility.
-
-This commit completely eliminates the ABI breakage that occurs across
-C++ standard boundaries when using `std::string_view`.
-
-Previously, when the library was built with C++17+, CMake would leak
-`JSONCPP_HAS_STRING_VIEW=1` as a PUBLIC definition. A C++11 consumer
-would receive this definition, attempt to parse the header, and fail
-with compiler errors because `std::string_view` is not available in
-their environment.
-
-Conversely, if the library was built in C++11 (without `string_view`
-symbols), a C++17 consumer would naturally define
-`JSONCPP_HAS_STRING_VIEW` based on `__cplusplus` inside `value.h`. The
-consumer would then call the declared `string_view` methods, resulting
-in linker errors because the methods weren't compiled into the library.
-
-By moving all `std::string_view` overloads directly into `value.h` as
-`inline` methods that delegate to the fundamental
-`const char*, const char*` methods:
-1. The consumer's compiler dictates whether the overloads are visible
-   (via `__cplusplus >= 201703L`).
-2. The consumer compiles the inline wrappers locally, removing any
-   reliance on the library's exported symbols for `std::string_view`.
-3. CMake no longer needs to pollute the consumer's environment with
-   PUBLIC compile definitions.
-
-Backported only the library/header changes. Upstream CI and example
-test additions are omitted.
-
-Upstream-Status: Backport [https://github.com/open-source-parsers/jsoncpp/commit/c67034e4b4c722579ee15fddb8e4af8f04252b08]
-Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
----
- include/json/value.h        | 54 ++++++++++++++++++++----------
- src/lib_json/CMakeLists.txt |  9 -----
- src/lib_json/json_value.cpp | 66 -------------------------------------
- 3 files changed, 36 insertions(+), 93 deletions(-)
-
-diff --git a/include/json/value.h b/include/json/value.h
-index f32f45609365..2007e6b4251d 100644
---- a/include/json/value.h
-+++ b/include/json/value.h
-@@ -357,7 +357,8 @@ public:
-   Value(const StaticString& value);
-   Value(const String& value);
- #ifdef JSONCPP_HAS_STRING_VIEW
--  Value(std::string_view value);
-+  inline Value(std::string_view value)
-+      : Value(value.data(), value.data() + value.length()) {}
- #endif
-   Value(bool value);
-   Value(std::nullptr_t ptr) = delete;
-@@ -405,7 +406,14 @@ public:
-   /** Get string_view of string-value.
-    *  \return false if !string. (Seg-fault if str is NULL.)
-    */
--  bool getString(std::string_view* str) const;
-+  inline bool getString(std::string_view* str) const {
-+    char const* begin;
-+    char const* end;
-+    if (!getString(&begin, &end))
-+      return false;
-+    *str = std::string_view(begin, static_cast<size_t>(end - begin));
-+    return true;
-+  }
- #endif
-   Int asInt() const;
-   UInt asUInt() const;
-@@ -496,12 +504,19 @@ public:
- #ifdef JSONCPP_HAS_STRING_VIEW
-   /// Access an object value by name, create a null member if it does not exist.
-   /// \param key may contain embedded nulls.
--  Value& operator[](std::string_view key);
-+  inline Value& operator[](std::string_view key) {
-+    return resolveReference(key.data(), key.data() + key.length());
-+  }
-   /// Access an object value by name, returns null if there is no member with
-   /// that name.
-   /// \param key may contain embedded nulls.
--  const Value& operator[](std::string_view key) const;
--#else
-+  inline const Value& operator[](std::string_view key) const {
-+    Value const* found = find(key.data(), key.data() + key.length());
-+    if (!found)
-+      return nullSingleton();
-+    return *found;
-+  }
-+#endif
-   /// Access an object value by name, create a null member if it does not exist.
-   /// \note Because of our implementation, keys are limited to 2^30 -1 chars.
-   /// Exceeding that will cause an exception.
-@@ -516,7 +531,6 @@ public:
-   /// that name.
-   /// \param key may contain embedded nulls.
-   const Value& operator[](const String& key) const;
--#endif
-   /** \brief Access an object value by name, create a null member if it does not
-    * exist.
-    *
-@@ -533,8 +547,10 @@ public:
- #ifdef JSONCPP_HAS_STRING_VIEW
-   /// Return the member named key if it exist, defaultValue otherwise.
-   /// \note deep copy
--  Value get(std::string_view key, const Value& defaultValue) const;
--#else
-+  inline Value get(std::string_view key, const Value& defaultValue) const {
-+    return get(key.data(), key.data() + key.length(), defaultValue);
-+  }
-+#endif
-   /// Return the member named key if it exist, defaultValue otherwise.
-   /// \note deep copy
-   Value get(const char* key, const Value& defaultValue) const;
-@@ -542,7 +558,6 @@ public:
-   /// \note deep copy
-   /// \param key may contain embedded nulls.
-   Value get(const String& key, const Value& defaultValue) const;
--#endif
-   /// Return the member named key if it exist, defaultValue otherwise.
-   /// \note deep copy
-   /// \note key may contain embedded nulls.
-@@ -588,13 +603,14 @@ public:
-   /// \pre type() is objectValue or nullValue
-   /// \post type() is unchanged
- #if JSONCPP_HAS_STRING_VIEW
--  void removeMember(std::string_view key);
--#else
-+  inline void removeMember(std::string_view key) {
-+    removeMember(key.data(), key.data() + key.length(), nullptr);
-+  }
-+#endif
-   void removeMember(const char* key);
-   /// Same as removeMember(const char*)
-   /// \param key may contain embedded nulls.
-   void removeMember(const String& key);
--#endif
-   /** \brief Remove the named map member.
-    *
-    *  Update 'removed' iff removed.
-@@ -602,13 +618,14 @@ public:
-    *  \return true iff removed (no exceptions)
-    */
- #if JSONCPP_HAS_STRING_VIEW
--  bool removeMember(std::string_view key, Value* removed);
--#else
-+  inline bool removeMember(std::string_view key, Value* removed) {
-+    return removeMember(key.data(), key.data() + key.length(), removed);
-+  }
-+#endif
-   bool removeMember(String const& key, Value* removed);
-   /// Same as removeMember(const char* begin, const char* end, Value* removed),
-   /// but 'key' is null-terminated.
-   bool removeMember(const char* key, Value* removed);
--#endif
-   /// Same as removeMember(String const& key, Value* removed)
-   bool removeMember(const char* begin, const char* end, Value* removed);
-   /** \brief Remove the indexed array element.
-@@ -622,15 +639,16 @@ public:
- #ifdef JSONCPP_HAS_STRING_VIEW
-   /// Return true if the object has a member named key.
-   /// \param key may contain embedded nulls.
--  bool isMember(std::string_view key) const;
--#else
-+  inline bool isMember(std::string_view key) const {
-+    return isMember(key.data(), key.data() + key.length());
-+  }
-+#endif
-   /// Return true if the object has a member named key.
-   /// \note 'key' must be null-terminated.
-   bool isMember(const char* key) const;
-   /// Return true if the object has a member named key.
-   /// \param key may contain embedded nulls.
-   bool isMember(const String& key) const;
--#endif
-   /// Same as isMember(String const& key)const
-   bool isMember(const char* begin, const char* end) const;
-
-diff --git a/src/lib_json/CMakeLists.txt b/src/lib_json/CMakeLists.txt
-index 03e9335525ca..a0695e9eba83 100644
---- a/src/lib_json/CMakeLists.txt
-+++ b/src/lib_json/CMakeLists.txt
-@@ -131,9 +131,6 @@ if(BUILD_SHARED_LIBS)
-
-     target_compile_features(${SHARED_LIB} PUBLIC ${REQUIRED_FEATURES})
-
--    if(JSONCPP_HAS_STRING_VIEW)
--        target_compile_definitions(${SHARED_LIB} PUBLIC JSONCPP_HAS_STRING_VIEW=1)
--    endif()
-
-     target_include_directories(${SHARED_LIB} PUBLIC
-         $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-@@ -168,9 +165,6 @@ if(BUILD_STATIC_LIBS)
-
-     target_compile_features(${STATIC_LIB} PUBLIC ${REQUIRED_FEATURES})
-
--    if(JSONCPP_HAS_STRING_VIEW)
--        target_compile_definitions(${STATIC_LIB} PUBLIC JSONCPP_HAS_STRING_VIEW=1)
--    endif()
-
-     target_include_directories(${STATIC_LIB} PUBLIC
-         $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-@@ -198,9 +192,6 @@ if(BUILD_OBJECT_LIBS)
-
-     target_compile_features(${OBJECT_LIB} PUBLIC ${REQUIRED_FEATURES})
-
--    if(JSONCPP_HAS_STRING_VIEW)
--        target_compile_definitions(${OBJECT_LIB} PUBLIC JSONCPP_HAS_STRING_VIEW=1)
--    endif()
-
-     target_include_directories(${OBJECT_LIB} PUBLIC
-         $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp
-index 74f77896fa7b..a8eb72d6b75f 100644
---- a/src/lib_json/json_value.cpp
-+++ b/src/lib_json/json_value.cpp
-@@ -441,14 +441,6 @@ Value::Value(const String& value) {
-       value.data(), static_cast<unsigned>(value.length()));
- }
-
--#ifdef JSONCPP_HAS_STRING_VIEW
--Value::Value(std::string_view value) {
--  initBasic(stringValue, true);
--  value_.string_ = duplicateAndPrefixStringValue(
--      value.data(), static_cast<unsigned>(value.length()));
--}
--#endif
--
- Value::Value(const StaticString& value) {
-   initBasic(stringValue);
-   value_.string_ = const_cast<char*>(value.c_str());
-@@ -656,21 +648,6 @@ bool Value::getString(char const** begin, char const** end) const {
-   return true;
- }
-
--#ifdef JSONCPP_HAS_STRING_VIEW
--bool Value::getString(std::string_view* str) const {
--  if (type() != stringValue)
--    return false;
--  if (value_.string_ == nullptr)
--    return false;
--  const char* begin;
--  unsigned length;
--  decodePrefixedString(this->isAllocated(), this->value_.string_, &length,
--                       &begin);
--  *str = std::string_view(begin, length);
--  return true;
--}
--#endif
--
- String Value::asString() const {
-   switch (type()) {
-   case nullValue:
-@@ -1190,17 +1167,6 @@ Value* Value::demand(char const* begin, char const* end) {
-                       "objectValue or nullValue");
-   return &resolveReference(begin, end);
- }
--#ifdef JSONCPP_HAS_STRING_VIEW
--const Value& Value::operator[](std::string_view key) const {
--  Value const* found = find(key.data(), key.data() + key.length());
--  if (!found)
--    return nullSingleton();
--  return *found;
--}
--Value& Value::operator[](std::string_view key) {
--  return resolveReference(key.data(), key.data() + key.length());
--}
--#else
- const Value& Value::operator[](const char* key) const {
-   Value const* found = find(key, key + strlen(key));
-   if (!found)
-@@ -1221,7 +1187,6 @@ Value& Value::operator[](const char* key) {
- Value& Value::operator[](const String& key) {
-   return resolveReference(key.data(), key.data() + key.length());
- }
--#endif
-
- Value& Value::operator[](const StaticString& key) {
-   return resolveReference(key.c_str());
-@@ -1261,18 +1226,12 @@ Value Value::get(char const* begin, char const* end,
-   Value const* found = find(begin, end);
-   return !found ? defaultValue : *found;
- }
--#ifdef JSONCPP_HAS_STRING_VIEW
--Value Value::get(std::string_view key, const Value& defaultValue) const {
--  return get(key.data(), key.data() + key.length(), defaultValue);
--}
--#else
- Value Value::get(char const* key, Value const& defaultValue) const {
-   return get(key, key + strlen(key), defaultValue);
- }
- Value Value::get(String const& key, Value const& defaultValue) const {
-   return get(key.data(), key.data() + key.length(), defaultValue);
- }
--#endif
-
- bool Value::removeMember(const char* begin, const char* end, Value* removed) {
-   if (type() != objectValue) {
-@@ -1288,31 +1247,13 @@ bool Value::removeMember(const char* begin, const char* end, Value* removed) {
-   value_.map_->erase(it);
-   return true;
- }
--#ifdef JSONCPP_HAS_STRING_VIEW
--bool Value::removeMember(std::string_view key, Value* removed) {
--  return removeMember(key.data(), key.data() + key.length(), removed);
--}
--#else
- bool Value::removeMember(const char* key, Value* removed) {
-   return removeMember(key, key + strlen(key), removed);
- }
- bool Value::removeMember(String const& key, Value* removed) {
-   return removeMember(key.data(), key.data() + key.length(), removed);
- }
--#endif
--
--#ifdef JSONCPP_HAS_STRING_VIEW
--void Value::removeMember(std::string_view key) {
--  JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
--                      "in Json::Value::removeMember(): requires objectValue");
--  if (type() == nullValue)
--    return;
-
--  CZString actualKey(key.data(), unsigned(key.length()),
--                     CZString::noDuplication);
--  value_.map_->erase(actualKey);
--}
--#else
- void Value::removeMember(const char* key) {
-   JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
-                       "in Json::Value::removeMember(): requires objectValue");
-@@ -1323,7 +1264,6 @@ void Value::removeMember(const char* key) {
-   value_.map_->erase(actualKey);
- }
- void Value::removeMember(const String& key) { removeMember(key.c_str()); }
--#endif
-
- bool Value::removeIndex(ArrayIndex index, Value* removed) {
-   if (type() != arrayValue) {
-@@ -1353,18 +1293,12 @@ bool Value::isMember(char const* begin, char const* end) const {
-   Value const* value = find(begin, end);
-   return nullptr != value;
- }
--#ifdef JSONCPP_HAS_STRING_VIEW
--bool Value::isMember(std::string_view key) const {
--  return isMember(key.data(), key.data() + key.length());
--}
--#else
- bool Value::isMember(char const* key) const {
-   return isMember(key, key + strlen(key));
- }
- bool Value::isMember(String const& key) const {
-   return isMember(key.data(), key.data() + key.length());
- }
--#endif
-
- Value::Members Value::getMemberNames() const {
-   JSON_ASSERT_MESSAGE(
---
-2.43.0
diff --git a/meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch b/meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch
deleted file mode 100644
index d649c2ed4c..0000000000
--- a/meta-oe/recipes-devtools/jsoncpp/jsoncpp/71d46ca38e90dc902e8178ba484af4f27fa11947.patch
+++ /dev/null
@@ -1,63 +0,0 @@ 
-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
-
-Upstream-Status: Backport [https://github.com/open-source-parsers/jsoncpp/commit/71d46ca38e90dc902e8178ba484af4f27fa11947]
-
-Signed-off-by: Markus Volk <f_l_k@t-online.de>
----
- .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.8.bb
similarity index 90%
rename from meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb
rename to meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.8.bb
index bf91f8eff4..849c5c5a25 100644
--- a/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb
+++ b/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.8.bb
@@ -13,10 +13,8 @@  LIC_FILES_CHKSUM = "file://LICENSE;md5=5d73c165a0f9e86a1342f32d19ec5926"
 
 PE = "1"
 
-SRCREV = "3455302847cf1e4671f1d8f5fa953fd46a7b1404"
+SRCREV = "8519b8381f3c741ad1421f88237b1deda0b11412"
 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 \
            "