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
