[packages/blender] - up to 5.2.2
baggins
baggins at pld-linux.org
Thu Oct 22 21:29:29 CEST 2026
commit e7b4dc905aec9bd5c3c6ca03a2c13bed7ec54e5c
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Thu Oct 22 21:29:17 2026 +0200
- up to 5.2.2
blender.spec | 16 ++++++++--
eigen3.patch | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 108 insertions(+), 3 deletions(-)
---
diff --git a/blender.spec b/blender.spec
index aaa7946..dcd6a02 100644
--- a/blender.spec
+++ b/blender.spec
@@ -16,12 +16,13 @@
Summary: 3D modeling, rendering, animation and game creation package
Summary(pl.UTF-8): Pakiet do tworzenia animacji 3D oraz gier
Name: blender
-Version: 5.0.0
-Release: 3
+Version: 5.2.2
+Release: 1
License: GPL v2+
Group: X11/Applications/Graphics
Source0: https://download.blender.org/source/%{name}-%{version}.tar.xz
-# Source0-md5: 3c064098e099ce62fe8404fcdb0ca30f
+# Source0-md5: 8fcb442090c29a4f12652dcd9d6ae1f8
+Patch0: eigen3.patch
URL: https://www.blender.org/
BuildRequires: OpenAL-devel
BuildRequires: OpenCOLLADA-devel
@@ -32,8 +33,16 @@ BuildRequires: OpenGL-devel
BuildRequires: OpenImageIO-devel
BuildRequires: OpenXR-devel
BuildRequires: SDL2-devel
+BuildRequires: SuiteSparse-AMD-devel
+BuildRequires: SuiteSparse-CAMD-devel
+BuildRequires: SuiteSparse-CCOLAMD-devel
+BuildRequires: SuiteSparse-CHOLMOD-devel
+BuildRequires: SuiteSparse-COLAMD-devel
+BuildRequires: SuiteSparse-SPQR-devel
BuildRequires: boost-devel >= 1.48
+BuildRequires: ceres-solver-devel
BuildRequires: cmake >= 3.10
+BuildRequires: eigen3
BuildRequires: embree-devel >= 4.4.0
BuildRequires: ffmpeg-devel >= 0.4.9-4.20080930.1
BuildRequires: fftw3-devel >= 3
@@ -106,6 +115,7 @@ Blender to darmowy i w pełni funkcjonalny pakiet do tworzenia animacji
%prep
%setup -q
+%patch -P0 -p1
%build
install -d build
diff --git a/eigen3.patch b/eigen3.patch
new file mode 100644
index 0000000..81c9a2b
--- /dev/null
+++ b/eigen3.patch
@@ -0,0 +1,95 @@
+diff --git a/intern/dualcon/intern/octree.cpp b/intern/dualcon/intern/octree.cpp
+index f735f6a7cd40..aac041848cc5 100644
+--- a/intern/dualcon/intern/octree.cpp
++++ b/intern/dualcon/intern/octree.cpp
+@@ -2183,8 +2183,12 @@ void Octree::countIntersection(Node *node, int height, int &nedge, int &ncell, i
+ /* from http://eigen.tuxfamily.org/bz/show_bug.cgi?id=257 */
+ static void pseudoInverse(const Eigen::Matrix3f &a, Eigen::Matrix3f &result, float tolerance)
+ {
++#if EIGEN_VERSION_AT_LEAST(5, 0, 0)
+ const int Options = Eigen::ComputeFullU | Eigen::ComputeFullV;
+ Eigen::JacobiSVD<Eigen::Matrix3f, Options> svd = a.jacobiSvd<Options>();
++#else
++ Eigen::JacobiSVD<Eigen::Matrix3f> svd = a.jacobiSvd(Eigen::ComputeFullU | Eigen::ComputeFullV);
++#endif
+
+ result = svd.matrixV() *
+ Eigen::Vector3f((svd.singularValues().array().abs() > tolerance)
+diff --git a/intern/libmv/libmv/multiview/euclidean_resection.cc b/intern/libmv/libmv/multiview/euclidean_resection.cc
+index 3dc8a3876a1d..7d20e9d5186e 100644
+--- a/intern/libmv/libmv/multiview/euclidean_resection.cc
++++ b/intern/libmv/libmv/multiview/euclidean_resection.cc
+@@ -107,7 +107,11 @@ void AbsoluteOrientation(const Mat3X& X, const Mat3X& Xp, Mat3* R, Vec3* t) {
+
+ // Find the unit quaternion q that maximizes qNq. It is the eigenvector
+ // corresponding to the lagest eigenvalue.
++#if EIGEN_VERSION_AT_LEAST(5, 0, 0)
+ Vec4 q = N.jacobiSvd<Eigen::ComputeFullU>().matrixU().col(0);
++#else
++ Vec4 q = N.jacobiSvd(Eigen::ComputeFullU).matrixU().col(0);
++#endif
+
+ // Retrieve the 3x3 rotation matrix.
+ Vec4 qq = q.array() * q.array();
+@@ -246,8 +246,14 @@ void EuclideanResectionAnsarDaniilidis(const Mat2X& x_camera,
+ }
+
+ int num_lambda = num_points + 1; // Dimension of the null space of M.
++#if EIGEN_VERSION_AT_LEAST(5, 0, 0)
+ Mat V = M.jacobiSvd<Eigen::ComputeFullV>().matrixV().block(
+ 0, num_m_rows, num_m_columns, num_lambda);
++#else
++ Mat V = M.jacobiSvd(Eigen::ComputeFullV)
++ .matrixV()
++ .block(0, num_m_rows, num_m_columns, num_lambda);
++#endif
+
+ // TODO(vess): The number of constraint equations in K (num_k_rows) must be
+ // (num_points + 1) * (num_points + 2)/2. This creates a performance issue
+@@ -303,8 +302,12 @@ void EuclideanResectionAnsarDaniilidis(const Mat2X& x_camera,
+ ++counter_k_row;
+ }
+ }
++#if EIGEN_VERSION_AT_LEAST(5, 0, 0)
+ Vec L_sq =
+ K.jacobiSvd<Eigen::ComputeFullV>().matrixV().col(num_k_columns - 1);
++#else
++ Vec L_sq = K.jacobiSvd(Eigen::ComputeFullV).matrixV().col(num_k_columns - 1);
++#endif
+
+ // Pivot on the largest element for numerical stability. Afterwards recover
+ // the sign of the lambda solution.
+diff --git a/intern/libmv/libmv/tracking/track_region.cc b/intern/libmv/libmv/tracking/track_region.cc
+index 620367a455b6..ec808ac9acb8 100644
+--- a/intern/libmv/libmv/tracking/track_region.cc
++++ b/intern/libmv/libmv/tracking/track_region.cc
+@@ -940,7 +940,11 @@ struct AffineWarp {
+ }
+
+ // TODO(keir): Check solution quality.
++#if EIGEN_VERSION_AT_LEAST(5, 0, 0)
+ Vec4 a = Q1.jacobiSvd<Eigen::ComputeThinU | Eigen::ComputeThinV>().solve(Q2);
++#else
++ Vec4 a = Q1.jacobiSvd(Eigen::ComputeThinU | Eigen::ComputeThinV).solve(Q2);
++#endif
+ parameters[2] = a[0];
+ parameters[3] = a[1];
+ parameters[4] = a[2];
+diff --git a/intern/slim/intern/slim.cpp b/intern/slim/intern/slim.cpp
+index fd0821d5a327..b42c5fd94c0c 100644
+--- a/intern/slim/intern/slim.cpp
++++ b/intern/slim/intern/slim.cpp
+@@ -208,8 +208,13 @@ static inline void polar_svd(const Eigen::PlainObjectBase<DerivedA> &A,
+ Eigen::PlainObjectBase<DerivedV> &V)
+ {
+ using namespace std;
++#if EIGEN_VERSION_AT_LEAST(5, 0, 0)
+ Eigen::JacobiSVD<DerivedA, Eigen::ComputeFullU | Eigen::ComputeFullV> svd;
+ svd.compute(A);
++#else
++ Eigen::JacobiSVD<DerivedA> svd;
++ svd.compute(A, Eigen::ComputeFullU | Eigen::ComputeFullV);
++#endif
+ U = svd.matrixU();
+ V = svd.matrixV();
+ S = svd.singularValues();
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/blender.git/commitdiff/e7b4dc905aec9bd5c3c6ca03a2c13bed7ec54e5c
More information about the pld-cvs-commit
mailing list