Bug 2404135 - eigen3 was updated to 5.0.0 without coordination, causing many FTBFS issues
Summary: eigen3 was updated to 5.0.0 without coordination, causing many FTBFS issues
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: eigen3
Version: rawhide
Hardware: Unspecified
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Sandro Mani
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2025-10-15 09:52 UTC by Ben Beasley
Modified: 2025-10-15 12:56 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Ben Beasley 2025-10-15 09:52:00 UTC
The eigen3 package was updated to 5.0.0 in Rawhide without advance coordination, and many of the 65 packages that depend directly on it now fail to build from source.

This was a major-version upgrade with documented breaking changes, https://gitlab.com/libeigen/eigen/-/releases/5.0.0#breaking-changes. Even though this is a header-only library, so dependent packages do not have to be rebuilt, I think it should have been announced and coordinated ahead of time in accordance with the spirit of https://docs.fedoraproject.org/en-US/fesco/Updates_Policy/#_rawhide.

I tried an *ex post facto* impact check in https://copr.fedorainfracloud.org/coprs/music/eigen3/packages/, and I found the following kinds of issues.

CMake build system checks for version 3.x, rejects 5.x (intentionally or due to brittle/defective version-checking):

- ceres-solver
- gdl
- highfive
- krita
- mrchem
- openms
- pagmo2
- prusa-slicer
- step
- votca
- wivern

Build system fails to detect new include path (#include <Eigen/Something> fails without -I/usr/bin/eigen3, build system does not use pkgconf or similar):

- katago
- libsurvive
- luminance-hdr (I already fixed this one)
- phd2

Package is compiled as C++11, but Eigen3 5.x requires at least C++14:

- bcd
- guitarix
- python-python-fcl
- spectra

Other kinds of regressions:

- onnxruntime:

In file included from /usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/Core:25,
                 from /usr/include/eigen3/unsupported/Eigen/CXX11/Tensor:14,
                 from /builddir/build/BUILD/onnxruntime-1.20.1-build/onnxruntime-1.20.1/include/onnxruntime/core/common/eigen_common_wrapper.h:70,
                 from /builddir/build/BUILD/onnxruntime-1.20.1-build/onnxruntime-1.20.1/onnxruntime/core/common/threadpool.cc:22:
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:48:73: error: use of ‘std::hardware_destructive_interference_size’ [-Werror=interference-size]
   48 | #define EIGEN_ALIGN_TO_AVOID_FALSE_SHARING EIGEN_ALIGN_TO_BOUNDARY(std::hardware_destructive_interference_size)
      |                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:37:44: note: in definition of macro ‘EIGEN_ALIGN_TO_BOUNDARY’
   37 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n)
      |                                            ^
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/ThreadPool/EventCount.h:193:5: note: in expansion of macro ‘EIGEN_ALIGN_TO_AVOID_FALSE_SHARING’
  193 |     EIGEN_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<uint64_t> next{kStackMask};
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:48:73: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
   48 | #define EIGEN_ALIGN_TO_AVOID_FALSE_SHARING EIGEN_ALIGN_TO_BOUNDARY(std::hardware_destructive_interference_size)
      |                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:37:44: note: in definition of macro ‘EIGEN_ALIGN_TO_BOUNDARY’
   37 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n)
      |                                            ^
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/ThreadPool/EventCount.h:193:5: note: in expansion of macro ‘EIGEN_ALIGN_TO_AVOID_FALSE_SHARING’
  193 |     EIGEN_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<uint64_t> next{kStackMask};
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:48:73: note: if this use is part of a public ABI, change it to instead use a constant variable you define
   48 | #define EIGEN_ALIGN_TO_AVOID_FALSE_SHARING EIGEN_ALIGN_TO_BOUNDARY(std::hardware_destructive_interference_size)
      |                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:37:44: note: in definition of macro ‘EIGEN_ALIGN_TO_BOUNDARY’
   37 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n)
      |                                            ^
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/ThreadPool/EventCount.h:193:5: note: in expansion of macro ‘EIGEN_ALIGN_TO_AVOID_FALSE_SHARING’
  193 |     EIGEN_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<uint64_t> next{kStackMask};
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:48:73: note: the default value for the current CPU tuning is 64 bytes
   48 | #define EIGEN_ALIGN_TO_AVOID_FALSE_SHARING EIGEN_ALIGN_TO_BOUNDARY(std::hardware_destructive_interference_size)
      |                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:37:44: note: in definition of macro ‘EIGEN_ALIGN_TO_BOUNDARY’
   37 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n)
      |                                            ^
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/ThreadPool/EventCount.h:193:5: note: in expansion of macro ‘EIGEN_ALIGN_TO_AVOID_FALSE_SHARING’
  193 |     EIGEN_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<uint64_t> next{kStackMask};
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:48:73: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
   48 | #define EIGEN_ALIGN_TO_AVOID_FALSE_SHARING EIGEN_ALIGN_TO_BOUNDARY(std::hardware_destructive_interference_size)
      |                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:37:44: note: in definition of macro ‘EIGEN_ALIGN_TO_BOUNDARY’
   37 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n)
      |                                            ^
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/ThreadPool/EventCount.h:193:5: note: in expansion of macro ‘EIGEN_ALIGN_TO_AVOID_FALSE_SHARING’
  193 |     EIGEN_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<uint64_t> next{kStackMask};
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:48:73: error: use of ‘std::hardware_destructive_interference_size’ [-Werror=interference-size]
   48 | #define EIGEN_ALIGN_TO_AVOID_FALSE_SHARING EIGEN_ALIGN_TO_BOUNDARY(std::hardware_destructive_interference_size)
      |                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:37:44: note: in definition of macro ‘EIGEN_ALIGN_TO_BOUNDARY’
   37 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n)
      |                                            ^
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/ThreadPool/RunQueue.h:176:3: note: in expansion of macro ‘EIGEN_ALIGN_TO_AVOID_FALSE_SHARING’
  176 |   EIGEN_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<unsigned> front_;
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:48:73: error: use of ‘std::hardware_destructive_interference_size’ [-Werror=interference-size]
   48 | #define EIGEN_ALIGN_TO_AVOID_FALSE_SHARING EIGEN_ALIGN_TO_BOUNDARY(std::hardware_destructive_interference_size)
      |                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:37:44: note: in definition of macro ‘EIGEN_ALIGN_TO_BOUNDARY’
   37 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n)
      |                                            ^
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/ThreadPool/RunQueue.h:177:3: note: in expansion of macro ‘EIGEN_ALIGN_TO_AVOID_FALSE_SHARING’
  177 |   EIGEN_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<unsigned> back_;
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:48:73: error: use of ‘std::hardware_destructive_interference_size’ [-Werror=interference-size]
   48 | #define EIGEN_ALIGN_TO_AVOID_FALSE_SHARING EIGEN_ALIGN_TO_BOUNDARY(std::hardware_destructive_interference_size)
      |                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/util/ConfigureVectorization.h:37:44: note: in definition of macro ‘EIGEN_ALIGN_TO_BOUNDARY’
   37 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n)
      |                                            ^
