1 |
commit: 61c7536f66bd3a6a3347800226cd8dc969671116 |
2 |
Author: Sebastian Parborg <darkdefende <AT> gmail <DOT> com> |
3 |
AuthorDate: Wed Apr 28 01:08:31 2021 +0000 |
4 |
Commit: Sam James <sam <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Jun 10 00:19:21 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=61c7536f |
7 |
|
8 |
media-gfx/blender: Slot, bump to 2.93.0, and add live ebuild |
9 |
|
10 |
Closes: https://bugs.gentoo.org/795003 |
11 |
Closes: https://bugs.gentoo.org/778008 |
12 |
Closes: https://bugs.gentoo.org/774372 |
13 |
Closes: https://bugs.gentoo.org/673422 |
14 |
Closes: https://bugs.gentoo.org/737388 |
15 |
Signed-off-by: Sebastian Parborg <darkdefende <AT> gmail.com> |
16 |
Closes: https://github.com/gentoo/gentoo/pull/20565 |
17 |
Signed-off-by: Sam James <sam <AT> gentoo.org> |
18 |
|
19 |
media-gfx/blender/Manifest | 4 +- |
20 |
...ender-2.83.12.ebuild => blender-2.83.15.ebuild} | 192 +++++++++++------- |
21 |
...blender-2.91.2.ebuild => blender-2.93.0.ebuild} | 211 ++++++++++++-------- |
22 |
...{blender-2.83.12.ebuild => blender-9999.ebuild} | 203 ++++++++++++------- |
23 |
.../blender/files/blender-2.83.13-ffmpeg-4_4.patch | 27 +++ |
24 |
.../files/blender-2.83.6-constraints_test.patch | 13 ++ |
25 |
.../files/blender-2.83.6-fix_opevdb_abi.patch | 21 ++ |
26 |
.../blender-2.83.6-libmv_eigen_alignment.patch | 219 +++++++++++++++++++++ |
27 |
media-gfx/blender/metadata.xml | 23 +-- |
28 |
9 files changed, 675 insertions(+), 238 deletions(-) |
29 |
|
30 |
diff --git a/media-gfx/blender/Manifest b/media-gfx/blender/Manifest |
31 |
index 46f37a28858..a0063395f2e 100644 |
32 |
--- a/media-gfx/blender/Manifest |
33 |
+++ b/media-gfx/blender/Manifest |
34 |
@@ -1,2 +1,2 @@ |
35 |
-DIST blender-2.83.12.tar.xz 39132904 BLAKE2B 175e8c5ab9324421f23357bc367b2e70ee8c391130d376d6d53eefbf90529d09921395cd11e7b1709aaa4d24ec6f8df64050869e41bbe211229126db08f22089 SHA512 f313c92e311e852742e74934504fcd3ccd296bcea2499f605cef568e3c615ececd9d70dec5025e4d4ff19f03803c148a8b03a4b68b7ca978554f5b1122c9890b |
36 |
-DIST blender-2.91.2.tar.xz 42057100 BLAKE2B f10f838ad6d56135fddf9e9171473e1e589f511a38112845d650436a1eb4da94ea0777571dffc6446f4217dce647b087cf5a18841d7dde2086d187bb8f7d3654 SHA512 9a3bae01bd09b1d665af4882f53e8a88d85ff44678233c90788a7801ce0d551a3cc1f71026b71ea1c77d7eaedf7ab6fc8709104c22b564f4fc6cc0d5b3b76f5e |
37 |
+DIST blender-2.83.15.tar.xz 39125740 BLAKE2B 687097b45b76b474b1c172c9b8ccf5da1bfc24539d0db894d04c7837572b16c1f552757fd1482219d58afa56c573229878fb43bbecd95e3d61314f2ab05efafa SHA512 2836533691bae0a7942197e67232b396b892cd95c0f07ab561f7de8458b354fe4045453855585484dd533ae76588ea3888f880763b042a264fb813a43933fc25 |
38 |
+DIST blender-2.93.0.tar.xz 42967016 BLAKE2B 1e7b54f08415de8a8908a285ae35c1e18558bf7cab42c5c135323d10ac9a73ec69aa0addd536355a4d19262438a615e03f09dc123b697cbab484e33350bb5ee3 SHA512 660962e5368c8ff52ed095aba97d63c22aa8e2fdcb2042b1299b6d6edeb7eb1f702a9ee95ee7e47824681f9f48b971d2e32ec32cc6264165a4196b5f36c4a66d |
39 |
|
40 |
diff --git a/media-gfx/blender/blender-2.83.12.ebuild b/media-gfx/blender/blender-2.83.15.ebuild |
41 |
similarity index 57% |
42 |
copy from media-gfx/blender/blender-2.83.12.ebuild |
43 |
copy to media-gfx/blender/blender-2.83.15.ebuild |
44 |
index 44b4b4f8849..e9a3def3b11 100644 |
45 |
--- a/media-gfx/blender/blender-2.83.12.ebuild |
46 |
+++ b/media-gfx/blender/blender-2.83.15.ebuild |
47 |
@@ -3,25 +3,27 @@ |
48 |
|
49 |
EAPI=7 |
50 |
|
51 |
-PYTHON_COMPAT=( python3_{7,8} ) |
52 |
+PYTHON_COMPAT=( python3_{7,8,9} ) |
53 |
|
54 |
-inherit check-reqs cmake flag-o-matic pax-utils python-single-r1 \ |
55 |
+inherit check-reqs cmake flag-o-matic pax-utils python-single-r1 subversion \ |
56 |
toolchain-funcs xdg-utils |
57 |
|
58 |
DESCRIPTION="3D Creation/Animation/Publishing System" |
59 |
HOMEPAGE="https://www.blender.org" |
60 |
-SRC_URI="https://download.blender.org/source/${P}.tar.xz" |
61 |
- |
62 |
-# Blender can have letters in the version string, |
63 |
-# so strip off the letter if it exists. |
64 |
-MY_PV="$(ver_cut 1-2)" |
65 |
- |
66 |
-SLOT="0" |
67 |
-LICENSE="|| ( GPL-2 BL )" |
68 |
-KEYWORDS="amd64 ~x86" |
69 |
-IUSE="+bullet +dds +elbeem +openexr +system-python +system-numpy +tbb \ |
70 |
- abi6-compat abi7-compat alembic collada color-management cuda cycles \ |
71 |
- debug doc ffmpeg fftw headless jack jemalloc jpeg2k llvm \ |
72 |
+ |
73 |
+if [[ ${PV} = *9999* ]] ; then |
74 |
+ inherit git-r3 |
75 |
+ EGIT_REPO_URI="https://git.blender.org/blender.git" |
76 |
+else |
77 |
+ SRC_URI="https://download.blender.org/source/${P}.tar.xz" |
78 |
+ KEYWORDS="~amd64 ~x86" |
79 |
+fi |
80 |
+ |
81 |
+SLOT="${PV%.*}" |
82 |
+LICENSE="|| ( GPL-3 BL )" |
83 |
+IUSE="+bullet +dds +fluid +openexr +system-python +system-numpy +tbb \ |
84 |
+ alembic collada +color-management cuda cycles \ |
85 |
+ debug doc ffmpeg fftw headless jack jemalloc jpeg2k \ |
86 |
man ndof nls openal opencl openimageio openmp opensubdiv \ |
87 |
openvdb osl sdl sndfile standalone test tiff valgrind" |
88 |
RESTRICT="!test? ( test )" |
89 |
@@ -30,15 +32,15 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE} |
90 |
alembic? ( openexr ) |
91 |
cuda? ( cycles ) |
92 |
cycles? ( openexr tiff openimageio ) |
93 |
- elbeem? ( tbb ) |
94 |
+ fluid? ( tbb ) |
95 |
opencl? ( cycles ) |
96 |
- openvdb? ( |
97 |
- ^^ ( abi6-compat abi7-compat ) |
98 |
- tbb |
99 |
- ) |
100 |
- osl? ( cycles llvm ) |
101 |
- standalone? ( cycles )" |
102 |
+ openvdb? ( tbb ) |
103 |
+ osl? ( cycles ) |
104 |
+ standalone? ( cycles ) |
105 |
+ test? ( color-management osl )" |
106 |
|
107 |
+# Library versions for official builds can be found in the blender source directory in: |
108 |
+# build_files/build_environment/install_deps.sh |
109 |
RDEPEND="${PYTHON_DEPS} |
110 |
dev-libs/boost:=[nls?,threads(+)] |
111 |
dev-libs/lzo:2= |
112 |
@@ -57,9 +59,9 @@ RDEPEND="${PYTHON_DEPS} |
113 |
virtual/opengl |
114 |
alembic? ( >=media-gfx/alembic-1.7.12[boost(+),hdf(+)] ) |
115 |
collada? ( >=media-libs/opencollada-1.6.68 ) |
116 |
- color-management? ( media-libs/opencolorio ) |
117 |
+ color-management? ( <media-libs/opencolorio-2.0.0 ) |
118 |
cuda? ( dev-util/nvidia-cuda-toolkit:= ) |
119 |
- ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k?] ) |
120 |
+ ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k,vpx,vorbis,opus,xvid] ) |
121 |
fftw? ( sci-libs/fftw:3.0= ) |
122 |
!headless? ( |
123 |
x11-libs/libX11 |
124 |
@@ -69,7 +71,6 @@ RDEPEND="${PYTHON_DEPS} |
125 |
jack? ( virtual/jack ) |
126 |
jemalloc? ( dev-libs/jemalloc:= ) |
127 |
jpeg2k? ( media-libs/openjpeg:2= ) |
128 |
- llvm? ( sys-devel/llvm:= ) |
129 |
ndof? ( |
130 |
app-misc/spacenavd |
131 |
dev-libs/libspnav |
132 |
@@ -84,13 +85,14 @@ RDEPEND="${PYTHON_DEPS} |
133 |
) |
134 |
opensubdiv? ( >=media-libs/opensubdiv-3.4.0[cuda=,opencl=] ) |
135 |
openvdb? ( |
136 |
- ~media-gfx/openvdb-7.0.0[abi6-compat(-)?,abi7-compat(-)?] |
137 |
+ >=media-gfx/openvdb-7.0.0 |
138 |
dev-libs/c-blosc:= |
139 |
) |
140 |
- osl? ( media-libs/osl:= ) |
141 |
+ osl? ( <media-libs/osl-1.11.0 ) |
142 |
sdl? ( media-libs/libsdl2[sound,joystick] ) |
143 |
sndfile? ( media-libs/libsndfile ) |
144 |
tbb? ( dev-cpp/tbb ) |
145 |
+ test? ( dev-vcs/subversion ) |
146 |
tiff? ( media-libs/tiff ) |
147 |
valgrind? ( dev-util/valgrind ) |
148 |
" |
149 |
@@ -113,7 +115,12 @@ BDEPEND=" |
150 |
nls? ( sys-devel/gettext ) |
151 |
" |
152 |
|
153 |
-CMAKE_BUILD_TYPE="Release" |
154 |
+PATCHES=( |
155 |
+ "${FILESDIR}/blender-2.83.6-libmv_eigen_alignment.patch" |
156 |
+ "${FILESDIR}/blender-2.83.6-constraints_test.patch" |
157 |
+ "${FILESDIR}/blender-2.83.6-fix_opevdb_abi.patch" |
158 |
+ "${FILESDIR}/blender-2.83.13-ffmpeg-4_4.patch" |
159 |
+) |
160 |
|
161 |
blender_check_requirements() { |
162 |
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp |
163 |
@@ -123,6 +130,13 @@ blender_check_requirements() { |
164 |
fi |
165 |
} |
166 |
|
167 |
+blender_get_version() { |
168 |
+ # Get blender version from blender itself. |
169 |
+ BV=$(grep "BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d " " -f 3; assert) |
170 |
+ # Add period. |
171 |
+ BV=${BV:0:1}.${BV:1} |
172 |
+} |
173 |
+ |
174 |
pkg_pretend() { |
175 |
blender_check_requirements |
176 |
} |
177 |
@@ -132,41 +146,60 @@ pkg_setup() { |
178 |
python-single-r1_pkg_setup |
179 |
} |
180 |
|
181 |
+src_unpack() { |
182 |
+ if [[ ${PV} = *9999* ]] ; then |
183 |
+ TESTS_SVN_URL=https://svn.blender.org/svnroot/bf-blender/trunk/lib/tests |
184 |
+ git-r3_src_unpack |
185 |
+ else |
186 |
+ default |
187 |
+ TESTS_SVN_URL=https://svn.blender.org/svnroot/bf-blender/tags/blender-${SLOT}-release/lib/tests |
188 |
+ fi |
189 |
+ |
190 |
+ if use test; then |
191 |
+ subversion_fetch ${TESTS_SVN_URL} ../lib/tests |
192 |
+ fi |
193 |
+} |
194 |
+ |
195 |
src_prepare() { |
196 |
cmake_src_prepare |
197 |
|
198 |
- # we don't want static glew, but it's scattered across |
199 |
- # multiple files that differ from version to version |
200 |
- # !!!CHECK THIS SED ON EVERY VERSION BUMP!!! |
201 |
- local file |
202 |
- while IFS="" read -d $'\0' -r file ; do |
203 |
- sed -i -e '/-DGLEW_STATIC/d' "${file}" || die |
204 |
- done < <(find . -type f -name "CMakeLists.txt") |
205 |
+ blender_get_version |
206 |
|
207 |
# Disable MS Windows help generation. The variable doesn't do what it |
208 |
# it sounds like. |
209 |
sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \ |
210 |
-i doc/doxygen/Doxyfile || die |
211 |
+ |
212 |
+ # Prepare icons and .desktop files for slotting. |
213 |
+ sed -e "s|blender.svg|blender-${BV}.svg|" -i source/creator/CMakeLists.txt || die |
214 |
+ sed -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" -i source/creator/CMakeLists.txt || die |
215 |
+ sed -e "s|blender.desktop|blender-${BV}.desktop|" -i source/creator/CMakeLists.txt || die |
216 |
+ sed -e "s|blender-thumbnailer.py|blender-${BV}-thumbnailer.py|" -i source/creator/CMakeLists.txt || die |
217 |
+ |
218 |
+ sed -e "s|Name=Blender|Name=Blender ${PV}|" -i release/freedesktop/blender.desktop || die |
219 |
+ sed -e "s|Exec=blender|Exec=blender-${BV}|" -i release/freedesktop/blender.desktop || die |
220 |
+ sed -e "s|Icon=blender|Icon=blender-${BV}|" -i release/freedesktop/blender.desktop || die |
221 |
+ |
222 |
+ mv release/freedesktop/icons/scalable/apps/blender.svg release/freedesktop/icons/scalable/apps/blender-${BV}.svg || die |
223 |
+ mv release/freedesktop/icons/symbolic/apps/blender-symbolic.svg release/freedesktop/icons/symbolic/apps/blender-${BV}-symbolic.svg || die |
224 |
+ mv release/freedesktop/blender.desktop release/freedesktop/blender-${BV}.desktop || die |
225 |
+ mv release/bin/blender-thumbnailer.py release/bin/blender-${BV}-thumbnailer.py || die |
226 |
+ |
227 |
+ if use test; then |
228 |
+ # Without this the tests will try to use /usr/bin/blender and /usr/share/blender/ to run the tests. |
229 |
+ sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${ED}/usr/)|g" -i tests/CMakeLists.txt || die |
230 |
+ sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${ED}/usr/)|g" -i build_files/cmake/Modules/GTestTesting.cmake || die |
231 |
+ fi |
232 |
} |
233 |
|
234 |
src_configure() { |
235 |
- # FIX: forcing '-funsigned-char' fixes an anti-aliasing issue with menu |
236 |
- # shadows, see bug #276338 for reference |
237 |
- append-flags -funsigned-char |
238 |
+ # Without this the floating point math will differ when for example |
239 |
+ # "-march=native" is set. This will make automated tests fail and we will |
240 |
+ # not match the behaviour of some operators/modifiers with the official |
241 |
+ # builds. |
242 |
+ append-flags -ffp-contract=off |
243 |
append-lfs-flags |
244 |
|
245 |
- if use openvdb; then |
246 |
- local version |
247 |
- if use abi6-compat; then |
248 |
- version=6; |
249 |
- elif use abi7-compat; then |
250 |
- version=7; |
251 |
- else |
252 |
- die "Openvdb abi version not compatible" |
253 |
- fi |
254 |
- append-cppflags -DOPENVDB_ABI_VERSION_NUMBER=${version} |
255 |
- fi |
256 |
- |
257 |
local mycmakeargs=( |
258 |
-DBUILD_SHARED_LIBS=OFF |
259 |
-DPYTHON_INCLUDE_DIR="$(python_get_includedir)" |
260 |
@@ -197,11 +230,10 @@ src_configure() { |
261 |
-DWITH_INPUT_NDOF=$(usex ndof) |
262 |
-DWITH_INTERNATIONAL=$(usex nls) |
263 |
-DWITH_JACK=$(usex jack) |
264 |
- -DWITH_LLVM=$(usex llvm) |
265 |
-DWITH_MEM_JEMALLOC=$(usex jemalloc) |
266 |
-DWITH_MEM_VALGRIND=$(usex valgrind) |
267 |
- -DWITH_MOD_FLUID=$(usex elbeem) |
268 |
- -DWITH_MOD_OCEANSIM=$(usex fftw) |
269 |
+ -DWITH_MOD_FLUID=$(usex fluid) |
270 |
+ -DWITH_MOD_OCEANSIM=ON |
271 |
-DWITH_OPENAL=$(usex openal) |
272 |
-DWITH_OPENCOLLADA=$(usex collada) |
273 |
-DWITH_OPENCOLORIO=$(usex color-management) |
274 |
@@ -218,8 +250,13 @@ src_configure() { |
275 |
-DWITH_SYSTEM_GLEW=ON |
276 |
-DWITH_SYSTEM_LZO=ON |
277 |
-DWITH_TBB=$(usex tbb) |
278 |
- -DWITH_X11=$(usex !headless) |
279 |
+ -DWITH_USD=OFF |
280 |
) |
281 |
+ if ! use debug ; then |
282 |
+ append-flags -DNDEBUG |
283 |
+ else |
284 |
+ append-flags -DDEBUG |
285 |
+ fi |
286 |
cmake_src_configure |
287 |
} |
288 |
|
289 |
@@ -247,17 +284,27 @@ src_compile() { |
290 |
} |
291 |
|
292 |
src_test() { |
293 |
- if use test; then |
294 |
- einfo "Running Blender Unit Tests ..." |
295 |
- cd "${BUILD_DIR}"/bin/tests || die |
296 |
- local f |
297 |
- for f in *_test; do |
298 |
- ./"${f}" || die |
299 |
- done |
300 |
- fi |
301 |
+ # A lot of tests needs to have access to the installed data files. |
302 |
+ # So install them into the image directory now. |
303 |
+ cmake_src_install |
304 |
+ |
305 |
+ blender_get_version |
306 |
+ # Define custom blender data/script file paths not be able to find them otherwise during testing. |
307 |
+ # (Because the data is in the image directory and it will default to look in /usr/share) |
308 |
+ export BLENDER_SYSTEM_SCRIPTS=${ED}/usr/share/blender/${BV}/scripts |
309 |
+ export BLENDER_SYSTEM_DATAFILES=${ED}/usr/share/blender/${BV}/datafiles |
310 |
+ |
311 |
+ # NOTE: The 'modifiers' test will fail if opensubdiv was compiled with -march=native |
312 |
+ # This this is fixed in blender version 2.92 and up." |
313 |
+ cmake_src_test |
314 |
+ |
315 |
+ # Clean up the image directory for src_install |
316 |
+ rm -fr ${ED}/* || die |
317 |
} |
318 |
|
319 |
src_install() { |
320 |
+ blender_get_version |
321 |
+ |
322 |
# Pax mark blender for hardened support. |
323 |
pax-mark m "${BUILD_DIR}"/bin/blender |
324 |
|
325 |
@@ -280,8 +327,10 @@ src_install() { |
326 |
dodoc "${CMAKE_USE_DIR}"/release/text/readme.html |
327 |
rm -r "${ED}"/usr/share/doc/blender || die |
328 |
|
329 |
- python_fix_shebang "${ED}/usr/bin/blender-thumbnailer.py" |
330 |
- python_optimize "${ED}/usr/share/blender/${MY_PV}/scripts" |
331 |
+ python_fix_shebang "${ED}/usr/bin/blender-${BV}-thumbnailer.py" |
332 |
+ python_optimize "${ED}/usr/share/blender/${BV}/scripts" |
333 |
+ |
334 |
+ mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" |
335 |
} |
336 |
|
337 |
pkg_postinst() { |
338 |
@@ -292,7 +341,7 @@ pkg_postinst() { |
339 |
elog "It is recommended to change your blender temp directory" |
340 |
elog "from /tmp to /home/user/tmp or another tmp file under your" |
341 |
elog "home directory. This can be done by starting blender, then" |
342 |
- elog "dragging the main menu down do display all paths." |
343 |
+ elog "changing the 'Temporary Files' directory in Blender preferences." |
344 |
elog |
345 |
ewarn |
346 |
ewarn "This ebuild does not unbundle the massive amount of 3rd party" |
347 |
@@ -302,13 +351,12 @@ pkg_postinst() { |
348 |
ewarn " https://developer.blender.org/" |
349 |
ewarn |
350 |
|
351 |
- if use python_single_target_python3_8; then |
352 |
- elog "You've enabled python-3.8 support for blender, which is still experimental." |
353 |
- elog "If you experience breakages with e.g. plugins, please switch to" |
354 |
- elog "python_single_target_python3_7 instead." |
355 |
- elog "Bug: https://bugs.gentoo.org/737388" |
356 |
- elog |
357 |
- fi |
358 |
+ elog "You are building Blender with a newer python version than" |
359 |
+ elog "supported by this version upstream." |
360 |
+ elog "If you experience breakages with e.g. plugins, please download" |
361 |
+ elog "the official Blender LTS binary release instead." |
362 |
+ elog "Bug: https://bugs.gentoo.org/737388" |
363 |
+ elog |
364 |
|
365 |
xdg_icon_cache_update |
366 |
xdg_mimeinfo_database_update |
367 |
@@ -322,7 +370,7 @@ pkg_postrm() { |
368 |
|
369 |
ewarn "" |
370 |
ewarn "You may want to remove the following directory." |
371 |
- ewarn "~/.config/${PN}/${MY_PV}/cache/" |
372 |
+ ewarn "~/.config/${PN}/<blender version>/cache/" |
373 |
ewarn "It may contain extra render kernels not tracked by portage" |
374 |
ewarn "" |
375 |
} |
376 |
|
377 |
diff --git a/media-gfx/blender/blender-2.91.2.ebuild b/media-gfx/blender/blender-2.93.0.ebuild |
378 |
similarity index 56% |
379 |
rename from media-gfx/blender/blender-2.91.2.ebuild |
380 |
rename to media-gfx/blender/blender-2.93.0.ebuild |
381 |
index 6faddf5b016..1cbc831157b 100644 |
382 |
--- a/media-gfx/blender/blender-2.91.2.ebuild |
383 |
+++ b/media-gfx/blender/blender-2.93.0.ebuild |
384 |
@@ -3,53 +3,51 @@ |
385 |
|
386 |
EAPI=7 |
387 |
|
388 |
-PYTHON_COMPAT=( python3_{7,8} ) |
389 |
+PYTHON_COMPAT=( python3_9 ) |
390 |
|
391 |
-inherit check-reqs cmake flag-o-matic pax-utils python-single-r1 \ |
392 |
+inherit check-reqs cmake flag-o-matic pax-utils python-single-r1 subversion \ |
393 |
toolchain-funcs xdg-utils |
394 |
|
395 |
DESCRIPTION="3D Creation/Animation/Publishing System" |
396 |
HOMEPAGE="https://www.blender.org" |
397 |
-SRC_URI="https://download.blender.org/source/${P}.tar.xz" |
398 |
- |
399 |
-# Blender can have letters in the version string, |
400 |
-# so strip off the letter if it exists. |
401 |
-MY_PV="$(ver_cut 1-2)" |
402 |
- |
403 |
-SLOT="0" |
404 |
-LICENSE="|| ( GPL-2 BL )" |
405 |
-KEYWORDS="~amd64 ~arm ~arm64 ~x86" |
406 |
-IUSE="+bullet +dds +elbeem +openexr +system-python +system-numpy +tbb \ |
407 |
- abi6-compat abi7-compat alembic collada color-management cuda cycles \ |
408 |
- debug doc ffmpeg fftw headless jack jemalloc jpeg2k llvm \ |
409 |
- man ndof nls openal opencl openimageio openmp opensubdiv \ |
410 |
- openvdb osl sdl sndfile standalone test tiff valgrind" |
411 |
+ |
412 |
+if [[ ${PV} = *9999* ]] ; then |
413 |
+ inherit git-r3 |
414 |
+ EGIT_REPO_URI="https://git.blender.org/blender.git" |
415 |
+else |
416 |
+ SRC_URI="https://download.blender.org/source/${P}.tar.xz" |
417 |
+ KEYWORDS="~amd64" |
418 |
+fi |
419 |
+ |
420 |
+SLOT="${PV%.*}" |
421 |
+LICENSE="|| ( GPL-3 BL )" |
422 |
+IUSE="+bullet +dds +fluid +openexr +system-python +system-numpy +tbb \ |
423 |
+ alembic collada +color-management cuda +cycles \ |
424 |
+ debug doc +embree +ffmpeg +fftw +gmp headless jack jemalloc jpeg2k \ |
425 |
+ man ndof nls openal opencl +oidn +openimageio +openmp +opensubdiv \ |
426 |
+ +openvdb +osl +pdf +potrace +pugixml pulseaudio sdl +sndfile standalone test +tiff valgrind" |
427 |
RESTRICT="!test? ( test )" |
428 |
|
429 |
REQUIRED_USE="${PYTHON_REQUIRED_USE} |
430 |
alembic? ( openexr ) |
431 |
cuda? ( cycles ) |
432 |
- cycles? ( openexr tbb tiff openimageio ) |
433 |
- elbeem? ( tbb ) |
434 |
+ cycles? ( openexr tiff openimageio ) |
435 |
+ fluid? ( tbb ) |
436 |
opencl? ( cycles ) |
437 |
- openvdb? ( |
438 |
- ^^ ( abi6-compat abi7-compat ) |
439 |
- tbb |
440 |
- ) |
441 |
- osl? ( cycles llvm ) |
442 |
- standalone? ( cycles )" |
443 |
+ openvdb? ( tbb ) |
444 |
+ osl? ( cycles ) |
445 |
+ standalone? ( cycles ) |
446 |
+ test? ( color-management )" |
447 |
|
448 |
+# Library versions for official builds can be found in the blender source directory in: |
449 |
+# build_files/build_environment/install_deps.sh |
450 |
RDEPEND="${PYTHON_DEPS} |
451 |
dev-libs/boost:=[nls?,threads(+)] |
452 |
- dev-libs/gmp |
453 |
- dev-libs/pugixml |
454 |
dev-libs/lzo:2= |
455 |
$(python_gen_cond_dep ' |
456 |
dev-python/numpy[${PYTHON_USEDEP}] |
457 |
dev-python/requests[${PYTHON_USEDEP}] |
458 |
') |
459 |
- media-gfx/potrace |
460 |
- media-libs/fontconfig:= |
461 |
media-libs/freetype:= |
462 |
media-libs/glew:* |
463 |
media-libs/libpng:= |
464 |
@@ -61,11 +59,12 @@ RDEPEND="${PYTHON_DEPS} |
465 |
virtual/opengl |
466 |
alembic? ( >=media-gfx/alembic-1.7.12[boost(+),hdf(+)] ) |
467 |
collada? ( >=media-libs/opencollada-1.6.68 ) |
468 |
- color-management? ( media-libs/opencolorio ) |
469 |
+ color-management? ( >=media-libs/opencolorio-2.0.0 ) |
470 |
cuda? ( dev-util/nvidia-cuda-toolkit:= ) |
471 |
- cycles? ( media-libs/freeglut ) |
472 |
- ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k?] ) |
473 |
+ embree? ( >=media-libs/embree-3.10.0[raymask] ) |
474 |
+ ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k,vpx,vorbis,opus,xvid] ) |
475 |
fftw? ( sci-libs/fftw:3.0= ) |
476 |
+ gmp? ( dev-libs/gmp ) |
477 |
!headless? ( |
478 |
x11-libs/libX11 |
479 |
x11-libs/libXi |
480 |
@@ -74,7 +73,6 @@ RDEPEND="${PYTHON_DEPS} |
481 |
jack? ( virtual/jack ) |
482 |
jemalloc? ( dev-libs/jemalloc:= ) |
483 |
jpeg2k? ( media-libs/openjpeg:2= ) |
484 |
- llvm? ( sys-devel/llvm:= ) |
485 |
ndof? ( |
486 |
app-misc/spacenavd |
487 |
dev-libs/libspnav |
488 |
@@ -82,6 +80,7 @@ RDEPEND="${PYTHON_DEPS} |
489 |
nls? ( virtual/libiconv ) |
490 |
openal? ( media-libs/openal ) |
491 |
opencl? ( virtual/opencl ) |
492 |
+ oidn? ( >=media-libs/oidn-1.3.0 ) |
493 |
openimageio? ( >=media-libs/openimageio-2.2.13.1:= ) |
494 |
openexr? ( |
495 |
media-libs/ilmbase:= |
496 |
@@ -89,13 +88,18 @@ RDEPEND="${PYTHON_DEPS} |
497 |
) |
498 |
opensubdiv? ( >=media-libs/opensubdiv-3.4.0[cuda=,opencl=] ) |
499 |
openvdb? ( |
500 |
- ~media-gfx/openvdb-7.0.0[abi6-compat(-)?,abi7-compat(-)?] |
501 |
+ >=media-gfx/openvdb-7.1.0 |
502 |
dev-libs/c-blosc:= |
503 |
) |
504 |
- osl? ( media-libs/osl:= ) |
505 |
+ osl? ( >=media-libs/osl-1.11.10.0 ) |
506 |
+ pdf? ( media-libs/libharu ) |
507 |
+ potrace? ( media-gfx/potrace ) |
508 |
+ pugixml? ( dev-libs/pugixml ) |
509 |
+ pulseaudio? ( media-sound/pulseaudio ) |
510 |
sdl? ( media-libs/libsdl2[sound,joystick] ) |
511 |
sndfile? ( media-libs/libsndfile ) |
512 |
tbb? ( dev-cpp/tbb ) |
513 |
+ test? ( dev-vcs/subversion ) |
514 |
tiff? ( media-libs/tiff ) |
515 |
valgrind? ( dev-util/valgrind ) |
516 |
" |
517 |
@@ -118,8 +122,6 @@ BDEPEND=" |
518 |
nls? ( sys-devel/gettext ) |
519 |
" |
520 |
|
521 |
-CMAKE_BUILD_TYPE="Release" |
522 |
- |
523 |
blender_check_requirements() { |
524 |
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp |
525 |
|
526 |
@@ -128,6 +130,18 @@ blender_check_requirements() { |
527 |
fi |
528 |
} |
529 |
|
530 |
+blender_get_version() { |
531 |
+ # Get blender version from blender itself. |
532 |
+ BV=$(grep "BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d " " -f 3; assert) |
533 |
+ if ((${BV:0:1} < 3)) ; then |
534 |
+ # Add period (290 -> 2.90). |
535 |
+ BV=${BV:0:1}.${BV:1} |
536 |
+ else |
537 |
+ # Add period and strip last number (300 -> 3.0) |
538 |
+ BV=${BV:0:1}.${BV:1:1} |
539 |
+ fi |
540 |
+} |
541 |
+ |
542 |
pkg_pretend() { |
543 |
blender_check_requirements |
544 |
} |
545 |
@@ -137,41 +151,55 @@ pkg_setup() { |
546 |
python-single-r1_pkg_setup |
547 |
} |
548 |
|
549 |
+src_unpack() { |
550 |
+ if [[ ${PV} = *9999* ]] ; then |
551 |
+ TESTS_SVN_URL=https://svn.blender.org/svnroot/bf-blender/trunk/lib/tests |
552 |
+ git-r3_src_unpack |
553 |
+ else |
554 |
+ default |
555 |
+ TESTS_SVN_URL=https://svn.blender.org/svnroot/bf-blender/tags/blender-${SLOT}-release/lib/tests |
556 |
+ fi |
557 |
+ |
558 |
+ if use test; then |
559 |
+ subversion_fetch ${TESTS_SVN_URL} ../lib/tests |
560 |
+ fi |
561 |
+} |
562 |
+ |
563 |
src_prepare() { |
564 |
cmake_src_prepare |
565 |
|
566 |
- # we don't want static glew, but it's scattered across |
567 |
- # multiple files that differ from version to version |
568 |
- # !!!CHECK THIS SED ON EVERY VERSION BUMP!!! |
569 |
- local file |
570 |
- while IFS="" read -d $'\0' -r file ; do |
571 |
- sed -i -e '/-DGLEW_STATIC/d' "${file}" || die |
572 |
- done < <(find . -type f -name "CMakeLists.txt") |
573 |
+ blender_get_version |
574 |
|
575 |
# Disable MS Windows help generation. The variable doesn't do what it |
576 |
# it sounds like. |
577 |
sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \ |
578 |
-i doc/doxygen/Doxyfile || die |
579 |
+ |
580 |
+ # Prepare icons and .desktop files for slotting. |
581 |
+ sed -e "s|blender.svg|blender-${BV}.svg|" -i source/creator/CMakeLists.txt || die |
582 |
+ sed -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" -i source/creator/CMakeLists.txt || die |
583 |
+ sed -e "s|blender.desktop|blender-${BV}.desktop|" -i source/creator/CMakeLists.txt || die |
584 |
+ sed -e "s|blender-thumbnailer.py|blender-${BV}-thumbnailer.py|" -i source/creator/CMakeLists.txt || die |
585 |
+ |
586 |
+ sed -e "s|Name=Blender|Name=Blender ${PV}|" -i release/freedesktop/blender.desktop || die |
587 |
+ sed -e "s|Exec=blender|Exec=blender-${BV}|" -i release/freedesktop/blender.desktop || die |
588 |
+ sed -e "s|Icon=blender|Icon=blender-${BV}|" -i release/freedesktop/blender.desktop || die |
589 |
+ |
590 |
+ mv release/freedesktop/icons/scalable/apps/blender.svg release/freedesktop/icons/scalable/apps/blender-${BV}.svg || die |
591 |
+ mv release/freedesktop/icons/symbolic/apps/blender-symbolic.svg release/freedesktop/icons/symbolic/apps/blender-${BV}-symbolic.svg || die |
592 |
+ mv release/freedesktop/blender.desktop release/freedesktop/blender-${BV}.desktop || die |
593 |
+ mv release/bin/blender-thumbnailer.py release/bin/blender-${BV}-thumbnailer.py || die |
594 |
+ |
595 |
+ if use test; then |
596 |
+ # Without this the tests will try to use /usr/bin/blender and /usr/share/blender/ to run the tests. |
597 |
+ sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${ED}/usr/)|g" -i tests/CMakeLists.txt || die |
598 |
+ sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${ED}/usr/)|g" -i build_files/cmake/Modules/GTestTesting.cmake || die |
599 |
+ fi |
600 |
} |
601 |
|
602 |
src_configure() { |
603 |
- # FIX: forcing '-funsigned-char' fixes an anti-aliasing issue with menu |
604 |
- # shadows, see bug #276338 for reference |
605 |
- append-flags -funsigned-char |
606 |
append-lfs-flags |
607 |
|
608 |
- if use openvdb; then |
609 |
- local version |
610 |
- if use abi6-compat; then |
611 |
- version=6; |
612 |
- elif use abi7-compat; then |
613 |
- version=7; |
614 |
- else |
615 |
- die "Openvdb abi version not compatible" |
616 |
- fi |
617 |
- append-cppflags -DOPENVDB_ABI_VERSION_NUMBER=${version} |
618 |
- fi |
619 |
- |
620 |
local mycmakeargs=( |
621 |
-DBUILD_SHARED_LIBS=OFF |
622 |
-DPYTHON_INCLUDE_DIR="$(python_get_includedir)" |
623 |
@@ -184,17 +212,18 @@ src_configure() { |
624 |
-DWITH_CODEC_FFMPEG=$(usex ffmpeg) |
625 |
-DWITH_CODEC_SNDFILE=$(usex sndfile) |
626 |
-DWITH_CXX_GUARDEDALLOC=$(usex debug) |
627 |
- -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda TRUE FALSE) |
628 |
-DWITH_CYCLES=$(usex cycles) |
629 |
+ -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda TRUE FALSE) |
630 |
-DWITH_CYCLES_DEVICE_OPENCL=$(usex opencl) |
631 |
- -DWITH_CYCLES_EMBREE=OFF |
632 |
+ -DWITH_CYCLES_EMBREE=$(usex embree) |
633 |
+ -DWITH_CYCLES_OSL=$(usex osl) |
634 |
-DWITH_CYCLES_STANDALONE=$(usex standalone) |
635 |
-DWITH_CYCLES_STANDALONE_GUI=$(usex standalone) |
636 |
- -DWITH_CYCLES_OSL=$(usex osl) |
637 |
-DWITH_DOC_MANPAGE=$(usex man) |
638 |
-DWITH_FFTW3=$(usex fftw) |
639 |
- -DWITH_GHOST_X11=$(usex !headless) |
640 |
+ -DWITH_GMP=$(usex gmp) |
641 |
-DWITH_GTESTS=$(usex test) |
642 |
+ -DWITH_HARU=$(usex pdf) |
643 |
-DWITH_HEADLESS=$(usex headless) |
644 |
-DWITH_INSTALL_PORTABLE=OFF |
645 |
-DWITH_IMAGE_DDS=$(usex dds) |
646 |
@@ -204,19 +233,23 @@ src_configure() { |
647 |
-DWITH_INPUT_NDOF=$(usex ndof) |
648 |
-DWITH_INTERNATIONAL=$(usex nls) |
649 |
-DWITH_JACK=$(usex jack) |
650 |
- -DWITH_LLVM=$(usex llvm) |
651 |
-DWITH_MEM_JEMALLOC=$(usex jemalloc) |
652 |
-DWITH_MEM_VALGRIND=$(usex valgrind) |
653 |
- -DWITH_MOD_FLUID=$(usex elbeem) |
654 |
- -DWITH_MOD_OCEANSIM=$(usex fftw) |
655 |
+ -DWITH_MOD_FLUID=$(usex fluid) |
656 |
+ -DWITH_MOD_OCEANSIM=ON |
657 |
+ -DWITH_NANOVDB=OFF |
658 |
-DWITH_OPENAL=$(usex openal) |
659 |
-DWITH_OPENCOLLADA=$(usex collada) |
660 |
-DWITH_OPENCOLORIO=$(usex color-management) |
661 |
+ -DWITH_OPENIMAGEDENOISE=$(usex oidn) |
662 |
-DWITH_OPENIMAGEIO=$(usex openimageio) |
663 |
-DWITH_OPENMP=$(usex openmp) |
664 |
-DWITH_OPENSUBDIV=$(usex opensubdiv) |
665 |
-DWITH_OPENVDB=$(usex openvdb) |
666 |
-DWITH_OPENVDB_BLOSC=$(usex openvdb) |
667 |
+ -DWITH_POTRACE=$(usex potrace) |
668 |
+ -DWITH_PUGIXML=$(usex pugixml) |
669 |
+ -DWITH_PULSEAUDIO=$(usex pulseaudio) |
670 |
-DWITH_PYTHON_INSTALL=$(usex system-python OFF ON) |
671 |
-DWITH_PYTHON_INSTALL_NUMPY=$(usex system-numpy OFF ON) |
672 |
-DWITH_SDL=$(usex sdl) |
673 |
@@ -225,7 +258,14 @@ src_configure() { |
674 |
-DWITH_SYSTEM_GLEW=ON |
675 |
-DWITH_SYSTEM_LZO=ON |
676 |
-DWITH_TBB=$(usex tbb) |
677 |
+ -DWITH_USD=OFF |
678 |
+ -DWITH_XR_OPENXR=OFF |
679 |
) |
680 |
+ if ! use debug ; then |
681 |
+ append-flags -DNDEBUG |
682 |
+ else |
683 |
+ append-flags -DDEBUG |
684 |
+ fi |
685 |
cmake_src_configure |
686 |
} |
687 |
|
688 |
@@ -253,17 +293,25 @@ src_compile() { |
689 |
} |
690 |
|
691 |
src_test() { |
692 |
- if use test; then |
693 |
- einfo "Running Blender Unit Tests ..." |
694 |
- cd "${BUILD_DIR}"/bin/tests || die |
695 |
- local f |
696 |
- for f in *_test; do |
697 |
- ./"${f}" || die |
698 |
- done |
699 |
- fi |
700 |
+ # A lot of tests needs to have access to the installed data files. |
701 |
+ # So install them into the image directory now. |
702 |
+ cmake_src_install |
703 |
+ |
704 |
+ blender_get_version |
705 |
+ # Define custom blender data/script file paths not be able to find them otherwise during testing. |
706 |
+ # (Because the data is in the image directory and it will default to look in /usr/share) |
707 |
+ export BLENDER_SYSTEM_SCRIPTS=${ED}/usr/share/blender/${BV}/scripts |
708 |
+ export BLENDER_SYSTEM_DATAFILES=${ED}/usr/share/blender/${BV}/datafiles |
709 |
+ |
710 |
+ cmake_src_test |
711 |
+ |
712 |
+ # Clean up the image directory for src_install |
713 |
+ rm -fr ${ED}/* || die |
714 |
} |
715 |
|
716 |
src_install() { |
717 |
+ blender_get_version |
718 |
+ |
719 |
# Pax mark blender for hardened support. |
720 |
pax-mark m "${BUILD_DIR}"/bin/blender |
721 |
|
722 |
@@ -286,8 +334,10 @@ src_install() { |
723 |
dodoc "${CMAKE_USE_DIR}"/release/text/readme.html |
724 |
rm -r "${ED}"/usr/share/doc/blender || die |
725 |
|
726 |
- python_fix_shebang "${ED}/usr/bin/blender-thumbnailer.py" |
727 |
- python_optimize "${ED}/usr/share/blender/${MY_PV}/scripts" |
728 |
+ python_fix_shebang "${ED}/usr/bin/blender-${BV}-thumbnailer.py" |
729 |
+ python_optimize "${ED}/usr/share/blender/${BV}/scripts" |
730 |
+ |
731 |
+ mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" |
732 |
} |
733 |
|
734 |
pkg_postinst() { |
735 |
@@ -298,7 +348,7 @@ pkg_postinst() { |
736 |
elog "It is recommended to change your blender temp directory" |
737 |
elog "from /tmp to /home/user/tmp or another tmp file under your" |
738 |
elog "home directory. This can be done by starting blender, then" |
739 |
- elog "dragging the main menu down do display all paths." |
740 |
+ elog "changing the 'Temporary Files' directory in Blender preferences." |
741 |
elog |
742 |
ewarn |
743 |
ewarn "This ebuild does not unbundle the massive amount of 3rd party" |
744 |
@@ -308,10 +358,11 @@ pkg_postinst() { |
745 |
ewarn " https://developer.blender.org/" |
746 |
ewarn |
747 |
|
748 |
- if use python_single_target_python3_8; then |
749 |
- elog "You've enabled python-3.8 support for blender, which is still experimental." |
750 |
+ if ! use python_single_target_python3_9; then |
751 |
+ elog "You are building Blender with a newer python version than" |
752 |
+ elog "supported by this version upstream." |
753 |
elog "If you experience breakages with e.g. plugins, please switch to" |
754 |
- elog "python_single_target_python3_7 instead." |
755 |
+ elog "python_single_target_python3_9 instead." |
756 |
elog "Bug: https://bugs.gentoo.org/737388" |
757 |
elog |
758 |
fi |
759 |
@@ -328,7 +379,7 @@ pkg_postrm() { |
760 |
|
761 |
ewarn "" |
762 |
ewarn "You may want to remove the following directory." |
763 |
- ewarn "~/.config/${PN}/${MY_PV}/cache/" |
764 |
+ ewarn "~/.config/${PN}/<blender version>/cache/" |
765 |
ewarn "It may contain extra render kernels not tracked by portage" |
766 |
ewarn "" |
767 |
} |
768 |
|
769 |
diff --git a/media-gfx/blender/blender-2.83.12.ebuild b/media-gfx/blender/blender-9999.ebuild |
770 |
similarity index 56% |
771 |
rename from media-gfx/blender/blender-2.83.12.ebuild |
772 |
rename to media-gfx/blender/blender-9999.ebuild |
773 |
index 44b4b4f8849..a94519d2777 100644 |
774 |
--- a/media-gfx/blender/blender-2.83.12.ebuild |
775 |
+++ b/media-gfx/blender/blender-9999.ebuild |
776 |
@@ -3,42 +3,44 @@ |
777 |
|
778 |
EAPI=7 |
779 |
|
780 |
-PYTHON_COMPAT=( python3_{7,8} ) |
781 |
+PYTHON_COMPAT=( python3_9 ) |
782 |
|
783 |
-inherit check-reqs cmake flag-o-matic pax-utils python-single-r1 \ |
784 |
+inherit check-reqs cmake flag-o-matic pax-utils python-single-r1 subversion \ |
785 |
toolchain-funcs xdg-utils |
786 |
|
787 |
DESCRIPTION="3D Creation/Animation/Publishing System" |
788 |
HOMEPAGE="https://www.blender.org" |
789 |
-SRC_URI="https://download.blender.org/source/${P}.tar.xz" |
790 |
- |
791 |
-# Blender can have letters in the version string, |
792 |
-# so strip off the letter if it exists. |
793 |
-MY_PV="$(ver_cut 1-2)" |
794 |
- |
795 |
-SLOT="0" |
796 |
-LICENSE="|| ( GPL-2 BL )" |
797 |
-KEYWORDS="amd64 ~x86" |
798 |
-IUSE="+bullet +dds +elbeem +openexr +system-python +system-numpy +tbb \ |
799 |
- abi6-compat abi7-compat alembic collada color-management cuda cycles \ |
800 |
- debug doc ffmpeg fftw headless jack jemalloc jpeg2k llvm \ |
801 |
- man ndof nls openal opencl openimageio openmp opensubdiv \ |
802 |
- openvdb osl sdl sndfile standalone test tiff valgrind" |
803 |
+ |
804 |
+if [[ ${PV} = *9999* ]] ; then |
805 |
+ inherit git-r3 |
806 |
+ EGIT_REPO_URI="https://git.blender.org/blender.git" |
807 |
+else |
808 |
+ SRC_URI="https://download.blender.org/source/${P}.tar.xz" |
809 |
+ KEYWORDS="~amd64 ~x86" |
810 |
+fi |
811 |
+ |
812 |
+SLOT="${PV%.*}" |
813 |
+LICENSE="|| ( GPL-3 BL )" |
814 |
+IUSE="+bullet +dds +fluid +openexr +system-python +system-numpy +tbb \ |
815 |
+ alembic collada +color-management cuda +cycles \ |
816 |
+ debug doc +embree +ffmpeg +fftw +gmp headless jack jemalloc jpeg2k \ |
817 |
+ man ndof nls openal opencl +oidn +openimageio +openmp +opensubdiv \ |
818 |
+ +openvdb +osl +pdf +potrace +pugixml pulseaudio sdl +sndfile standalone test +tiff valgrind" |
819 |
RESTRICT="!test? ( test )" |
820 |
|
821 |
REQUIRED_USE="${PYTHON_REQUIRED_USE} |
822 |
alembic? ( openexr ) |
823 |
cuda? ( cycles ) |
824 |
cycles? ( openexr tiff openimageio ) |
825 |
- elbeem? ( tbb ) |
826 |
+ fluid? ( tbb ) |
827 |
opencl? ( cycles ) |
828 |
- openvdb? ( |
829 |
- ^^ ( abi6-compat abi7-compat ) |
830 |
- tbb |
831 |
- ) |
832 |
- osl? ( cycles llvm ) |
833 |
- standalone? ( cycles )" |
834 |
+ openvdb? ( tbb ) |
835 |
+ osl? ( cycles ) |
836 |
+ standalone? ( cycles ) |
837 |
+ test? ( color-management )" |
838 |
|
839 |
+# Library versions for official builds can be found in the blender source directory in: |
840 |
+# build_files/build_environment/install_deps.sh |
841 |
RDEPEND="${PYTHON_DEPS} |
842 |
dev-libs/boost:=[nls?,threads(+)] |
843 |
dev-libs/lzo:2= |
844 |
@@ -57,10 +59,12 @@ RDEPEND="${PYTHON_DEPS} |
845 |
virtual/opengl |
846 |
alembic? ( >=media-gfx/alembic-1.7.12[boost(+),hdf(+)] ) |
847 |
collada? ( >=media-libs/opencollada-1.6.68 ) |
848 |
- color-management? ( media-libs/opencolorio ) |
849 |
+ color-management? ( >=media-libs/opencolorio-2.0.0 ) |
850 |
cuda? ( dev-util/nvidia-cuda-toolkit:= ) |
851 |
- ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k?] ) |
852 |
+ embree? ( >=media-libs/embree-3.10.0[raymask] ) |
853 |
+ ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k,vpx,vorbis,opus,xvid] ) |
854 |
fftw? ( sci-libs/fftw:3.0= ) |
855 |
+ gmp? ( dev-libs/gmp ) |
856 |
!headless? ( |
857 |
x11-libs/libX11 |
858 |
x11-libs/libXi |
859 |
@@ -69,7 +73,6 @@ RDEPEND="${PYTHON_DEPS} |
860 |
jack? ( virtual/jack ) |
861 |
jemalloc? ( dev-libs/jemalloc:= ) |
862 |
jpeg2k? ( media-libs/openjpeg:2= ) |
863 |
- llvm? ( sys-devel/llvm:= ) |
864 |
ndof? ( |
865 |
app-misc/spacenavd |
866 |
dev-libs/libspnav |
867 |
@@ -77,6 +80,7 @@ RDEPEND="${PYTHON_DEPS} |
868 |
nls? ( virtual/libiconv ) |
869 |
openal? ( media-libs/openal ) |
870 |
opencl? ( virtual/opencl ) |
871 |
+ oidn? ( >=media-libs/oidn-1.3.0 ) |
872 |
openimageio? ( >=media-libs/openimageio-2.2.13.1:= ) |
873 |
openexr? ( |
874 |
media-libs/ilmbase:= |
875 |
@@ -84,13 +88,18 @@ RDEPEND="${PYTHON_DEPS} |
876 |
) |
877 |
opensubdiv? ( >=media-libs/opensubdiv-3.4.0[cuda=,opencl=] ) |
878 |
openvdb? ( |
879 |
- ~media-gfx/openvdb-7.0.0[abi6-compat(-)?,abi7-compat(-)?] |
880 |
+ >=media-gfx/openvdb-7.1.0 |
881 |
dev-libs/c-blosc:= |
882 |
) |
883 |
- osl? ( media-libs/osl:= ) |
884 |
+ osl? ( >=media-libs/osl-1.11.10.0 ) |
885 |
+ pdf? ( media-libs/libharu ) |
886 |
+ potrace? ( media-gfx/potrace ) |
887 |
+ pugixml? ( dev-libs/pugixml ) |
888 |
+ pulseaudio? ( media-sound/pulseaudio ) |
889 |
sdl? ( media-libs/libsdl2[sound,joystick] ) |
890 |
sndfile? ( media-libs/libsndfile ) |
891 |
tbb? ( dev-cpp/tbb ) |
892 |
+ test? ( dev-vcs/subversion ) |
893 |
tiff? ( media-libs/tiff ) |
894 |
valgrind? ( dev-util/valgrind ) |
895 |
" |
896 |
@@ -113,8 +122,6 @@ BDEPEND=" |
897 |
nls? ( sys-devel/gettext ) |
898 |
" |
899 |
|
900 |
-CMAKE_BUILD_TYPE="Release" |
901 |
- |
902 |
blender_check_requirements() { |
903 |
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp |
904 |
|
905 |
@@ -123,6 +130,18 @@ blender_check_requirements() { |
906 |
fi |
907 |
} |
908 |
|
909 |
+blender_get_version() { |
910 |
+ # Get blender version from blender itself. |
911 |
+ BV=$(grep "BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d " " -f 3; assert) |
912 |
+ if ((${BV:0:1} < 3)) ; then |
913 |
+ # Add period (290 -> 2.90). |
914 |
+ BV=${BV:0:1}.${BV:1} |
915 |
+ else |
916 |
+ # Add period and strip last number (300 -> 3.0) |
917 |
+ BV=${BV:0:1}.${BV:1:1} |
918 |
+ fi |
919 |
+} |
920 |
+ |
921 |
pkg_pretend() { |
922 |
blender_check_requirements |
923 |
} |
924 |
@@ -132,41 +151,55 @@ pkg_setup() { |
925 |
python-single-r1_pkg_setup |
926 |
} |
927 |
|
928 |
+src_unpack() { |
929 |
+ if [[ ${PV} = *9999* ]] ; then |
930 |
+ TESTS_SVN_URL=https://svn.blender.org/svnroot/bf-blender/trunk/lib/tests |
931 |
+ git-r3_src_unpack |
932 |
+ else |
933 |
+ default |
934 |
+ TESTS_SVN_URL=https://svn.blender.org/svnroot/bf-blender/tags/blender-${SLOT}-release/lib/tests |
935 |
+ fi |
936 |
+ |
937 |
+ if use test; then |
938 |
+ subversion_fetch ${TESTS_SVN_URL} ../lib/tests |
939 |
+ fi |
940 |
+} |
941 |
+ |
942 |
src_prepare() { |
943 |
cmake_src_prepare |
944 |
|
945 |
- # we don't want static glew, but it's scattered across |
946 |
- # multiple files that differ from version to version |
947 |
- # !!!CHECK THIS SED ON EVERY VERSION BUMP!!! |
948 |
- local file |
949 |
- while IFS="" read -d $'\0' -r file ; do |
950 |
- sed -i -e '/-DGLEW_STATIC/d' "${file}" || die |
951 |
- done < <(find . -type f -name "CMakeLists.txt") |
952 |
+ blender_get_version |
953 |
|
954 |
# Disable MS Windows help generation. The variable doesn't do what it |
955 |
# it sounds like. |
956 |
sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \ |
957 |
-i doc/doxygen/Doxyfile || die |
958 |
+ |
959 |
+ # Prepare icons and .desktop files for slotting. |
960 |
+ sed -e "s|blender.svg|blender-${BV}.svg|" -i source/creator/CMakeLists.txt || die |
961 |
+ sed -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" -i source/creator/CMakeLists.txt || die |
962 |
+ sed -e "s|blender.desktop|blender-${BV}.desktop|" -i source/creator/CMakeLists.txt || die |
963 |
+ sed -e "s|blender-thumbnailer.py|blender-${BV}-thumbnailer.py|" -i source/creator/CMakeLists.txt || die |
964 |
+ |
965 |
+ sed -e "s|Name=Blender|Name=Blender ${PV}|" -i release/freedesktop/blender.desktop || die |
966 |
+ sed -e "s|Exec=blender|Exec=blender-${BV}|" -i release/freedesktop/blender.desktop || die |
967 |
+ sed -e "s|Icon=blender|Icon=blender-${BV}|" -i release/freedesktop/blender.desktop || die |
968 |
+ |
969 |
+ mv release/freedesktop/icons/scalable/apps/blender.svg release/freedesktop/icons/scalable/apps/blender-${BV}.svg || die |
970 |
+ mv release/freedesktop/icons/symbolic/apps/blender-symbolic.svg release/freedesktop/icons/symbolic/apps/blender-${BV}-symbolic.svg || die |
971 |
+ mv release/freedesktop/blender.desktop release/freedesktop/blender-${BV}.desktop || die |
972 |
+ mv release/bin/blender-thumbnailer.py release/bin/blender-${BV}-thumbnailer.py || die |
973 |
+ |
974 |
+ if use test; then |
975 |
+ # Without this the tests will try to use /usr/bin/blender and /usr/share/blender/ to run the tests. |
976 |
+ sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${ED}/usr/)|g" -i tests/CMakeLists.txt || die |
977 |
+ sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${ED}/usr/)|g" -i build_files/cmake/Modules/GTestTesting.cmake || die |
978 |
+ fi |
979 |
} |
980 |
|
981 |
src_configure() { |
982 |
- # FIX: forcing '-funsigned-char' fixes an anti-aliasing issue with menu |
983 |
- # shadows, see bug #276338 for reference |
984 |
- append-flags -funsigned-char |
985 |
append-lfs-flags |
986 |
|
987 |
- if use openvdb; then |
988 |
- local version |
989 |
- if use abi6-compat; then |
990 |
- version=6; |
991 |
- elif use abi7-compat; then |
992 |
- version=7; |
993 |
- else |
994 |
- die "Openvdb abi version not compatible" |
995 |
- fi |
996 |
- append-cppflags -DOPENVDB_ABI_VERSION_NUMBER=${version} |
997 |
- fi |
998 |
- |
999 |
local mycmakeargs=( |
1000 |
-DBUILD_SHARED_LIBS=OFF |
1001 |
-DPYTHON_INCLUDE_DIR="$(python_get_includedir)" |
1002 |
@@ -179,15 +212,18 @@ src_configure() { |
1003 |
-DWITH_CODEC_FFMPEG=$(usex ffmpeg) |
1004 |
-DWITH_CODEC_SNDFILE=$(usex sndfile) |
1005 |
-DWITH_CXX_GUARDEDALLOC=$(usex debug) |
1006 |
- -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda TRUE FALSE) |
1007 |
-DWITH_CYCLES=$(usex cycles) |
1008 |
+ -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda TRUE FALSE) |
1009 |
-DWITH_CYCLES_DEVICE_OPENCL=$(usex opencl) |
1010 |
+ -DWITH_CYCLES_EMBREE=$(usex embree) |
1011 |
+ -DWITH_CYCLES_OSL=$(usex osl) |
1012 |
-DWITH_CYCLES_STANDALONE=$(usex standalone) |
1013 |
-DWITH_CYCLES_STANDALONE_GUI=$(usex standalone) |
1014 |
- -DWITH_CYCLES_OSL=$(usex osl) |
1015 |
-DWITH_DOC_MANPAGE=$(usex man) |
1016 |
-DWITH_FFTW3=$(usex fftw) |
1017 |
+ -DWITH_GMP=$(usex gmp) |
1018 |
-DWITH_GTESTS=$(usex test) |
1019 |
+ -DWITH_HARU=$(usex pdf) |
1020 |
-DWITH_HEADLESS=$(usex headless) |
1021 |
-DWITH_INSTALL_PORTABLE=OFF |
1022 |
-DWITH_IMAGE_DDS=$(usex dds) |
1023 |
@@ -197,19 +233,23 @@ src_configure() { |
1024 |
-DWITH_INPUT_NDOF=$(usex ndof) |
1025 |
-DWITH_INTERNATIONAL=$(usex nls) |
1026 |
-DWITH_JACK=$(usex jack) |
1027 |
- -DWITH_LLVM=$(usex llvm) |
1028 |
-DWITH_MEM_JEMALLOC=$(usex jemalloc) |
1029 |
-DWITH_MEM_VALGRIND=$(usex valgrind) |
1030 |
- -DWITH_MOD_FLUID=$(usex elbeem) |
1031 |
- -DWITH_MOD_OCEANSIM=$(usex fftw) |
1032 |
+ -DWITH_MOD_FLUID=$(usex fluid) |
1033 |
+ -DWITH_MOD_OCEANSIM=ON |
1034 |
+ -DWITH_NANOVDB=OFF |
1035 |
-DWITH_OPENAL=$(usex openal) |
1036 |
-DWITH_OPENCOLLADA=$(usex collada) |
1037 |
-DWITH_OPENCOLORIO=$(usex color-management) |
1038 |
+ -DWITH_OPENIMAGEDENOISE=$(usex oidn) |
1039 |
-DWITH_OPENIMAGEIO=$(usex openimageio) |
1040 |
-DWITH_OPENMP=$(usex openmp) |
1041 |
-DWITH_OPENSUBDIV=$(usex opensubdiv) |
1042 |
-DWITH_OPENVDB=$(usex openvdb) |
1043 |
-DWITH_OPENVDB_BLOSC=$(usex openvdb) |
1044 |
+ -DWITH_POTRACE=$(usex potrace) |
1045 |
+ -DWITH_PUGIXML=$(usex pugixml) |
1046 |
+ -DWITH_PULSEAUDIO=$(usex pulseaudio) |
1047 |
-DWITH_PYTHON_INSTALL=$(usex system-python OFF ON) |
1048 |
-DWITH_PYTHON_INSTALL_NUMPY=$(usex system-numpy OFF ON) |
1049 |
-DWITH_SDL=$(usex sdl) |
1050 |
@@ -218,8 +258,14 @@ src_configure() { |
1051 |
-DWITH_SYSTEM_GLEW=ON |
1052 |
-DWITH_SYSTEM_LZO=ON |
1053 |
-DWITH_TBB=$(usex tbb) |
1054 |
- -DWITH_X11=$(usex !headless) |
1055 |
+ -DWITH_USD=OFF |
1056 |
+ -DWITH_XR_OPENXR=OFF |
1057 |
) |
1058 |
+ if ! use debug ; then |
1059 |
+ append-flags -DNDEBUG |
1060 |
+ else |
1061 |
+ append-flags -DDEBUG |
1062 |
+ fi |
1063 |
cmake_src_configure |
1064 |
} |
1065 |
|
1066 |
@@ -247,17 +293,25 @@ src_compile() { |
1067 |
} |
1068 |
|
1069 |
src_test() { |
1070 |
- if use test; then |
1071 |
- einfo "Running Blender Unit Tests ..." |
1072 |
- cd "${BUILD_DIR}"/bin/tests || die |
1073 |
- local f |
1074 |
- for f in *_test; do |
1075 |
- ./"${f}" || die |
1076 |
- done |
1077 |
- fi |
1078 |
+ # A lot of tests needs to have access to the installed data files. |
1079 |
+ # So install them into the image directory now. |
1080 |
+ cmake_src_install |
1081 |
+ |
1082 |
+ blender_get_version |
1083 |
+ # Define custom blender data/script file paths not be able to find them otherwise during testing. |
1084 |
+ # (Because the data is in the image directory and it will default to look in /usr/share) |
1085 |
+ export BLENDER_SYSTEM_SCRIPTS=${ED}/usr/share/blender/${BV}/scripts |
1086 |
+ export BLENDER_SYSTEM_DATAFILES=${ED}/usr/share/blender/${BV}/datafiles |
1087 |
+ |
1088 |
+ cmake_src_test |
1089 |
+ |
1090 |
+ # Clean up the image directory for src_install |
1091 |
+ rm -fr ${ED}/* || die |
1092 |
} |
1093 |
|
1094 |
src_install() { |
1095 |
+ blender_get_version |
1096 |
+ |
1097 |
# Pax mark blender for hardened support. |
1098 |
pax-mark m "${BUILD_DIR}"/bin/blender |
1099 |
|
1100 |
@@ -280,8 +334,10 @@ src_install() { |
1101 |
dodoc "${CMAKE_USE_DIR}"/release/text/readme.html |
1102 |
rm -r "${ED}"/usr/share/doc/blender || die |
1103 |
|
1104 |
- python_fix_shebang "${ED}/usr/bin/blender-thumbnailer.py" |
1105 |
- python_optimize "${ED}/usr/share/blender/${MY_PV}/scripts" |
1106 |
+ python_fix_shebang "${ED}/usr/bin/blender-${BV}-thumbnailer.py" |
1107 |
+ python_optimize "${ED}/usr/share/blender/${BV}/scripts" |
1108 |
+ |
1109 |
+ mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" |
1110 |
} |
1111 |
|
1112 |
pkg_postinst() { |
1113 |
@@ -292,7 +348,7 @@ pkg_postinst() { |
1114 |
elog "It is recommended to change your blender temp directory" |
1115 |
elog "from /tmp to /home/user/tmp or another tmp file under your" |
1116 |
elog "home directory. This can be done by starting blender, then" |
1117 |
- elog "dragging the main menu down do display all paths." |
1118 |
+ elog "changing the 'Temporary Files' directory in Blender preferences." |
1119 |
elog |
1120 |
ewarn |
1121 |
ewarn "This ebuild does not unbundle the massive amount of 3rd party" |
1122 |
@@ -302,10 +358,11 @@ pkg_postinst() { |
1123 |
ewarn " https://developer.blender.org/" |
1124 |
ewarn |
1125 |
|
1126 |
- if use python_single_target_python3_8; then |
1127 |
- elog "You've enabled python-3.8 support for blender, which is still experimental." |
1128 |
+ if ! use python_single_target_python3_9; then |
1129 |
+ elog "You are building Blender with a newer python version than" |
1130 |
+ elog "supported by this version upstream." |
1131 |
elog "If you experience breakages with e.g. plugins, please switch to" |
1132 |
- elog "python_single_target_python3_7 instead." |
1133 |
+ elog "python_single_target_python3_9 instead." |
1134 |
elog "Bug: https://bugs.gentoo.org/737388" |
1135 |
elog |
1136 |
fi |
1137 |
@@ -322,7 +379,7 @@ pkg_postrm() { |
1138 |
|
1139 |
ewarn "" |
1140 |
ewarn "You may want to remove the following directory." |
1141 |
- ewarn "~/.config/${PN}/${MY_PV}/cache/" |
1142 |
+ ewarn "~/.config/${PN}/<blender version>/cache/" |
1143 |
ewarn "It may contain extra render kernels not tracked by portage" |
1144 |
ewarn "" |
1145 |
} |
1146 |
|
1147 |
diff --git a/media-gfx/blender/files/blender-2.83.13-ffmpeg-4_4.patch b/media-gfx/blender/files/blender-2.83.13-ffmpeg-4_4.patch |
1148 |
new file mode 100644 |
1149 |
index 00000000000..bf857967588 |
1150 |
--- /dev/null |
1151 |
+++ b/media-gfx/blender/files/blender-2.83.13-ffmpeg-4_4.patch |
1152 |
@@ -0,0 +1,27 @@ |
1153 |
+From 9cdf11676ecd753fd86c3d8057c2375174ef0a70 Mon Sep 17 00:00:00 2001 |
1154 |
+From: Sebastian Parborg <darkdefende@×××××.com> |
1155 |
+Date: Fri, 7 May 2021 16:51:28 +0200 |
1156 |
+Subject: [PATCH] Fix: No sound is exported with ffmpeg 4.4 |
1157 |
+ |
1158 |
+We were not assigning the amount of sound channels to the output frames. |
1159 |
+Newer ffmpeg releases has sanity checks in place and doesn't fall back |
1160 |
+to two channels anymore. |
1161 |
+--- |
1162 |
+ source/blender/blenkernel/intern/writeffmpeg.c | 1 + |
1163 |
+ 1 file changed, 1 insertion(+) |
1164 |
+ |
1165 |
+diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c |
1166 |
+index 7fc9e8cc0ef..e5550cee124 100644 |
1167 |
+--- a/source/blender/blenkernel/intern/writeffmpeg.c |
1168 |
++++ b/source/blender/blenkernel/intern/writeffmpeg.c |
1169 |
+@@ -164,6 +164,7 @@ static int write_audio_frame(FFMpegContext *context) |
1170 |
+ frame->pts = context->audio_time / av_q2d(c->time_base); |
1171 |
+ frame->nb_samples = context->audio_input_samples; |
1172 |
+ frame->format = c->sample_fmt; |
1173 |
++ frame->channels = c->channels; |
1174 |
+ # ifdef FFMPEG_HAVE_FRAME_CHANNEL_LAYOUT |
1175 |
+ frame->channel_layout = c->channel_layout; |
1176 |
+ # endif |
1177 |
+-- |
1178 |
+2.26.3 |
1179 |
+ |
1180 |
|
1181 |
diff --git a/media-gfx/blender/files/blender-2.83.6-constraints_test.patch b/media-gfx/blender/files/blender-2.83.6-constraints_test.patch |
1182 |
new file mode 100644 |
1183 |
index 00000000000..ab1e9a6d2d4 |
1184 |
--- /dev/null |
1185 |
+++ b/media-gfx/blender/files/blender-2.83.6-constraints_test.patch |
1186 |
@@ -0,0 +1,13 @@ |
1187 |
+diff --git a/tests/python/bl_constraints.py b/tests/python/bl_constraints.py |
1188 |
+index 323dd874ac0..7cbc46d680a 100644 |
1189 |
+--- a/tests/python/bl_constraints.py |
1190 |
++++ b/tests/python/bl_constraints.py |
1191 |
+@@ -44,7 +44,7 @@ class AbstractConstraintTests(unittest.TestCase): |
1192 |
+ collection = top_collection.children[self.layer_collection] |
1193 |
+ collection.exclude = False |
1194 |
+ |
1195 |
+- def assert_matrix(self, actual_matrix, expect_matrix, object_name: str, places=6, delta=None): |
1196 |
++ def assert_matrix(self, actual_matrix, expect_matrix, object_name: str, places=None, delta=1e-6): |
1197 |
+ """Asserts that the matrices almost equal.""" |
1198 |
+ self.assertEqual(len(actual_matrix), 4, 'Expected a 4x4 matrix') |
1199 |
+ |
1200 |
|
1201 |
diff --git a/media-gfx/blender/files/blender-2.83.6-fix_opevdb_abi.patch b/media-gfx/blender/files/blender-2.83.6-fix_opevdb_abi.patch |
1202 |
new file mode 100644 |
1203 |
index 00000000000..b7537f97fc0 |
1204 |
--- /dev/null |
1205 |
+++ b/media-gfx/blender/files/blender-2.83.6-fix_opevdb_abi.patch |
1206 |
@@ -0,0 +1,21 @@ |
1207 |
+--- a/CMakeLists.txt |
1208 |
++++ b/CMakeLists.txt |
1209 |
+@@ -1552,7 +1552,7 @@ |
1210 |
+ CMAKE_C_COMPILER_ID MATCHES "Intel" |
1211 |
+ ) |
1212 |
+ # TODO(sergey): Do we want c++11 or gnu-c++11 here? |
1213 |
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") |
1214 |
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") |
1215 |
+ else() |
1216 |
+ message(FATAL_ERROR "Unknown compiler ${CMAKE_C_COMPILER_ID}, can't enable C++11 build") |
1217 |
+ endif() |
1218 |
+--- a/extern/mantaflow/CMakeLists.txt |
1219 |
++++ b/extern/mantaflow/CMakeLists.txt |
1220 |
+@@ -51,7 +51,6 @@ |
1221 |
+ |
1222 |
+ if(WITH_OPENVDB) |
1223 |
+ add_definitions(-DOPENVDB=1) |
1224 |
+- add_definitions(-DOPENVDB_STATICLIB) |
1225 |
+ endif() |
1226 |
+ |
1227 |
+ if(WIN32 |
1228 |
|
1229 |
diff --git a/media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch b/media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch |
1230 |
new file mode 100644 |
1231 |
index 00000000000..1392510a23a |
1232 |
--- /dev/null |
1233 |
+++ b/media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch |
1234 |
@@ -0,0 +1,219 @@ |
1235 |
+diff --git a/intern/libmv/libmv/base/vector.h b/intern/libmv/libmv/base/vector.h |
1236 |
+index bdc4392155c..300291c5679 100644 |
1237 |
+--- a/intern/libmv/libmv/base/vector.h |
1238 |
++++ b/intern/libmv/libmv/base/vector.h |
1239 |
+@@ -25,151 +25,18 @@ |
1240 |
+ #ifndef LIBMV_BASE_VECTOR_H |
1241 |
+ #define LIBMV_BASE_VECTOR_H |
1242 |
+ |
1243 |
+-#include <cstring> |
1244 |
+-#include <new> |
1245 |
++#include <vector> |
1246 |
+ |
1247 |
+ #include <Eigen/Core> |
1248 |
+ |
1249 |
+ namespace libmv { |
1250 |
+ |
1251 |
+-// A simple container class, which guarantees 16 byte alignment needed for most |
1252 |
+-// vectorization. Don't use this container for classes that cannot be copied |
1253 |
+-// via memcpy. |
1254 |
+-// FIXME: this class has some issues: |
1255 |
+-// - doesn't support iterators. |
1256 |
+-// - impede compatibility with code using STL. |
1257 |
+-// - the STL already provide support for custom allocators |
1258 |
+-// it could be replaced with a simple |
1259 |
+-// template <T> class vector : std::vector<T, aligned_allocator> {} declaration |
1260 |
+-// provided it doesn't break code relying on libmv::vector specific behavior |
1261 |
+-template <typename T, |
1262 |
+- typename Allocator = Eigen::aligned_allocator<T> > |
1263 |
+-class vector { |
1264 |
+- public: |
1265 |
+- ~vector() { clear(); } |
1266 |
++// A simple container class, which guarantees the correct memory alignment |
1267 |
++// needed for most eigen vectorization. Don't use this container for classes |
1268 |
++// that cannot be copied via memcpy. |
1269 |
+ |
1270 |
+- vector() { init(); } |
1271 |
+- vector(int size) { init(); resize(size); } |
1272 |
+- vector(int size, const T & val) { |
1273 |
+- init(); |
1274 |
+- resize(size); |
1275 |
+- std::fill(data_, data_+size_, val); } |
1276 |
+- |
1277 |
+- // Copy constructor and assignment. |
1278 |
+- vector(const vector<T, Allocator> &rhs) { |
1279 |
+- init(); |
1280 |
+- copy(rhs); |
1281 |
+- } |
1282 |
+- vector<T, Allocator> &operator=(const vector<T, Allocator> &rhs) { |
1283 |
+- if (&rhs != this) { |
1284 |
+- copy(rhs); |
1285 |
+- } |
1286 |
+- return *this; |
1287 |
+- } |
1288 |
+- |
1289 |
+- /// Swaps the contents of two vectors in constant time. |
1290 |
+- void swap(vector<T, Allocator> &other) { |
1291 |
+- std::swap(allocator_, other.allocator_); |
1292 |
+- std::swap(size_, other.size_); |
1293 |
+- std::swap(capacity_, other.capacity_); |
1294 |
+- std::swap(data_, other.data_); |
1295 |
+- } |
1296 |
+- |
1297 |
+- T *data() const { return data_; } |
1298 |
+- int size() const { return size_; } |
1299 |
+- int capacity() const { return capacity_; } |
1300 |
+- const T& back() const { return data_[size_ - 1]; } |
1301 |
+- T& back() { return data_[size_ - 1]; } |
1302 |
+- const T& front() const { return data_[0]; } |
1303 |
+- T& front() { return data_[0]; } |
1304 |
+- const T& operator[](int n) const { return data_[n]; } |
1305 |
+- T& operator[](int n) { return data_[n]; } |
1306 |
+- const T& at(int n) const { return data_[n]; } |
1307 |
+- T& at(int n) { return data_[n]; } |
1308 |
+- const T * begin() const { return data_; } |
1309 |
+- const T * end() const { return data_+size_; } |
1310 |
+- T * begin() { return data_; } |
1311 |
+- T * end() { return data_+size_; } |
1312 |
+- |
1313 |
+- void resize(size_t size) { |
1314 |
+- reserve(size); |
1315 |
+- if (size > size_) { |
1316 |
+- construct(size_, size); |
1317 |
+- } else if (size < size_) { |
1318 |
+- destruct(size, size_); |
1319 |
+- } |
1320 |
+- size_ = size; |
1321 |
+- } |
1322 |
+- |
1323 |
+- void push_back(const T &value) { |
1324 |
+- if (size_ == capacity_) { |
1325 |
+- reserve(size_ ? 2 * size_ : 1); |
1326 |
+- } |
1327 |
+- new (&data_[size_++]) T(value); |
1328 |
+- } |
1329 |
+- |
1330 |
+- void pop_back() { |
1331 |
+- resize(size_ - 1); |
1332 |
+- } |
1333 |
+- |
1334 |
+- void clear() { |
1335 |
+- destruct(0, size_); |
1336 |
+- deallocate(); |
1337 |
+- init(); |
1338 |
+- } |
1339 |
+- |
1340 |
+- void reserve(unsigned int size) { |
1341 |
+- if (size > size_) { |
1342 |
+- T *data = static_cast<T *>(allocate(size)); |
1343 |
+- memcpy(static_cast<void *>(data), data_, sizeof(*data)*size_); |
1344 |
+- allocator_.deallocate(data_, capacity_); |
1345 |
+- data_ = data; |
1346 |
+- capacity_ = size; |
1347 |
+- } |
1348 |
+- } |
1349 |
+- |
1350 |
+- bool empty() { |
1351 |
+- return size_ == 0; |
1352 |
+- } |
1353 |
+- |
1354 |
+- private: |
1355 |
+- void construct(int start, int end) { |
1356 |
+- for (int i = start; i < end; ++i) { |
1357 |
+- new (&data_[i]) T; |
1358 |
+- } |
1359 |
+- } |
1360 |
+- void destruct(int start, int end) { |
1361 |
+- for (int i = start; i < end; ++i) { |
1362 |
+- data_[i].~T(); |
1363 |
+- } |
1364 |
+- } |
1365 |
+- void init() { |
1366 |
+- size_ = 0; |
1367 |
+- data_ = 0; |
1368 |
+- capacity_ = 0; |
1369 |
+- } |
1370 |
+- |
1371 |
+- void *allocate(int size) { |
1372 |
+- return size ? allocator_.allocate(size) : 0; |
1373 |
+- } |
1374 |
+- |
1375 |
+- void deallocate() { |
1376 |
+- allocator_.deallocate(data_, size_); |
1377 |
+- data_ = 0; |
1378 |
+- } |
1379 |
+- |
1380 |
+- void copy(const vector<T, Allocator> &rhs) { |
1381 |
+- resize(rhs.size()); |
1382 |
+- for (int i = 0; i < rhs.size(); ++i) { |
1383 |
+- (*this)[i] = rhs[i]; |
1384 |
+- } |
1385 |
+- } |
1386 |
+- |
1387 |
+- Allocator allocator_; |
1388 |
+- size_t size_; |
1389 |
+- size_t capacity_; |
1390 |
+- T *data_; |
1391 |
+-}; |
1392 |
++template <class ElementType> |
1393 |
++using vector = std::vector<ElementType, Eigen::aligned_allocator<ElementType>>; |
1394 |
+ |
1395 |
+ } // namespace libmv |
1396 |
+ |
1397 |
+diff --git a/intern/libmv/libmv/base/vector_test.cc b/intern/libmv/libmv/base/vector_test.cc |
1398 |
+index f17718c3926..44b9a152148 100644 |
1399 |
+--- a/intern/libmv/libmv/base/vector_test.cc |
1400 |
++++ b/intern/libmv/libmv/base/vector_test.cc |
1401 |
+@@ -115,31 +115,24 @@ TEST_F(VectorTest, ResizeConstructsAndDestructsAsExpected) { |
1402 |
+ // Create one object. |
1403 |
+ v.resize(1); |
1404 |
+ EXPECT_EQ(1, v.size()); |
1405 |
+- EXPECT_EQ(1, v.capacity()); |
1406 |
+ EXPECT_EQ(1, foo_construct_calls); |
1407 |
+- EXPECT_EQ(0, foo_destruct_calls); |
1408 |
+ EXPECT_EQ(5, v[0].value); |
1409 |
+ |
1410 |
+ // Create two more. |
1411 |
+ v.resize(3); |
1412 |
+ EXPECT_EQ(3, v.size()); |
1413 |
+- EXPECT_EQ(3, v.capacity()); |
1414 |
+ EXPECT_EQ(3, foo_construct_calls); |
1415 |
+- EXPECT_EQ(0, foo_destruct_calls); |
1416 |
+ |
1417 |
+ // Delete the last one. |
1418 |
+ v.resize(2); |
1419 |
+ EXPECT_EQ(2, v.size()); |
1420 |
+ EXPECT_EQ(3, v.capacity()); |
1421 |
+ EXPECT_EQ(3, foo_construct_calls); |
1422 |
+- EXPECT_EQ(1, foo_destruct_calls); |
1423 |
+ |
1424 |
+ // Delete the remaining two. |
1425 |
+ v.resize(0); |
1426 |
+ EXPECT_EQ(0, v.size()); |
1427 |
+- EXPECT_EQ(3, v.capacity()); |
1428 |
+ EXPECT_EQ(3, foo_construct_calls); |
1429 |
+- EXPECT_EQ(3, foo_destruct_calls); |
1430 |
+ } |
1431 |
+ |
1432 |
+ TEST_F(VectorTest, PushPopBack) { |
1433 |
+@@ -192,15 +185,15 @@ TEST_F(VectorTest, STLFind) { |
1434 |
+ a.push_back(5); |
1435 |
+ a.push_back(3); |
1436 |
+ |
1437 |
+- // Find return an int * |
1438 |
++ // Find returns an int * |
1439 |
+ EXPECT_EQ(std::find(&a[0], &a[2], 1) == &a[0], true); |
1440 |
+ EXPECT_EQ(std::find(&a[0], &a[2], 5) == &a[1], true); |
1441 |
+ EXPECT_EQ(std::find(&a[0], &a[2], 3) == &a[2], true); |
1442 |
+ |
1443 |
+- // Find return a const int * |
1444 |
+- EXPECT_EQ(std::find(a.begin(), a.end(), 1) == &a[0], true); |
1445 |
+- EXPECT_EQ(std::find(a.begin(), a.end(), 5) == &a[1], true); |
1446 |
+- EXPECT_EQ(std::find(a.begin(), a.end(), 3) == &a[2], true); |
1447 |
++ // Find returns an interator |
1448 |
++ EXPECT_EQ(std::find(a.begin(), a.end(), 1) == std::next(a.begin(), 0), true); |
1449 |
++ EXPECT_EQ(std::find(a.begin(), a.end(), 5) == std::next(a.begin(), 1), true); |
1450 |
++ EXPECT_EQ(std::find(a.begin(), a.end(), 3) == std::next(a.begin(), 2), true); |
1451 |
+ |
1452 |
+ // Search value that are not in the vector |
1453 |
+ EXPECT_EQ(std::find(a.begin(), a.end(), 0) == a.end(), true); |
1454 |
|
1455 |
diff --git a/media-gfx/blender/metadata.xml b/media-gfx/blender/metadata.xml |
1456 |
index 6fc1b5f9fa5..16d447e5634 100644 |
1457 |
--- a/media-gfx/blender/metadata.xml |
1458 |
+++ b/media-gfx/blender/metadata.xml |
1459 |
@@ -14,12 +14,6 @@ |
1460 |
rendering, post-production, interactive creation and playback. |
1461 |
</longdescription> |
1462 |
<use> |
1463 |
- <flag name="abi6-compat"> |
1464 |
- Build for OpenVDB ABI 6. |
1465 |
- </flag> |
1466 |
- <flag name="abi7-compat"> |
1467 |
- Build for OpenVDB ABI 7. |
1468 |
- </flag> |
1469 |
<flag name="alembic"> |
1470 |
Add support for Alembic through |
1471 |
<pkg>media-gfx/alembic</pkg>. |
1472 |
@@ -42,18 +36,19 @@ |
1473 |
<flag name="dds"> |
1474 |
Adds DDS textures support to Blender. |
1475 |
</flag> |
1476 |
- <flag name="elbeem"> |
1477 |
- Adds surface fluid simulation to Blender using El'Beem library. |
1478 |
+ <flag name="embree"> |
1479 |
+ Use embree to accelerate certain areas of the Cycles render engine. |
1480 |
+ </flag> |
1481 |
+ <flag name="fluid"> |
1482 |
+ Adds fluid simulation support via the built-in Mantaflow library. |
1483 |
</flag> |
1484 |
<flag name="headless"> |
1485 |
Build without graphical support (renderfarm, server mode only). |
1486 |
</flag> |
1487 |
- <flag name="llvm"> |
1488 |
- Enable features depending on llvm. |
1489 |
- </flag> |
1490 |
<flag name="ndof"> |
1491 |
Enable NDOF input devices (SpaceNavigator and friends). |
1492 |
</flag> |
1493 |
+ <flag name="oidn">Enable OpenImageDenoiser Support</flag> |
1494 |
<flag name="opencl"> |
1495 |
Allow OpenCL Graphics Acceleration. This may |
1496 |
require extra graphics card drivers.</flag> |
1497 |
@@ -68,6 +63,12 @@ |
1498 |
<flag name="osl"> |
1499 |
Add support for OpenShadingLanguage scripting. |
1500 |
</flag> |
1501 |
+ <flag name="potrace"> |
1502 |
+ Add support for converting bitmaps into Grease pencil line using the potrace library. |
1503 |
+ </flag> |
1504 |
+ <flag name="pugixml"> |
1505 |
+ Enable PugiXML support (Used for OpenImageIO, Grease Pencil SVG export) |
1506 |
+ </flag> |
1507 |
<flag name="standalone"> |
1508 |
Build the standalone version of Cycles. |
1509 |
</flag> |