Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ceres-solver for openSUSE:Factory 
checked in at 2026-03-02 17:41:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ceres-solver (Old)
 and      /work/SRC/openSUSE:Factory/.ceres-solver.new.29461 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ceres-solver"

Mon Mar  2 17:41:40 2026 rev:2 rq:1335799 version:2.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/ceres-solver/ceres-solver.changes        
2025-09-01 17:17:39.541591176 +0200
+++ /work/SRC/openSUSE:Factory/.ceres-solver.new.29461/ceres-solver.changes     
2026-03-02 17:41:56.807377091 +0100
@@ -1,0 +2,6 @@
+Wed Feb  4 17:38:31 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Add 0001-Raise-minimum-required-Eigen-version-to-3.3.4.patch,
+  0001-Support-Eigen3-5.0.0.patch
+
+-------------------------------------------------------------------

New:
----
  0001-Raise-minimum-required-Eigen-version-to-3.3.4.patch
  0001-Support-Eigen3-5.0.0.patch

----------(New B)----------
  New:
- Add 0001-Raise-minimum-required-Eigen-version-to-3.3.4.patch,
  0001-Support-Eigen3-5.0.0.patch
  New:- Add 0001-Raise-minimum-required-Eigen-version-to-3.3.4.patch,
  0001-Support-Eigen3-5.0.0.patch
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ceres-solver.spec ++++++
--- /var/tmp/diff_new_pack.kc4hrN/_old  2026-03-02 17:41:57.967425495 +0100
+++ /var/tmp/diff_new_pack.kc4hrN/_new  2026-03-02 17:41:57.975425829 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package ceres-solver
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -26,12 +26,14 @@
 URL:            http://ceres-solver.org/
 Source:         http://ceres-solver.org/%{name}-%{version}.tar.gz
 Patch0:         0001-Fix-CMAKE_MODULE_PATH-breakage-due-to-find_dependenc.patch
+Patch1:         0001-Raise-minimum-required-Eigen-version-to-3.3.4.patch
+Patch2:         0001-Support-Eigen3-5.0.0.patch
 BuildRequires:  cmake >= 3.16.0
 BuildRequires:  gcc-c++
 BuildRequires:  glog-devel >= 0.3.1
 BuildRequires:  memory-constraints
 BuildRequires:  suitesparse-devel >= 4.5.6
-BuildRequires:  pkgconfig(eigen3) >= 3.3.0
+BuildRequires:  pkgconfig(eigen3) >= 3.3.4
 
 %description
 Ceres Solver is a C++ library for modeling and solving large,

++++++ 0001-Raise-minimum-required-Eigen-version-to-3.3.4.patch ++++++
>From f0720aeb84ec7bb479fe3618b30fa54981baf8fd Mon Sep 17 00:00:00 2001
From: Sergiu Deitsch <[email protected]>
Date: Mon, 17 Feb 2025 22:07:39 +0100
Subject: [PATCH] Raise minimum required Eigen version to 3.3.4

Ubuntu 22.04 ships with Eigen 3.4.0. The MinGW workaround for -O3
related crashes has been available in Eigen since at least version
3.2.0, see 
https://gitlab.com/libeigen/eigen/-/commit/cc03c9d68354ea3fed03481de045c185ddc1fc49.

Change-Id: Iebfd6ed1fa55a6b0f5bd57bd920188e7b486d8cb
---
 CMakeLists.txt               | 22 +---------------------
 docs/source/installation.rst |  4 ++--
 2 files changed, 3 insertions(+), 23 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f53e9981..af932c6a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -234,17 +234,9 @@ unset(CERES_COMPILE_OPTIONS)
 
 # Eigen.
 # Eigen delivers Eigen3Config.cmake since v3.3.3
-find_package(Eigen3 3.3 REQUIRED)
+find_package(Eigen3 3.3.4 REQUIRED NO_MODULE)
 if (Eigen3_FOUND)
   message("-- Found Eigen version ${Eigen3_VERSION}: ${Eigen3_DIR}")
-  if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)" AND
-      Eigen3_VERSION VERSION_LESS 3.3.4)
-    # As per issue #289: 
https://github.com/ceres-solver/ceres-solver/issues/289
-    # the bundle_adjustment_test will fail for Eigen < 3.3.4 on aarch64.
-    message(FATAL_ERROR "-- Ceres requires Eigen version >= 3.3.4 on aarch64. "
-      "Detected version of Eigen is: ${Eigen3_VERSION}.")
-  endif()
-
   if (EIGENSPARSE)
     message("-- Enabling use of Eigen as a sparse linear algebra library.")
     list(APPEND CERES_COMPILE_OPTIONS CERES_USE_EIGEN_SPARSE)
@@ -545,18 +537,6 @@ else (NOT CMAKE_BUILD_TYPE)
   endif (CMAKE_BUILD_TYPE STREQUAL "Debug")
 endif (NOT CMAKE_BUILD_TYPE)
 
