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/
Date: Fri, 01 Apr 2022 00:09:33
Message-Id: 1648771746.fee908e0a22d1bf0747e75d6a9ec1e701bc999b4.sam@gentoo
1 commit: fee908e0a22d1bf0747e75d6a9ec1e701bc999b4
2 Author: Sam James <sam <AT> gentoo <DOT> org>
3 AuthorDate: Fri Apr 1 00:08:46 2022 +0000
4 Commit: Sam James <sam <AT> gentoo <DOT> org>
5 CommitDate: Fri Apr 1 00:09:06 2022 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fee908e0
7
8 media-gfx/blender: add 3.1.1
9
10 Signed-off-by: Sam James <sam <AT> gentoo.org>
11
12 media-gfx/blender/Manifest | 1 +
13 media-gfx/blender/blender-3.1.1.ebuild | 404 +++++++++++++++++++++++++++++++++
14 2 files changed, 405 insertions(+)
15
16 diff --git a/media-gfx/blender/Manifest b/media-gfx/blender/Manifest
17 index 1101bc01e18b..57c5ad01433c 100644
18 --- a/media-gfx/blender/Manifest
19 +++ b/media-gfx/blender/Manifest
20 @@ -8,3 +8,4 @@ DIST blender-3.0.1-ffmpeg-5.0.patch.bz2 8198 BLAKE2B 2acb1e441bd17cf2d972f981358
21 DIST blender-3.0.1.tar.xz 40155604 BLAKE2B b611f08617f1be217604e87cfafe88f6cc9904ed6321a74bea4ee5ad14f3cf4002b12d82fa3b3c6111a681fd7e1c530f66be28c506973ff7722175a9036a19da SHA512 b9af6d49201eb26ec77a3cecdb9c0945ffc915d4eecaaa36091365340244bfd1565a7679c8b7a81d3335383f158dc01339ea8edc108730835d81db1de84049bf
22 DIST blender-3.1.0-tests.tar.bz2 643279044 BLAKE2B acbf0800c384f881c215ea22140b02e8e61c7395eb35fdb76fad3c785c565ecfc6c59d74848bdd3f9f9b762f86328f6b60cb7871e6ef4615db1ef03f2749b655 SHA512 9fd202c582576d170c29c8adbc9bc4a62b6d67a4a1500f6980201e3d904f4a4a15e5680530663382c34672bd634543dd330c5f75523cf0058928a549ff4a0782
23 DIST blender-3.1.0.tar.xz 41017620 BLAKE2B f626266a41f9d72b03690fe8d7fe1f183ffdef01501ff6a458e5760eea66c959ca297d70dc541b27aa85466a7b8d65306e293c84487c1ff1467cd31cfdba0203 SHA512 354d4e7c92233e610d0e938c10d966aff7ee34fd21993b65b645b4d01e37f90f741206190817a7ab6932c5321d698827a09ec0e1d966c28596d130b4af2ce6bb
24 +DIST blender-3.1.1.tar.xz 41029004 BLAKE2B ca133349bfae52b36123da489ef7e50b30666b91d7961e9938932f5375a4d1129f3b15de59170ccf55723a08cbd0089bb7d73792c15221d91f2f83c40a2ebdb4 SHA512 88c339540a7b621b1771e1f17ecf7d4c21d86e05b83e395e15cd90b1347a50dda74ebaedd5ca178cabe6981b45244a64110ab855efdf74fe42f5bf45ffe811b1
25
26 diff --git a/media-gfx/blender/blender-3.1.1.ebuild b/media-gfx/blender/blender-3.1.1.ebuild
27 new file mode 100644
28 index 000000000000..50be45a07af8
29 --- /dev/null
30 +++ b/media-gfx/blender/blender-3.1.1.ebuild
31 @@ -0,0 +1,404 @@
32 +# Copyright 1999-2022 Gentoo Authors
33 +# Distributed under the terms of the GNU General Public License v2
34 +
35 +EAPI=8
36 +
37 +PYTHON_COMPAT=( python3_10 )
38 +
39 +inherit check-reqs cmake flag-o-matic pax-utils python-single-r1 toolchain-funcs xdg-utils
40 +
41 +DESCRIPTION="3D Creation/Animation/Publishing System"
42 +HOMEPAGE="https://www.blender.org"
43 +
44 +if [[ ${PV} = *9999* ]] ; then
45 + # Subversion is needed for downloading unit test files
46 + inherit git-r3 subversion
47 + EGIT_REPO_URI="https://git.blender.org/blender.git"
48 +else
49 + SRC_URI="https://download.blender.org/source/${P}.tar.xz"
50 + # Update these between major releases.
51 + TEST_TARBALL_VERSION="$(ver_cut 1-2).0"
52 + SRC_URI+=" test? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PN}-${TEST_TARBALL_VERSION}-tests.tar.bz2 )"
53 + KEYWORDS="~amd64 ~arm ~arm64"
54 +fi
55 +
56 +SLOT="${PV%.*}"
57 +LICENSE="|| ( GPL-3 BL )"
58 +IUSE="+bullet +dds +fluid +openexr +system-python +system-numpy +tbb \
59 + alembic collada +color-management cuda +cycles \
60 + debug doc +embree +ffmpeg +fftw +gmp headless jack jemalloc jpeg2k \
61 + man +nanovdb ndof nls openal +oidn +openimageio +openmp +opensubdiv \
62 + +openvdb +osl +pdf +potrace +pugixml pulseaudio sdl +sndfile standalone test +tiff valgrind"
63 +RESTRICT="!test? ( test )"
64 +
65 +REQUIRED_USE="${PYTHON_REQUIRED_USE}
66 + alembic? ( openexr )
67 + cuda? ( cycles )
68 + cycles? ( openexr tiff openimageio )
69 + fluid? ( tbb )
70 + openvdb? ( tbb )
71 + osl? ( cycles )
72 + standalone? ( cycles )
73 + test? ( color-management )"
74 +
75 +# Library versions for official builds can be found in the blender source directory in:
76 +# build_files/build_environment/install_deps.sh
77 +RDEPEND="${PYTHON_DEPS}
78 + dev-libs/boost:=[nls?,threads(+)]
79 + dev-libs/lzo:2=
80 + $(python_gen_cond_dep '
81 + dev-python/numpy[${PYTHON_USEDEP}]
82 + dev-python/requests[${PYTHON_USEDEP}]
83 + dev-python/zstandard[${PYTHON_USEDEP}]
84 + ')
85 + media-libs/freetype:=
86 + media-libs/glew:*
87 + media-libs/libpng:=
88 + media-libs/libsamplerate
89 + sys-libs/zlib:=
90 + virtual/glu
91 + virtual/jpeg
92 + virtual/libintl
93 + virtual/opengl
94 + alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] )
95 + collada? ( >=media-libs/opencollada-1.6.68 )
96 + color-management? ( >=media-libs/opencolorio-2.1.1-r7:= )
97 + cuda? ( dev-util/nvidia-cuda-toolkit:= )
98 + embree? ( >=media-libs/embree-3.10.0[raymask] )
99 + ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k?,vpx,vorbis,opus,xvid] )
100 + fftw? ( sci-libs/fftw:3.0= )
101 + gmp? ( dev-libs/gmp )
102 + !headless? (
103 + x11-libs/libX11
104 + x11-libs/libXi
105 + x11-libs/libXxf86vm
106 + )
107 + jack? ( virtual/jack )
108 + jemalloc? ( dev-libs/jemalloc:= )
109 + jpeg2k? ( media-libs/openjpeg:2= )
110 + ndof? (
111 + app-misc/spacenavd
112 + dev-libs/libspnav
113 + )
114 + nls? ( virtual/libiconv )
115 + openal? ( media-libs/openal )
116 + oidn? ( >=media-libs/oidn-1.4.1 )
117 + openimageio? ( >=media-libs/openimageio-2.3.12.0-r3:= )
118 + openexr? (
119 + >=dev-libs/imath-3.1.4-r2:=
120 + >=media-libs/openexr-3:0=
121 + )
122 + opensubdiv? ( >=media-libs/opensubdiv-3.4.0[cuda=] )
123 + openvdb? (
124 + >=media-gfx/openvdb-9.0.0:=[nanovdb?]
125 + dev-libs/c-blosc:=
126 + )
127 + osl? ( >=media-libs/osl-1.11.16.0-r3:= )
128 + pdf? ( media-libs/libharu )
129 + potrace? ( media-gfx/potrace )
130 + pugixml? ( dev-libs/pugixml )
131 + pulseaudio? ( media-sound/pulseaudio )
132 + sdl? ( media-libs/libsdl2[sound,joystick] )
133 + sndfile? ( media-libs/libsndfile )
134 + tbb? ( dev-cpp/tbb:= )
135 + tiff? ( media-libs/tiff )
136 + valgrind? ( dev-util/valgrind )
137 +"
138 +
139 +DEPEND="${RDEPEND}
140 + dev-cpp/eigen:=
141 +"
142 +
143 +BDEPEND="
144 + virtual/pkgconfig
145 + doc? (
146 + app-doc/doxygen[dot]
147 + dev-python/sphinx[latex]
148 + dev-texlive/texlive-bibtexextra
149 + dev-texlive/texlive-fontsextra
150 + dev-texlive/texlive-fontutils
151 + dev-texlive/texlive-latex
152 + dev-texlive/texlive-latexextra
153 + )
154 + nls? ( sys-devel/gettext )
155 +"
156 +
157 +blender_check_requirements() {
158 + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
159 +
160 + if use doc; then
161 + CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend
162 + fi
163 +}
164 +
165 +blender_get_version() {
166 + # Get blender version from blender itself.
167 + BV=$(grep "BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d " " -f 3; assert)
168 + if ((${BV:0:1} < 3)) ; then
169 + # Add period (290 -> 2.90).
170 + BV=${BV:0:1}.${BV:1}
171 + else
172 + # Add period and skip the middle number (301 -> 3.1)
173 + BV=${BV:0:1}.${BV:2}
174 + fi
175 +}
176 +
177 +pkg_pretend() {
178 + blender_check_requirements
179 +}
180 +
181 +pkg_setup() {
182 + blender_check_requirements
183 + python-single-r1_pkg_setup
184 +}
185 +
186 +src_unpack() {
187 + if [[ ${PV} = *9999* ]] ; then
188 + git-r3_src_unpack
189 + if use test; then
190 + TESTS_SVN_URL=https://svn.blender.org/svnroot/bf-blender/trunk/lib/tests
191 + subversion_fetch ${TESTS_SVN_URL} ../lib/tests
192 + fi
193 + else
194 + default
195 + if use test; then
196 + #The tests are downloaded from: https://svn.blender.org/svnroot/bf-blender/tags/blender-${SLOT}-release/lib/tests
197 + mkdir -p lib || die
198 + mv "${WORKDIR}"/blender-${TEST_TARBALL_VERSION}-tests/tests lib || die
199 + fi
200 + fi
201 +
202 +}
203 +
204 +src_prepare() {
205 + cmake_src_prepare
206 +
207 + blender_get_version
208 +
209 + # Disable MS Windows help generation. The variable doesn't do what it
210 + # it sounds like.
211 + sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \
212 + -i doc/doxygen/Doxyfile || die
213 +
214 + # Prepare icons and .desktop files for slotting.
215 + sed -e "s|blender.svg|blender-${BV}.svg|" -i source/creator/CMakeLists.txt || die
216 + sed -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" -i source/creator/CMakeLists.txt || die
217 + sed -e "s|blender.desktop|blender-${BV}.desktop|" -i source/creator/CMakeLists.txt || die
218 +
219 + sed -e "s|Name=Blender|Name=Blender ${PV}|" -i release/freedesktop/blender.desktop || die
220 + sed -e "s|Exec=blender|Exec=blender-${BV}|" -i release/freedesktop/blender.desktop || die
221 + sed -e "s|Icon=blender|Icon=blender-${BV}|" -i release/freedesktop/blender.desktop || die
222 +
223 + mv release/freedesktop/icons/scalable/apps/blender.svg release/freedesktop/icons/scalable/apps/blender-${BV}.svg || die
224 + mv release/freedesktop/icons/symbolic/apps/blender-symbolic.svg release/freedesktop/icons/symbolic/apps/blender-${BV}-symbolic.svg || die
225 + mv release/freedesktop/blender.desktop release/freedesktop/blender-${BV}.desktop || 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 + append-lfs-flags
236 +
237 + local mycmakeargs=(
238 + -DBUILD_SHARED_LIBS=OFF
239 + -DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
240 + -DPYTHON_LIBRARY="$(python_get_library_path)"
241 + -DPYTHON_VERSION="${EPYTHON/python/}"
242 + -DWITH_ALEMBIC=$(usex alembic)
243 + -DWITH_ASSERT_ABORT=$(usex debug)
244 + -DWITH_BOOST=ON
245 + -DWITH_BULLET=$(usex bullet)
246 + -DWITH_CODEC_FFMPEG=$(usex ffmpeg)
247 + -DWITH_CODEC_SNDFILE=$(usex sndfile)
248 + -DWITH_CXX_GUARDEDALLOC=$(usex debug)
249 + -DWITH_CYCLES=$(usex cycles)
250 + -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda TRUE FALSE)
251 + -DWITH_CYCLES_EMBREE=$(usex embree)
252 + -DWITH_CYCLES_OSL=$(usex osl)
253 + -DWITH_CYCLES_STANDALONE=$(usex standalone)
254 + -DWITH_CYCLES_STANDALONE_GUI=$(usex standalone)
255 + -DWITH_DOC_MANPAGE=$(usex man)
256 + -DWITH_FFTW3=$(usex fftw)
257 + -DWITH_GMP=$(usex gmp)
258 + -DWITH_GTESTS=$(usex test)
259 + -DWITH_HARU=$(usex pdf)
260 + -DWITH_HEADLESS=$(usex headless)
261 + -DWITH_INSTALL_PORTABLE=OFF
262 + -DWITH_IMAGE_DDS=$(usex dds)
263 + -DWITH_IMAGE_OPENEXR=$(usex openexr)
264 + -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k)
265 + -DWITH_IMAGE_TIFF=$(usex tiff)
266 + -DWITH_INPUT_NDOF=$(usex ndof)
267 + -DWITH_INTERNATIONAL=$(usex nls)
268 + -DWITH_JACK=$(usex jack)
269 + -DWITH_MEM_JEMALLOC=$(usex jemalloc)
270 + -DWITH_MEM_VALGRIND=$(usex valgrind)
271 + -DWITH_MOD_FLUID=$(usex fluid)
272 + -DWITH_MOD_OCEANSIM=$(usex fftw)
273 + -DWITH_NANOVDB=$(usex nanovdb)
274 + -DWITH_OPENAL=$(usex openal)
275 + -DWITH_OPENCOLLADA=$(usex collada)
276 + -DWITH_OPENCOLORIO=$(usex color-management)
277 + -DWITH_OPENIMAGEDENOISE=$(usex oidn)
278 + -DWITH_OPENIMAGEIO=$(usex openimageio)
279 + -DWITH_OPENMP=$(usex openmp)
280 + -DWITH_OPENSUBDIV=$(usex opensubdiv)
281 + -DWITH_OPENVDB=$(usex openvdb)
282 + -DWITH_OPENVDB_BLOSC=$(usex openvdb)
283 + -DWITH_POTRACE=$(usex potrace)
284 + -DWITH_PUGIXML=$(usex pugixml)
285 + -DWITH_PULSEAUDIO=$(usex pulseaudio)
286 + -DWITH_PYTHON_INSTALL=$(usex system-python OFF ON)
287 + -DWITH_PYTHON_INSTALL_NUMPY=$(usex system-numpy OFF ON)
288 + -DWITH_SDL=$(usex sdl)
289 + -DWITH_STATIC_LIBS=OFF
290 + -DWITH_SYSTEM_EIGEN3=ON
291 + -DWITH_SYSTEM_FREETYPE=ON
292 + -DWITH_SYSTEM_GLEW=ON
293 + -DWITH_SYSTEM_LZO=ON
294 + -DWITH_TBB=$(usex tbb)
295 + -DWITH_USD=OFF
296 + -DWITH_XR_OPENXR=OFF
297 + )
298 +
299 + append-flags $(usex debug '-DDEBUG' '-DNDEBUG')
300 +
301 + if tc-is-gcc ; then
302 + # These options only exist when GCC is detected.
303 + # We disable these to respect the user's choice of linker.
304 + mycmakeargs+=(
305 + -DWITH_LINKER_GOLD=OFF
306 + -DWITH_LINKER_LLD=OFF
307 + )
308 + fi
309 +
310 + cmake_src_configure
311 +}
312 +
313 +src_test() {
314 + # A lot of tests needs to have access to the installed data files.
315 + # So install them into the image directory now.
316 + cmake_src_install
317 +
318 + blender_get_version
319 + # Define custom blender data/script file paths not be able to find them otherwise during testing.
320 + # (Because the data is in the image directory and it will default to look in /usr/share)
321 + export BLENDER_SYSTEM_SCRIPTS=${ED}/usr/share/blender/${BV}/scripts
322 + export BLENDER_SYSTEM_DATAFILES=${ED}/usr/share/blender/${BV}/datafiles
323 +
324 + # Sanity check that the script and datafile path is valid.
325 + # If they are not vaild, blender will fallback to the default path which is not what we want.
326 + [ -d "$BLENDER_SYSTEM_SCRIPTS" ] || die "The custom script path is invalid, fix the ebuild!"
327 + [ -d "$BLENDER_SYSTEM_DATAFILES" ] || die "The custom datafiles path is invalid, fix the ebuild!"
328 +
329 + cmake_src_test
330 +
331 + # Clean up the image directory for src_install
332 + rm -fr ${ED}/* || die
333 +}
334 +
335 +src_install() {
336 + blender_get_version
337 +
338 + # Pax mark blender for hardened support.
339 + pax-mark m "${BUILD_DIR}"/bin/blender
340 +
341 + if use standalone; then
342 + dobin "${BUILD_DIR}"/bin/cycles
343 + fi
344 +
345 + cmake_src_install
346 +
347 + if use man; then
348 + # Slot the man page
349 + mv "${ED}/usr/share/man/man1/blender.1" "${ED}/usr/share/man/man1/blender-${BV}.1" || die
350 + fi
351 +
352 + if use doc; then
353 + # Define custom blender data/script file paths. Otherwise Blender will not be able to find them during doc building.
354 + # (Because the data is in the image directory and it will default to look in /usr/share)
355 + export BLENDER_SYSTEM_SCRIPTS=${ED}/usr/share/blender/${BV}/scripts
356 + export BLENDER_SYSTEM_DATAFILES=${ED}/usr/share/blender/${BV}/datafiles
357 +
358 + # Workaround for binary drivers.
359 + addpredict /dev/ati
360 + addpredict /dev/dri
361 + addpredict /dev/nvidiactl
362 +
363 + einfo "Generating Blender C/C++ API docs ..."
364 + cd "${CMAKE_USE_DIR}"/doc/doxygen || die
365 + doxygen -u Doxyfile || die
366 + doxygen || die "doxygen failed to build API docs."
367 +
368 + cd "${CMAKE_USE_DIR}" || die
369 + einfo "Generating (BPY) Blender Python API docs ..."
370 + "${BUILD_DIR}"/bin/blender --background --python doc/python_api/sphinx_doc_gen.py -noaudio || die "sphinx failed."
371 +
372 + cd "${CMAKE_USE_DIR}"/doc/python_api || die
373 + sphinx-build sphinx-in BPY_API || die "sphinx failed."
374 +
375 + docinto "html/API/python"
376 + dodoc -r "${CMAKE_USE_DIR}"/doc/python_api/BPY_API/.
377 +
378 + docinto "html/API/blender"
379 + dodoc -r "${CMAKE_USE_DIR}"/doc/doxygen/html/.
380 + fi
381 +
382 + # Fix doc installdir
383 + docinto html
384 + dodoc "${CMAKE_USE_DIR}"/release/text/readme.html
385 + rm -r "${ED}"/usr/share/doc/blender || die
386 +
387 + python_optimize "${ED}/usr/share/blender/${BV}/scripts"
388 +
389 + mv "${ED}/usr/bin/blender-thumbnailer" "${ED}/usr/bin/blender-${BV}-thumbnailer" || die
390 + mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die
391 +}
392 +
393 +pkg_postinst() {
394 + elog
395 + elog "Blender uses python integration. As such, may have some"
396 + elog "inherent risks with running unknown python scripts."
397 + elog
398 + elog "It is recommended to change your blender temp directory"
399 + elog "from /tmp to /home/user/tmp or another tmp file under your"
400 + elog "home directory. This can be done by starting blender, then"
401 + elog "changing the 'Temporary Files' directory in Blender preferences."
402 + elog
403 + ewarn
404 + ewarn "This ebuild does not unbundle the massive amount of 3rd party"
405 + ewarn "libraries which are shipped with blender. Note that"
406 + ewarn "these have caused security issues in the past."
407 + ewarn "If you are concerned about security, file a bug upstream:"
408 + ewarn " https://developer.blender.org/"
409 + ewarn
410 +
411 + if ! use python_single_target_python3_10; then
412 + elog "You are building Blender with a newer python version than"
413 + elog "supported by this version upstream."
414 + elog "If you experience breakages with e.g. plugins, please switch to"
415 + elog "python_single_target_python3_10 instead."
416 + elog "Bug: https://bugs.gentoo.org/737388"
417 + elog
418 + fi
419 +
420 + xdg_icon_cache_update
421 + xdg_mimeinfo_database_update
422 + xdg_desktop_database_update
423 +}
424 +
425 +pkg_postrm() {
426 + xdg_icon_cache_update
427 + xdg_mimeinfo_database_update
428 + xdg_desktop_database_update
429 +
430 + ewarn ""
431 + ewarn "You may want to remove the following directory."
432 + ewarn "~/.config/${PN}/${SLOT}/cache/"
433 + ewarn "It may contain extra render kernels not tracked by portage"
434 + ewarn ""
435 +}