Gentoo Archives: gentoo-commits

From: Sam James <sam@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-gfx/blender/files/, media-gfx/blender/
Date: Thu, 10 Jun 2021 00:51:44
Message-Id: 1623284361.61c7536f66bd3a6a3347800226cd8dc969671116.sam@gentoo
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>