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
Very sorry about this and thanks for the analysis. I'll deal with this ASAP.
(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!