-if (MINGW)
-  # MinGW produces code that segfaults when performing matrix multiplications
-  # in Eigen when compiled with -O3 (see [1]), as such force the use of -O2
-  # which works.
-  #
-  # [1] http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556
-  message("-- MinGW detected, forcing -O2 instead of -O3 in Release for Eigen 
due "
-          "to a MinGW bug: http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556";)
-  string(REPLACE "-O3" "-O2" CMAKE_CXX_FLAGS_RELEASE 
"${CMAKE_CXX_FLAGS_RELEASE}")
-  update_cache_variable(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
-endif (MINGW)
-
 # After the tweaks for the compile settings, disable some warnings on MSVC.
 if (MSVC)
   # Insecure standard library functions
-- 
2.52.0


++++++ 0001-Support-Eigen3-5.0.0.patch ++++++
>From f9b7b6651b108136a16df44d91fb31735645f5a7 Mon Sep 17 00:00:00 2001
From: Sergiu Deitsch <[email protected]>
Date: Sun, 28 Sep 2025 08:35:06 +0200
Subject: [PATCH] Support Eigen3 5.0.0

Change-Id: I5cf476a6d8c090861f4ea4a254a35d39e36a6d68
---
 CMakeLists.txt                     | 27 ++++++++++++++++++++++++++-
 internal/ceres/covariance_impl.cc  |  5 +++++
 internal/ceres/invert_psd_matrix.h |  4 ++++
 3 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 754f069b..19ee2a86 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -232,9 +232,34 @@ endif (IOS)
 
 unset(CERES_COMPILE_OPTIONS)
 
+# We call find_package multiple time with different versioning scheme to 
support
+# both Eigen3 3.x and 5.x. If the first invocation fails and Eigen3_DIR was set
+# to a possible location, e.g., during cross-compilation, failure to locate the
+# package will unset the variable. To avoid losing the path hint, we save it 
and
+# reuse it in the second find_package call.
+set (_Ceres_Eigen3_DIR)
+
+if (Eigen3_DIR)
+  set (_Ceres_Eigen3_DIR "${Eigen3_DIR}")
+endif (Eigen3_DIR)
+
 # Eigen.
 # Eigen delivers Eigen3Config.cmake since v3.3.3
-find_package(Eigen3 3.3.4 REQUIRED NO_MODULE)
+find_package(Eigen3 3.3.4...5 NO_MODULE)
+
+if (NOT Eigen3_FOUND)
+  if (_Ceres_Eigen3_DIR)
+    set (Eigen3_DIR "${_Ceres_Eigen3_DIR}")
+  endif (_Ceres_Eigen3_DIR)
+  # Eigen3's CMake package config prior to 5.0.0 does not support version 
ranges
+  # with different major version components. To ensure backward compatibility,
+  # we locate the package using the previous version scheme as a fallback
+  # mechanism.
+  find_package(Eigen3 3.3.4 REQUIRED NO_MODULE)
+endif (NOT Eigen3_FOUND)
+
+unset (_Ceres_Eigen3_DIR)
+
 if (Eigen3_FOUND)
   message("-- Found Eigen version ${Eigen3_VERSION}: ${Eigen3_DIR}")
   if (EIGENSPARSE)
diff --git a/internal/ceres/covariance_impl.cc 
b/internal/ceres/covariance_impl.cc
index 56221945..930711fd 100644
--- a/internal/ceres/covariance_impl.cc
+++ b/internal/ceres/covariance_impl.cc
@@ -724,8 +724,13 @@ bool 
CovarianceImpl::ComputeCovarianceValuesUsingDenseSVD() {
   }
   event_logger.AddEvent("ConvertToDenseMatrix");
 
+#if EIGEN_VERSION_AT_LEAST(5, 0, 0)
+  Eigen::BDCSVD<Matrix, Eigen::ComputeThinU | Eigen::ComputeThinV> svd(
+      dense_jacobian);
+#else   // !EIGEN_VERSION_AT_LEAST(5, 0, 0)
   Eigen::BDCSVD<Matrix> svd(dense_jacobian,
                             Eigen::ComputeThinU | Eigen::ComputeThinV);
+#endif  // EIGEN_VERSION_AT_LEAST(5, 0, 0)
 
   event_logger.AddEvent("SingularValueDecomposition");
 
diff --git a/internal/ceres/invert_psd_matrix.h 
b/internal/ceres/invert_psd_matrix.h
index 21ba2dc8..dd3a0a34 100644
--- a/internal/ceres/invert_psd_matrix.h
+++ b/internal/ceres/invert_psd_matrix.h
@@ -67,7 +67,11 @@ typename EigenTypes<kSize, kSize>::Matrix InvertPSDMatrix(
 
   // For a thin SVD the number of columns of the matrix need to be dynamic.
   using SVDMType = typename EigenTypes<kSize, Eigen::Dynamic>::Matrix;
+#if EIGEN_VERSION_AT_LEAST(5, 0, 0)
+  Eigen::JacobiSVD<SVDMType, Eigen::ComputeThinU | Eigen::ComputeThinV> svd(m);
+#else   // !EIGEN_VERSION_AT_LEAST(5, 0, 0)
   Eigen::JacobiSVD<SVDMType> svd(m, Eigen::ComputeThinU | Eigen::ComputeThinV);
+#endif  // EIGEN_VERSION_AT_LEAST(5, 0, 0)
   return svd.solve(MType::Identity(size, size));
 }
 
-- 
2.52.0

Reply via email to