From e9c489787f648607883102fab220442bd97abedf Mon Sep 17 00:00:00 2001 From: Jordan Bayles Date: Thu, 19 Mar 2026 15:49:00 -0700 Subject: [PATCH 1/3] improve qualifier support --- src/test_lib_json/main.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp index 5d5b971f8..10394accb 100644 --- a/src/test_lib_json/main.cpp +++ b/src/test_lib_json/main.cpp @@ -4113,10 +4113,17 @@ JSONTEST_FIXTURE_LOCAL(MemberTemplateIs, BehavesSameAsNamedIs) { class VersionTest : public JsonTest::TestCase {}; +#define JSONCPP_FORMAT_MACRO_(x) #x +#define JSONCPP_FORMAT_MACRO(x) JSONCPP_FORMAT_MACRO_(x) + JSONTEST_FIXTURE_LOCAL(VersionTest, VersionNumbersMatch) { std::ostringstream vstr; vstr << JSONCPP_VERSION_MAJOR << '.' << JSONCPP_VERSION_MINOR << '.' << JSONCPP_VERSION_PATCH; + std::string qual = JSONCPP_FORMAT_MACRO(JSONCPP_VERSION_QUALIFIER); + if (!qual.empty()) { + vstr << '.' << qual; + } JSONTEST_ASSERT_EQUAL(vstr.str(), std::string(JSONCPP_VERSION_STRING)); } From 5c6e30100f1f378ab32ba944a7579e3397619df6 Mon Sep 17 00:00:00 2001 From: Jordan Bayles Date: Thu, 19 Mar 2026 16:12:02 -0700 Subject: [PATCH 2/3] move to va args --- src/test_lib_json/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp index 10394accb..fbb1eb532 100644 --- a/src/test_lib_json/main.cpp +++ b/src/test_lib_json/main.cpp @@ -4113,8 +4113,8 @@ JSONTEST_FIXTURE_LOCAL(MemberTemplateIs, BehavesSameAsNamedIs) { class VersionTest : public JsonTest::TestCase {}; -#define JSONCPP_FORMAT_MACRO_(x) #x -#define JSONCPP_FORMAT_MACRO(x) JSONCPP_FORMAT_MACRO_(x) +#define JSONCPP_FORMAT_MACRO_(...) #__VA_ARGS__ +#define JSONCPP_FORMAT_MACRO(...) JSONCPP_FORMAT_MACRO_(__VA_ARGS__) JSONTEST_FIXTURE_LOCAL(VersionTest, VersionNumbersMatch) { std::ostringstream vstr; From db230350d7ccff70275d77d04bfd06044027b1dc Mon Sep 17 00:00:00 2001 From: Jordan Bayles Date: Thu, 19 Mar 2026 17:33:18 -0700 Subject: [PATCH 3/3] remove qualifier and focus on strict Semantic Versioning --- .github/workflows/update-project-version.yml | 13 ++----------- CMakeLists.txt | 4 ++-- MODULE.bazel | 2 +- include/json/version.h | 5 ++--- meson.build | 4 ++-- src/test_lib_json/main.cpp | 7 ------- 6 files changed, 9 insertions(+), 26 deletions(-) diff --git a/.github/workflows/update-project-version.yml b/.github/workflows/update-project-version.yml index af03a5566..c00363837 100644 --- a/.github/workflows/update-project-version.yml +++ b/.github/workflows/update-project-version.yml @@ -4,9 +4,9 @@ on: workflow_dispatch: inputs: target_version: - description: 'next version (e.g., 1.9.7 or 1.9.7.12)' + description: 'next version (e.g., 1.9.8)' required: true - default: '1.9.7' + default: '1.9.8' target_soversion: description: 'next soversion (e.g., 28). leave blank to keep current.' required: false @@ -60,18 +60,11 @@ jobs: MAJOR=$(echo "$VER" | cut -d. -f1) MINOR=$(echo "$VER" | cut -d. -f2) PATCH=$(echo "$VER" | cut -d. -f3) - QUALIFIER=$(echo "$VER" | cut -d. -f4 -s) sed -i "s/#define JSONCPP_VERSION_STRING \".*\"/#define JSONCPP_VERSION_STRING \"$VER\"/" include/json/version.h sed -i "s/#define JSONCPP_VERSION_MAJOR [0-9]*/#define JSONCPP_VERSION_MAJOR $MAJOR/" include/json/version.h sed -i "s/#define JSONCPP_VERSION_MINOR [0-9]*/#define JSONCPP_VERSION_MINOR $MINOR/" include/json/version.h sed -i "s/#define JSONCPP_VERSION_PATCH [0-9]*/#define JSONCPP_VERSION_PATCH $PATCH/" include/json/version.h - - if [ -n "$QUALIFIER" ]; then - sed -i "s/#define JSONCPP_VERSION_QUALIFIER.*/#define JSONCPP_VERSION_QUALIFIER $QUALIFIER/" include/json/version.h - else - sed -i "s/#define JSONCPP_VERSION_QUALIFIER.*/#define JSONCPP_VERSION_QUALIFIER/" include/json/version.h - fi fi - name: verify version macros @@ -84,7 +77,6 @@ jobs: V_MAJ=$(grep "JSONCPP_VERSION_MAJOR" "$FILE" | head -n 1 | awk '{print $3}' | tr -cd '0-9') V_MIN=$(grep "JSONCPP_VERSION_MINOR" "$FILE" | head -n 1 | awk '{print $3}' | tr -cd '0-9') V_PAT=$(grep "JSONCPP_VERSION_PATCH" "$FILE" | head -n 1 | awk '{print $3}' | tr -cd '0-9') - V_QUA=$(grep "JSONCPP_VERSION_QUALIFIER" "$FILE" | head -n 1 | awk '{print $3}' | tr -cd '0-9') # create a unique delimiter for the multi-line output DELIM=$(dd if=/dev/urandom bs=15 count=1 2>/dev/null | base64) @@ -95,7 +87,6 @@ jobs: echo "| MAJOR | \`$V_MAJ\` |" >> $GITHUB_OUTPUT echo "| MINOR | \`$V_MIN\` |" >> $GITHUB_OUTPUT echo "| PATCH | \`$V_PAT\` |" >> $GITHUB_OUTPUT - echo "| QUALIFIER | \`${V_QUA:-empty}\` |" >> $GITHUB_OUTPUT echo "$DELIM" >> $GITHUB_OUTPUT fi diff --git a/CMakeLists.txt b/CMakeLists.txt index 4eb4499a2..3de071f08 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,11 +63,11 @@ project(jsoncpp # 3. ./CMakeLists.txt # 4. ./MODULE.bazel # IMPORTANT: also update the PROJECT_SOVERSION!! - VERSION 1.9.7 # [.[.[.]]] + VERSION 1.9.8 # [.[.[.]]] LANGUAGES CXX) message(STATUS "JsonCpp Version: ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") -set(PROJECT_SOVERSION 27) +set(PROJECT_SOVERSION 28) include(${CMAKE_CURRENT_SOURCE_DIR}/include/PreventInSourceBuilds.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/include/PreventInBuildInstalls.cmake) diff --git a/MODULE.bazel b/MODULE.bazel index e60fa06d1..e79078a4e 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -9,7 +9,7 @@ module( # 3. /CMakeLists.txt # 4. /MODULE.bazel # IMPORTANT: also update the SOVERSION!! - version = "1.9.7", + version = "1.9.8", compatibility_level = 1, ) diff --git a/include/json/version.h b/include/json/version.h index 555152c8c..1579c7807 100644 --- a/include/json/version.h +++ b/include/json/version.h @@ -10,11 +10,10 @@ // 4. /MODULE.bazel // IMPORTANT: also update the SOVERSION!! -#define JSONCPP_VERSION_STRING "1.9.7" +#define JSONCPP_VERSION_STRING "1.9.8" #define JSONCPP_VERSION_MAJOR 1 #define JSONCPP_VERSION_MINOR 9 -#define JSONCPP_VERSION_PATCH 7 -#define JSONCPP_VERSION_QUALIFIER +#define JSONCPP_VERSION_PATCH 8 #define JSONCPP_VERSION_HEXA \ ((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) | \ (JSONCPP_VERSION_PATCH << 8)) diff --git a/meson.build b/meson.build index 2648c3071..efcbaa43b 100644 --- a/meson.build +++ b/meson.build @@ -10,7 +10,7 @@ project( # 3. /CMakeLists.txt # 4. /MODULE.bazel # IMPORTANT: also update the SOVERSION!! - version : '1.9.7', + version : '1.9.8', default_options : [ 'buildtype=release', 'cpp_std=c++11', @@ -51,7 +51,7 @@ jsoncpp_lib = library( 'src/lib_json/json_value.cpp', 'src/lib_json/json_writer.cpp', ]), - soversion : 27, + soversion : 28, install : true, include_directories : jsoncpp_include_directories, cpp_args: dll_export_flag) diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp index fbb1eb532..5d5b971f8 100644 --- a/src/test_lib_json/main.cpp +++ b/src/test_lib_json/main.cpp @@ -4113,17 +4113,10 @@ JSONTEST_FIXTURE_LOCAL(MemberTemplateIs, BehavesSameAsNamedIs) { class VersionTest : public JsonTest::TestCase {}; -#define JSONCPP_FORMAT_MACRO_(...) #__VA_ARGS__ -#define JSONCPP_FORMAT_MACRO(...) JSONCPP_FORMAT_MACRO_(__VA_ARGS__) - JSONTEST_FIXTURE_LOCAL(VersionTest, VersionNumbersMatch) { std::ostringstream vstr; vstr << JSONCPP_VERSION_MAJOR << '.' << JSONCPP_VERSION_MINOR << '.' << JSONCPP_VERSION_PATCH; - std::string qual = JSONCPP_FORMAT_MACRO(JSONCPP_VERSION_QUALIFIER); - if (!qual.empty()) { - vstr << '.' << qual; - } JSONTEST_ASSERT_EQUAL(vstr.str(), std::string(JSONCPP_VERSION_STRING)); }