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");

Reply via email to