Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package jsoncpp for openSUSE:Factory checked in at 2026-06-27 18:02:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/jsoncpp (Old) and /work/SRC/openSUSE:Factory/.jsoncpp.new.11887 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jsoncpp" Sat Jun 27 18:02:34 2026 rev:33 rq:1361767 version:1.9.8 Changes: -------- --- /work/SRC/openSUSE:Factory/jsoncpp/jsoncpp.changes 2026-06-18 18:38:12.866999274 +0200 +++ /work/SRC/openSUSE:Factory/.jsoncpp.new.11887/jsoncpp.changes 2026-06-27 18:02:39.241038896 +0200 @@ -1,0 +2,17 @@ +Thu Jun 25 12:30:01 UTC 2026 - Martin Pluskal <[email protected]> + +- Add jsoncpp-i586-float-precision.patch to fix the + ValueTest/objects %%check failure (FTBFS) on i586: the test + stored 0.12345f and compared it exactly as a double, which x87 + 80-bit excess precision (no SSE2 in the i586 baseline) broke; + the patch compares the value narrowed back to float, which is + precision-robust on every architecture (the library itself was + always correct). Replaces the earlier, ineffective + -fexcess-precision=standard workaround. + +------------------------------------------------------------------- +Tue Jun 23 18:34:03 UTC 2026 - Arjen de Korte <[email protected]> + +- Switch back to meson build + +------------------------------------------------------------------- New: ---- jsoncpp-i586-float-precision.patch ----------(New B)---------- New: - Add jsoncpp-i586-float-precision.patch to fix the ValueTest/objects %%check failure (FTBFS) on i586: the test ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ jsoncpp.spec ++++++ --- /var/tmp/diff_new_pack.N2uJ84/_old 2026-06-27 18:02:40.261073352 +0200 +++ /var/tmp/diff_new_pack.N2uJ84/_new 2026-06-27 18:02:40.261073352 +0200 @@ -25,8 +25,12 @@ URL: https://github.com/open-source-parsers/jsoncpp Source0: https://github.com/open-source-parsers/%{name}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz Source99: baselibs.conf +# PATCH-FIX-UPSTREAM jsoncpp-i586-float-precision.patch gh#open-source-parsers/jsoncpp#1700 +# - make the ValueTest/objects float check robust against x87 excess precision (i586 FTBFS) +Patch0: jsoncpp-i586-float-precision.patch BuildRequires: cmake BuildRequires: gcc-c++ +BuildRequires: meson BuildRequires: pkgconfig BuildRequires: python3-base %{?suse_build_hwcaps_libs} @@ -66,16 +70,14 @@ format to store user input files. %prep -%autosetup +%autosetup -p1 %build -%cmake \ - -D CMAKE_BUILD_TYPE="Release" \ - -D BUILD_OBJECT_LIBS=OFF -%cmake_build +%meson --buildtype=release +%meson_build %install -%cmake_install +%meson_install pushd %{buildroot}%{_includedir}/json/ # From 1.9.1 to 1.9.2, features.h has been renamed json_features.h # so, create a symlink for compatibility @@ -86,14 +88,13 @@ popd %check -%ctest +%meson_test %ldconfig_scriptlets -n lib%{name}%{sover} %files -n lib%{name}%{sover} %license LICENSE %{_libdir}/lib%{name}.so.%{sover}* -%{_libdir}/lib%{name}.so.%{version} %files devel %license LICENSE @@ -102,10 +103,7 @@ %dir %{_libdir}/cmake %{_libdir}/pkgconfig/%{name}.pc %{_libdir}/cmake/%{name}/%{name}Config.cmake -%{_libdir}/cmake/%{name}/%{name}ConfigVersion.cmake %{_libdir}/cmake/%{name}/%{name}-namespaced-targets.cmake -%{_libdir}/cmake/%{name}/%{name}-targets.cmake -%{_libdir}/cmake/%{name}/%{name}-targets-release.cmake %{_libdir}/lib%{name}.so %{_includedir}/json/ ++++++ jsoncpp-i586-float-precision.patch ++++++ From: Martin Pluskal <[email protected]> Subject: Make ValueTest/objects float check robust against x87 excess precision ValueTest/objects stores the float literal 0.12345f into a Json::Value (widened to the stored double) and then asserts equality against the original 0.12345f. On i586, where GCC defaults to x87 (-mfpmath=387) with 80-bit excess precision and no SSE2 in the baseline, the round-trip yields the exact double 0.12345 rather than the float-widened 0.12345000356435776, so the exact double comparison fails (the library itself is correct). Compare the stored value narrowed back to float instead: both the expected literal and asFloat() collapse to the same float value on every architecture, so the test is precision-robust while still verifying the numeric round-trip. --- a/src/test_lib_json/main.cpp +++ b/src/test_lib_json/main.cpp @@ -352,7 +352,7 @@ const Json::Value* numericFound = object2_.findNumeric("numeric"); JSONTEST_ASSERT(numericFound != nullptr); - JSONTEST_ASSERT_EQUAL(0.12345f, *numericFound); + JSONTEST_ASSERT_EQUAL(0.12345f, numericFound->asFloat()); JSONTEST_ASSERT(object3_.findNumeric("numeric") == nullptr); const Json::Value* stringFound = object2_.findString("string");