/usr/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/ThreadPool/RunQueue.h:180:3: note: in expansion of macro ‘EIGEN_ALIGN_TO_AVOID_FALSE_SHARING’
  180 |   EIGEN_ALIGN_TO_AVOID_FALSE_SHARING Elem array_[kSize];
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- opencv, on i686 only:

In file included from /usr/include/eigen3/Eigen/Core:235,
                 from /builddir/build/BUILD/opencv-4.11.0-build/opencv-4.11.0/modules/core/include/opencv2/core/private.hpp:70,
                 from /builddir/build/BUILD/opencv-4.11.0-build/opencv-4.11.0/modules/core/src/precomp.hpp:59,
                 from /builddir/build/BUILD/opencv-4.11.0-build/opencv-4.11.0/redhat-linux-build/modules/core/mathfuncs_core.avx.cpp:2:
/usr/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h: In function ‘__m128i Eigen::internal::segment_mask_4x8(Eigen::Index, Eigen::Index)’:
/usr/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h:2837:10: error: ‘_mm_cvtsi64_si128’ was not declared in this scope; did you mean ‘_mm_cvtsi64_si32’?
 2837 |   return _mm_cvtsi64_si128(mask);
      |          ^~~~~~~~~~~~~~~~~
      |          _mm_cvtsi64_si32
/usr/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h: In function ‘__m128i Eigen::internal::segment_mask_8x8(Eigen::Index, Eigen::Index)’:
/usr/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h:2853:10: error: ‘_mm_cvtsi64_si128’ was not declared in this scope; did you mean ‘_mm_cvtsi64_si32’?
 2853 |   return _mm_cvtsi64_si128(mask);
      |          ^~~~~~~~~~~~~~~~~
      |          _mm_cvtsi64_si32

Pre-existing / unrelated FTBFS:

- avogadro2-libs
- calligra
- cloudcompare
- digikam
- dolfin
- gmsh
- kalzium
- kstars
- mrcpp
- pcl
- psi4

Some of the packages in the last list may also turn out to have problems with this update, once the pre-existing issues are resolved. It’s also possible that there may be a few packages that are impacted via indirect dependencies on eigen3.

Overall, I detected FTBFS regressions attributable to this update in 21 of 65 directly-dependent packages. Please consider filing bugs to make affected maintainers aware of these issues and/or opening PR’s to help fix them.

Reproducible: Always

Comment 1 Sandro Mani 2025-10-15 09:59:55 UTC
Very sorry about this and thanks for the analysis. I'll deal with this ASAP.

Comment 2 Ben Beasley 2025-10-15 10:07:02 UTC
(In reply to Sandro Mani from comment #1)
> Very sorry about this and thanks for the analysis. I'll deal with this ASAP.

Thank you!


Note You need to log in before you can comment on or make changes to this bug.