From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gentoo-commits+bounces-1572192-garchives=archives.gentoo.org@lists.gentoo.org> Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id D8993158099 for <garchives@archives.gentoo.org>; Wed, 22 Nov 2023 11:38:13 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 21F292BC065; Wed, 22 Nov 2023 11:38:12 +0000 (UTC) Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id EB9C62BC063 for <gentoo-commits@lists.gentoo.org>; Wed, 22 Nov 2023 11:38:11 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 1401F335DA3 for <gentoo-commits@lists.gentoo.org>; Wed, 22 Nov 2023 11:38:10 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 485BE13BB for <gentoo-commits@lists.gentoo.org>; Wed, 22 Nov 2023 11:38:07 +0000 (UTC) From: "Sam James" <sam@gentoo.org> To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" <sam@gentoo.org> Message-ID: <1700652864.8affb5749fc86c363f0a47b4931e14769918a509.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: media-gfx/blender/ X-VCS-Repository: repo/gentoo X-VCS-Files: media-gfx/blender/Manifest media-gfx/blender/blender-4.0.1.ebuild media-gfx/blender/blender-9999.ebuild media-gfx/blender/metadata.xml X-VCS-Directories: media-gfx/blender/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 8affb5749fc86c363f0a47b4931e14769918a509 X-VCS-Branch: master Date: Wed, 22 Nov 2023 11:38:07 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 1d22d69f-7953-42be-b651-3b44caad0717 X-Archives-Hash: 157c6c6f5922c3ef20b678acfa421777 commit: 8affb5749fc86c363f0a47b4931e14769918a509 Author: Paul Zander <negril.nx+gentoo <AT> gmail <DOT> com> AuthorDate: Fri Nov 17 16:46:45 2023 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Wed Nov 22 11:34:24 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8affb574 media-gfx/blender: add 4.0.1, update 9999 dds support is now provided via openimageio, dropped the useflag. Adjusted the cmake options to use yes/no, so the options we don't set explicitly show up as ON/OFF. Added new cmake options. Dropped explicit setting of DEBUG options as advised by @DarkDefender in https://github.com/gentoo/gentoo/pull/33875#issuecomment-1816840959. They can be passed via MYCMAKEARGS if needed. Changed the test location to T as ED is not allowed outside src_install(). Introduced code so cycles tests use all configured devices. They will still fail because CUDA devices can't be found in sandbox. Added code that sets a supported CUDA_HOST_COMPILER via cuda.eclass when using gcc. Added HIP support to 9999 for testing. Masked test for 4.0.1 because we don't pull the test source from svn anymore. Bug: https://bugs.gentoo.org/895414 Closes: https://bugs.gentoo.org/917482 Signed-off-by: Paul Zander <negril.nx+gentoo <AT> gmail.com> Closes: https://github.com/gentoo/gentoo/pull/33875 Signed-off-by: Sam James <sam <AT> gentoo.org> media-gfx/blender/Manifest | 1 + .../{blender-9999.ebuild => blender-4.0.1.ebuild} | 146 +++++++++++++------- media-gfx/blender/blender-9999.ebuild | 147 ++++++++++++++------- media-gfx/blender/metadata.xml | 3 + 4 files changed, 196 insertions(+), 101 deletions(-) diff --git a/media-gfx/blender/Manifest b/media-gfx/blender/Manifest index 7c56592c6b76..0d2630aac5f1 100644 --- a/media-gfx/blender/Manifest +++ b/media-gfx/blender/Manifest @@ -4,3 +4,4 @@ DIST blender-3.4.1.tar.xz 53666296 BLAKE2B ec5b2771c1b55ecdf3c2c86a413ae55995458 DIST blender-3.5.1.tar.xz 69780800 BLAKE2B 6961280b9d5fb606a35137ce355bf07b4dc16908d5d52cfd3a914907721da16108b8780b1894413a69ab69d455f5d1575697079a24c2bdcecb17174cf7a7c7c7 SHA512 7c9c03de8532884f8ab39fecf1450f8be4bc937a018bd14240ace81a89e422625aba9c4865f6efbb8371f5f01e930932fa5cf03c9d14d44c5312db33e3c56131 DIST blender-3.6.0.tar.xz 70428872 BLAKE2B a43f2c0a2db6fa624b1bd96264462312d31f2e3983c463da9d17b0c793d0d344dfbbc13acfb8bab53cc37f5b5b3479d60b8046475aa6c977074ef35414640eaf SHA512 5fbb7a48d1f18e5cc6430bdefb4d7d9e8a52d387cf92a319c7fbc8836a3f5a6f90fab13f152be49c3558a8f70ed9f0d1f7aeddb264a938496a2f93254bb569cb DIST blender-3.6.5.tar.xz 70447868 BLAKE2B efa366b8aff5c8870c9ed060063eba1115a9ae50b0345c56fbaaab228976afad6f4c6b9c374f22d146fe88db6e0e7aab3d61b1797e71f30f6adfc594599ea2be SHA512 d07e53c708a1e6df18853eb5f0dc032459c74ef43f9559880720170f98ac8729064edb143835f8cec411ab6de42619bed3f0ef1143b288f2a2eb6f05fdfc32ae +DIST blender-4.0.1.tar.xz 73278416 BLAKE2B 06c3397e8c28f544ec5d207db195e33824e9ddeb1b468342e4e7c18773b00b6b42282e8318a7ae96c7a7c81c7e0626e666953d00bf78bf64922047bd563d625a SHA512 288e5a04f274ab351c8517e6de2195f414e618a82fb2a3b2aede5f9120aa6a41f20bc2c4e5190c47b69da841bb1ebe15e9ffee737c1cc2b5979a28b0e1f4c5ae diff --git a/media-gfx/blender/blender-9999.ebuild b/media-gfx/blender/blender-4.0.1.ebuild similarity index 76% copy from media-gfx/blender/blender-9999.ebuild copy to media-gfx/blender/blender-4.0.1.ebuild index d4e734739dd6..1b116ab3679a 100644 --- a/media-gfx/blender/blender-9999.ebuild +++ b/media-gfx/blender/blender-4.0.1.ebuild @@ -3,9 +3,9 @@ EAPI=8 -PYTHON_COMPAT=( python3_10 python3_11 ) +PYTHON_COMPAT=( python3_{10..11} ) -inherit check-reqs cmake flag-o-matic pax-utils python-single-r1 toolchain-funcs xdg-utils +inherit check-reqs cmake cuda flag-o-matic pax-utils python-single-r1 toolchain-funcs xdg-utils DESCRIPTION="3D Creation/Animation/Publishing System" HOMEPAGE="https://www.blender.org" @@ -19,25 +19,26 @@ else SRC_URI="https://download.blender.org/source/${P}.tar.xz" # Update these between major releases. TEST_TARBALL_VERSION="$(ver_cut 1-2).0" - SRC_URI+=" test? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PN}-${TEST_TARBALL_VERSION}-tests.tar.xz )" + # SRC_URI+=" test? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PN}-${TEST_TARBALL_VERSION}-tests.tar.xz )" KEYWORDS="~amd64 ~arm ~arm64" fi SLOT="${PV%.*}" LICENSE="|| ( GPL-3 BL )" -IUSE="+bullet +dds +fluid +openexr +tbb +IUSE="+bullet +fluid +openexr +tbb alembic collada +color-management cuda +cycles cycles-bin-kernels debug doc +embree +ffmpeg +fftw +gmp jack jemalloc jpeg2k man +nanovdb ndof nls openal +oidn +openmp +openpgl +opensubdiv +openvdb optix osl +pdf +potrace +pugixml pulseaudio sdl - +sndfile test +tiff valgrind wayland X" -RESTRICT="!test? ( test )" + +sndfile test +tiff valgrind wayland +webp X" +RESTRICT="test" REQUIRED_USE="${PYTHON_REQUIRED_USE} alembic? ( openexr ) cuda? ( cycles ) cycles? ( openexr tiff ) fluid? ( tbb ) + nanovdb? ( openvdb ) openvdb? ( tbb ) optix? ( cuda ) osl? ( cycles ) @@ -46,6 +47,7 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE} # Library versions for official builds can be found in the blender source directory in: # build_files/build_environment/install_deps.sh RDEPEND="${PYTHON_DEPS} + app-arch/zstd dev-libs/boost:=[nls?] dev-libs/lzo:2= $(python_gen_cond_dep ' @@ -68,7 +70,7 @@ RDEPEND="${PYTHON_DEPS} collada? ( >=media-libs/opencollada-1.6.68 ) color-management? ( media-libs/opencolorio:= ) cuda? ( dev-util/nvidia-cuda-toolkit:= ) - embree? ( >=media-libs/embree-3.10.0[raymask] ) + embree? ( >=media-libs/embree-3.13.0[raymask] ) ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k?,vpx,vorbis,opus,xvid] ) fftw? ( sci-libs/fftw:3.0= ) gmp? ( dev-libs/gmp ) @@ -81,15 +83,15 @@ RDEPEND="${PYTHON_DEPS} ) nls? ( virtual/libiconv ) openal? ( media-libs/openal ) - oidn? ( >=media-libs/oidn-1.4.1 ) + oidn? ( >=media-libs/oidn-1.4.0 ) openexr? ( >=dev-libs/imath-3.1.4-r2:= >=media-libs/openexr-3:0= ) - openpgl? ( media-libs/openpgl ) - opensubdiv? ( >=media-libs/opensubdiv-3.4.0 ) + openpgl? ( >=media-libs/openpgl-0.5.0 ) + opensubdiv? ( >=media-libs/opensubdiv-3.5.0 ) openvdb? ( - >=media-gfx/openvdb-9.0.0:=[nanovdb?] + >=media-gfx/openvdb-10.0.0:=[nanovdb?] dev-libs/c-blosc:= ) optix? ( <dev-libs/optix-7.5.0 ) @@ -107,6 +109,7 @@ RDEPEND="${PYTHON_DEPS} >=dev-libs/wayland-1.12 >=dev-libs/wayland-protocols-1.15 >=x11-libs/libxkbcommon-0.2.0 + dev-util/wayland-scanner media-libs/mesa[wayland] sys-apps/dbus ) @@ -172,7 +175,7 @@ src_unpack() { git-r3_src_unpack git-r3_fetch "${ADDONS_EGIT_REPO_URI}" - git-r3_checkout "${ADDONS_EGIT_REPO_URI} ${S}/scripts/addons" + git-r3_checkout "${ADDONS_EGIT_REPO_URI}" "${S}/scripts/addons" if use test; then TESTS_SVN_URL=https://svn.blender.org/svnroot/bf-blender/trunk/lib/tests @@ -202,22 +205,30 @@ src_prepare() { -i doc/doxygen/Doxyfile || die # Prepare icons and .desktop files for slotting. - sed -e "s|blender.svg|blender-${BV}.svg|" -i source/creator/CMakeLists.txt || die - sed -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" -i source/creator/CMakeLists.txt || die - sed -e "s|blender.desktop|blender-${BV}.desktop|" -i source/creator/CMakeLists.txt || die - - sed -e "s|Name=Blender|Name=Blender ${PV}|" -i release/freedesktop/blender.desktop || die - sed -e "s|Exec=blender|Exec=blender-${BV}|" -i release/freedesktop/blender.desktop || die - sed -e "s|Icon=blender|Icon=blender-${BV}|" -i release/freedesktop/blender.desktop || die - - mv release/freedesktop/icons/scalable/apps/blender.svg "release/freedesktop/icons/scalable/apps/blender-${BV}.svg" || die - mv release/freedesktop/icons/symbolic/apps/blender-symbolic.svg "release/freedesktop/icons/symbolic/apps/blender-${BV}-symbolic.svg" || die + sed \ + -e "s|blender.svg|blender-${BV}.svg|" \ + -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" \ + -e "s|blender.desktop|blender-${BV}.desktop|" \ + -i source/creator/CMakeLists.txt || die + + sed \ + -e "s|Name=Blender|Name=Blender ${PV}|" \ + -e "s|Exec=blender|Exec=blender-${BV}|" \ + -e "s|Icon=blender|Icon=blender-${BV}|" \ + -i release/freedesktop/blender.desktop || die + + mv \ + release/freedesktop/icons/scalable/apps/blender.svg \ + "release/freedesktop/icons/scalable/apps/blender-${BV}.svg" || die + mv \ + release/freedesktop/icons/symbolic/apps/blender-symbolic.svg \ + "release/freedesktop/icons/symbolic/apps/blender-${BV}-symbolic.svg" || die mv release/freedesktop/blender.desktop "release/freedesktop/blender-${BV}.desktop" || die if use test; then # Without this the tests will try to use /usr/bin/blender and /usr/share/blender/ to run the tests. - sed -e "s|set(TEST_INSTALL_DIR.*|set(TEST_INSTALL_DIR ${ED}/usr/)|g" -i tests/CMakeLists.txt || die - sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${ED}/usr/)|g" -i build_files/cmake/Modules/GTestTesting.cmake || die + sed -e "s|set(TEST_INSTALL_DIR.*|set(TEST_INSTALL_DIR ${T}/usr)|g" -i tests/CMakeLists.txt || die + sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${T}/usr)|g" -i build_files/cmake/Modules/GTestTesting.cmake || die fi } @@ -226,46 +237,49 @@ src_configure() { blender_get_version local mycmakeargs=( - -DBUILD_SHARED_LIBS=OFF + -DWITH_LIBS_PRECOMPILED=no + -DBUILD_SHARED_LIBS=no -DPYTHON_INCLUDE_DIR="$(python_get_includedir)" -DPYTHON_LIBRARY="$(python_get_library_path)" -DPYTHON_VERSION="${EPYTHON/python/}" -DWITH_ALEMBIC=$(usex alembic) - -DWITH_ASSERT_ABORT=$(usex debug) - -DWITH_BOOST=ON + -DWITH_BOOST=yes -DWITH_BULLET=$(usex bullet) -DWITH_CODEC_FFMPEG=$(usex ffmpeg) -DWITH_CODEC_SNDFILE=$(usex sndfile) - -DWITH_CXX_GUARDEDALLOC=$(usex debug) -DWITH_CYCLES=$(usex cycles) - -DWITH_CYCLES_CUDA_BINARIES=$(usex cycles-bin-kernels) - -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda TRUE FALSE) + -DWITH_CYCLES_CUDA_BINARIES=$(usex cuda $(usex cycles-bin-kernels)) + -DWITH_CYCLES_DEVICE_ONEAPI=no + -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda) + -DWITH_CYCLES_DEVICE_HIP=no -DWITH_CYCLES_DEVICE_OPTIX=$(usex optix) -DWITH_CYCLES_EMBREE=$(usex embree) + -DWITH_CYCLES_HIP_BINARIES=no + -DWITH_CYCLES_ONEAPI_BINARIES=no -DWITH_CYCLES_OSL=$(usex osl) -DWITH_CYCLES_PATH_GUIDING=$(usex openpgl) - -DWITH_CYCLES_STANDALONE=OFF - -DWITH_CYCLES_STANDALONE_GUI=OFF + -DWITH_CYCLES_STANDALONE=no + -DWITH_CYCLES_STANDALONE_GUI=no -DWITH_DOC_MANPAGE=$(usex man) -DWITH_FFTW3=$(usex fftw) -DWITH_GHOST_WAYLAND=$(usex wayland) -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" -DWITH_GHOST_WAYLAND_DBUS=$(usex wayland) - -DWITH_GHOST_WAYLAND_DYNLOAD=OFF - -DWITH_GHOST_WAYLAND_LIBDECOR=OFF + -DWITH_GHOST_WAYLAND_DYNLOAD=no + -DWITH_GHOST_WAYLAND_LIBDECOR=no -DWITH_GHOST_X11=$(usex X) -DWITH_GMP=$(usex gmp) -DWITH_GTESTS=$(usex test) -DWITH_HARU=$(usex pdf) -DWITH_HEADLESS=$($(use X || use wayland) && echo OFF || echo ON) - -DWITH_INSTALL_PORTABLE=OFF - -DWITH_IMAGE_DDS=$(usex dds) + -DWITH_INSTALL_PORTABLE=no -DWITH_IMAGE_OPENEXR=$(usex openexr) -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k) - -DWITH_IMAGE_TIFF=$(usex tiff) + -DWITH_IMAGE_WEBP=$(usex webp) -DWITH_INPUT_NDOF=$(usex ndof) -DWITH_INTERNATIONAL=$(usex nls) -DWITH_JACK=$(usex jack) + -DWITH_MATERIALX=no -DWITH_MEM_JEMALLOC=$(usex jemalloc) -DWITH_MEM_VALGRIND=$(usex valgrind) -DWITH_MOD_FLUID=$(usex fluid) @@ -282,15 +296,21 @@ src_configure() { -DWITH_POTRACE=$(usex potrace) -DWITH_PUGIXML=$(usex pugixml) -DWITH_PULSEAUDIO=$(usex pulseaudio) - -DWITH_PYTHON_INSTALL=OFF + -DWITH_PYTHON_INSTALL=no + -DWITH_DRACO=no + -DWITH_PYTHON_INSTALL_NUMPY=no + -DWITH_PYTHON_INSTALL_ZSTANDARD=no -DWITH_SDL=$(usex sdl) - -DWITH_STATIC_LIBS=OFF - -DWITH_SYSTEM_EIGEN3=ON - -DWITH_SYSTEM_FREETYPE=ON - -DWITH_SYSTEM_LZO=ON + -DWITH_STATIC_LIBS=no + -DWITH_SYSTEM_EIGEN3=yes + -DWITH_SYSTEM_FREETYPE=yes + -DWITH_SYSTEM_LZO=yes -DWITH_TBB=$(usex tbb) - -DWITH_USD=OFF - -DWITH_XR_OPENXR=OFF + + -DWITH_USD=no + -DWITH_HYDRA=no + + -DWITH_XR_OPENXR=no ) if use optix; then @@ -303,14 +323,38 @@ src_configure() { # This is currently needed on arm64 to get the NEON SIMD wrapper to compile the code successfully use arm64 && append-flags -flax-vector-conversions - append-flags $(usex debug '-DDEBUG' '-DNDEBUG') + append-cflags $(usex debug '-DDEBUG' '-DNDEBUG') + append-cppflags $(usex debug '-DDEBUG' '-DNDEBUG') if tc-is-gcc ; then # These options only exist when GCC is detected. # We disable these to respect the user's choice of linker. mycmakeargs+=( - -DWITH_LINKER_GOLD=OFF - -DWITH_LINKER_LLD=OFF + -DWITH_LINKER_GOLD=no + -DWITH_LINKER_LLD=no + ) + # Ease compiling with required gcc similar to cuda_sanitize but for cmake + use cuda && use cycles-bin-kernels && mycmakeargs+=( -DCUDA_HOST_COMPILER="$(cuda_gccdir)" ) + fi + if tc-is-clang ; then + mycmakeargs+=( + -DWITH_CLANG=yes + -DWITH_LLVM=yes + ) + fi + + if use test ; then + local CYCLES_TEST_DEVICES=( "CPU" ) + if use cycles-bin-kernels; then + use cuda && CYCLES_TEST_DEVICES+=( "CUDA" ) + use optix && CYCLES_TEST_DEVICES+=( "OPTIX" ) + fi + mycmakeargs+=( + -DCYCLES_TEST_DEVICES:STRING="$(local IFS=";"; echo "${CYCLES_TEST_DEVICES[*]}")" + -DWITH_COMPOSITOR_REALTIME_TESTS=yes + -DWITH_GTESTS=yes + -DWITH_OPENGL_DRAW_TESTS=yes + -DWITH_OPENGL_RENDER_TESTS=yes ) fi @@ -320,13 +364,13 @@ src_configure() { src_test() { # A lot of tests needs to have access to the installed data files. # So install them into the image directory now. - cmake_src_install + DESTDIR="${T}" cmake_build install "$@" blender_get_version # Define custom blender data/script file paths not be able to find them otherwise during testing. # (Because the data is in the image directory and it will default to look in /usr/share) - export BLENDER_SYSTEM_SCRIPTS="${ED}"/usr/share/blender/${BV}/scripts - export BLENDER_SYSTEM_DATAFILES="${ED}"/usr/share/blender/${BV}/datafiles + export BLENDER_SYSTEM_SCRIPTS="${T}/usr/share/blender/${BV}/scripts" + export BLENDER_SYSTEM_DATAFILES="${T}/usr/share/blender/${BV}/datafiles" # Sanity check that the script and datafile path is valid. # If they are not vaild, blender will fallback to the default path which is not what we want. @@ -336,7 +380,7 @@ src_test() { cmake_src_test # Clean up the image directory for src_install - rm -fr "${ED}"/* || die + rm -fr "${T}"/usr || die } src_install() { diff --git a/media-gfx/blender/blender-9999.ebuild b/media-gfx/blender/blender-9999.ebuild index d4e734739dd6..5f522c229202 100644 --- a/media-gfx/blender/blender-9999.ebuild +++ b/media-gfx/blender/blender-9999.ebuild @@ -3,9 +3,9 @@ EAPI=8 -PYTHON_COMPAT=( python3_10 python3_11 ) +PYTHON_COMPAT=( python3_{10..12} ) -inherit check-reqs cmake flag-o-matic pax-utils python-single-r1 toolchain-funcs xdg-utils +inherit check-reqs cmake cuda flag-o-matic pax-utils python-single-r1 toolchain-funcs xdg-utils DESCRIPTION="3D Creation/Animation/Publishing System" HOMEPAGE="https://www.blender.org" @@ -25,12 +25,12 @@ fi SLOT="${PV%.*}" LICENSE="|| ( GPL-3 BL )" -IUSE="+bullet +dds +fluid +openexr +tbb +IUSE="+bullet +fluid +openexr +tbb alembic collada +color-management cuda +cycles cycles-bin-kernels - debug doc +embree +ffmpeg +fftw +gmp jack jemalloc jpeg2k + debug doc +embree +ffmpeg +fftw +gmp hip jack jemalloc jpeg2k man +nanovdb ndof nls openal +oidn +openmp +openpgl +opensubdiv +openvdb optix osl +pdf +potrace +pugixml pulseaudio sdl - +sndfile test +tiff valgrind wayland X" + +sndfile test +tiff valgrind wayland +webp X" RESTRICT="!test? ( test )" REQUIRED_USE="${PYTHON_REQUIRED_USE} @@ -38,6 +38,8 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE} cuda? ( cycles ) cycles? ( openexr tiff ) fluid? ( tbb ) + hip? ( cycles ) + nanovdb? ( openvdb ) openvdb? ( tbb ) optix? ( cuda ) osl? ( cycles ) @@ -46,6 +48,7 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE} # Library versions for official builds can be found in the blender source directory in: # build_files/build_environment/install_deps.sh RDEPEND="${PYTHON_DEPS} + app-arch/zstd dev-libs/boost:=[nls?] dev-libs/lzo:2= $(python_gen_cond_dep ' @@ -68,10 +71,11 @@ RDEPEND="${PYTHON_DEPS} collada? ( >=media-libs/opencollada-1.6.68 ) color-management? ( media-libs/opencolorio:= ) cuda? ( dev-util/nvidia-cuda-toolkit:= ) - embree? ( >=media-libs/embree-3.10.0[raymask] ) + embree? ( >=media-libs/embree-3.13.0[raymask] ) ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k?,vpx,vorbis,opus,xvid] ) fftw? ( sci-libs/fftw:3.0= ) gmp? ( dev-libs/gmp ) + hip? ( dev-util/hip ) jack? ( virtual/jack ) jemalloc? ( dev-libs/jemalloc:= ) jpeg2k? ( media-libs/openjpeg:2= ) @@ -81,15 +85,15 @@ RDEPEND="${PYTHON_DEPS} ) nls? ( virtual/libiconv ) openal? ( media-libs/openal ) - oidn? ( >=media-libs/oidn-1.4.1 ) + oidn? ( >=media-libs/oidn-1.4.0 ) openexr? ( >=dev-libs/imath-3.1.4-r2:= >=media-libs/openexr-3:0= ) - openpgl? ( media-libs/openpgl ) - opensubdiv? ( >=media-libs/opensubdiv-3.4.0 ) + openpgl? ( >=media-libs/openpgl-0.5.0 ) + opensubdiv? ( >=media-libs/opensubdiv-3.5.0 ) openvdb? ( - >=media-gfx/openvdb-9.0.0:=[nanovdb?] + >=media-gfx/openvdb-10.0.0:=[nanovdb?] dev-libs/c-blosc:= ) optix? ( <dev-libs/optix-7.5.0 ) @@ -107,6 +111,7 @@ RDEPEND="${PYTHON_DEPS} >=dev-libs/wayland-1.12 >=dev-libs/wayland-protocols-1.15 >=x11-libs/libxkbcommon-0.2.0 + dev-util/wayland-scanner media-libs/mesa[wayland] sys-apps/dbus ) @@ -172,7 +177,7 @@ src_unpack() { git-r3_src_unpack git-r3_fetch "${ADDONS_EGIT_REPO_URI}" - git-r3_checkout "${ADDONS_EGIT_REPO_URI} ${S}/scripts/addons" + git-r3_checkout "${ADDONS_EGIT_REPO_URI}" "${S}/scripts/addons" if use test; then TESTS_SVN_URL=https://svn.blender.org/svnroot/bf-blender/trunk/lib/tests @@ -202,22 +207,30 @@ src_prepare() { -i doc/doxygen/Doxyfile || die # Prepare icons and .desktop files for slotting. - sed -e "s|blender.svg|blender-${BV}.svg|" -i source/creator/CMakeLists.txt || die - sed -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" -i source/creator/CMakeLists.txt || die - sed -e "s|blender.desktop|blender-${BV}.desktop|" -i source/creator/CMakeLists.txt || die - - sed -e "s|Name=Blender|Name=Blender ${PV}|" -i release/freedesktop/blender.desktop || die - sed -e "s|Exec=blender|Exec=blender-${BV}|" -i release/freedesktop/blender.desktop || die - sed -e "s|Icon=blender|Icon=blender-${BV}|" -i release/freedesktop/blender.desktop || die - - mv release/freedesktop/icons/scalable/apps/blender.svg "release/freedesktop/icons/scalable/apps/blender-${BV}.svg" || die - mv release/freedesktop/icons/symbolic/apps/blender-symbolic.svg "release/freedesktop/icons/symbolic/apps/blender-${BV}-symbolic.svg" || die + sed \ + -e "s|blender.svg|blender-${BV}.svg|" \ + -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" \ + -e "s|blender.desktop|blender-${BV}.desktop|" \ + -i source/creator/CMakeLists.txt || die + + sed \ + -e "s|Name=Blender|Name=Blender ${PV}|" \ + -e "s|Exec=blender|Exec=blender-${BV}|" \ + -e "s|Icon=blender|Icon=blender-${BV}|" \ + -i release/freedesktop/blender.desktop || die + + mv \ + release/freedesktop/icons/scalable/apps/blender.svg \ + "release/freedesktop/icons/scalable/apps/blender-${BV}.svg" || die + mv \ + release/freedesktop/icons/symbolic/apps/blender-symbolic.svg \ + "release/freedesktop/icons/symbolic/apps/blender-${BV}-symbolic.svg" || die mv release/freedesktop/blender.desktop "release/freedesktop/blender-${BV}.desktop" || die if use test; then # Without this the tests will try to use /usr/bin/blender and /usr/share/blender/ to run the tests. - sed -e "s|set(TEST_INSTALL_DIR.*|set(TEST_INSTALL_DIR ${ED}/usr/)|g" -i tests/CMakeLists.txt || die - sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${ED}/usr/)|g" -i build_files/cmake/Modules/GTestTesting.cmake || die + sed -e "s|set(TEST_INSTALL_DIR.*|set(TEST_INSTALL_DIR ${T}/usr)|g" -i tests/CMakeLists.txt || die + sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${T}/usr)|g" -i build_files/cmake/Modules/GTestTesting.cmake || die fi } @@ -226,46 +239,49 @@ src_configure() { blender_get_version local mycmakeargs=( - -DBUILD_SHARED_LIBS=OFF + -DWITH_LIBS_PRECOMPILED=no + -DBUILD_SHARED_LIBS=no -DPYTHON_INCLUDE_DIR="$(python_get_includedir)" -DPYTHON_LIBRARY="$(python_get_library_path)" -DPYTHON_VERSION="${EPYTHON/python/}" -DWITH_ALEMBIC=$(usex alembic) - -DWITH_ASSERT_ABORT=$(usex debug) - -DWITH_BOOST=ON + -DWITH_BOOST=yes -DWITH_BULLET=$(usex bullet) -DWITH_CODEC_FFMPEG=$(usex ffmpeg) -DWITH_CODEC_SNDFILE=$(usex sndfile) - -DWITH_CXX_GUARDEDALLOC=$(usex debug) -DWITH_CYCLES=$(usex cycles) - -DWITH_CYCLES_CUDA_BINARIES=$(usex cycles-bin-kernels) - -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda TRUE FALSE) + -DWITH_CYCLES_CUDA_BINARIES=$(usex cuda $(usex cycles-bin-kernels)) + -DWITH_CYCLES_DEVICE_ONEAPI=no + -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda) + -DWITH_CYCLES_DEVICE_HIP=$(usex hip) -DWITH_CYCLES_DEVICE_OPTIX=$(usex optix) -DWITH_CYCLES_EMBREE=$(usex embree) + -DWITH_CYCLES_HIP_BINARIES=$(usex hip $(usex cycles-bin-kernels)) + -DWITH_CYCLES_ONEAPI_BINARIES=no -DWITH_CYCLES_OSL=$(usex osl) -DWITH_CYCLES_PATH_GUIDING=$(usex openpgl) - -DWITH_CYCLES_STANDALONE=OFF - -DWITH_CYCLES_STANDALONE_GUI=OFF + -DWITH_CYCLES_STANDALONE=no + -DWITH_CYCLES_STANDALONE_GUI=no -DWITH_DOC_MANPAGE=$(usex man) -DWITH_FFTW3=$(usex fftw) -DWITH_GHOST_WAYLAND=$(usex wayland) -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" -DWITH_GHOST_WAYLAND_DBUS=$(usex wayland) - -DWITH_GHOST_WAYLAND_DYNLOAD=OFF - -DWITH_GHOST_WAYLAND_LIBDECOR=OFF + -DWITH_GHOST_WAYLAND_DYNLOAD=no + -DWITH_GHOST_WAYLAND_LIBDECOR=no -DWITH_GHOST_X11=$(usex X) -DWITH_GMP=$(usex gmp) -DWITH_GTESTS=$(usex test) -DWITH_HARU=$(usex pdf) -DWITH_HEADLESS=$($(use X || use wayland) && echo OFF || echo ON) - -DWITH_INSTALL_PORTABLE=OFF - -DWITH_IMAGE_DDS=$(usex dds) + -DWITH_INSTALL_PORTABLE=no -DWITH_IMAGE_OPENEXR=$(usex openexr) -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k) - -DWITH_IMAGE_TIFF=$(usex tiff) + -DWITH_IMAGE_WEBP=$(usex webp) -DWITH_INPUT_NDOF=$(usex ndof) -DWITH_INTERNATIONAL=$(usex nls) -DWITH_JACK=$(usex jack) + -DWITH_MATERIALX=no -DWITH_MEM_JEMALLOC=$(usex jemalloc) -DWITH_MEM_VALGRIND=$(usex valgrind) -DWITH_MOD_FLUID=$(usex fluid) @@ -282,15 +298,21 @@ src_configure() { -DWITH_POTRACE=$(usex potrace) -DWITH_PUGIXML=$(usex pugixml) -DWITH_PULSEAUDIO=$(usex pulseaudio) - -DWITH_PYTHON_INSTALL=OFF + -DWITH_PYTHON_INSTALL=no + -DWITH_DRACO=no + -DWITH_PYTHON_INSTALL_NUMPY=no + -DWITH_PYTHON_INSTALL_ZSTANDARD=no -DWITH_SDL=$(usex sdl) - -DWITH_STATIC_LIBS=OFF - -DWITH_SYSTEM_EIGEN3=ON - -DWITH_SYSTEM_FREETYPE=ON - -DWITH_SYSTEM_LZO=ON + -DWITH_STATIC_LIBS=no + -DWITH_SYSTEM_EIGEN3=yes + -DWITH_SYSTEM_FREETYPE=yes + -DWITH_SYSTEM_LZO=yes -DWITH_TBB=$(usex tbb) - -DWITH_USD=OFF - -DWITH_XR_OPENXR=OFF + + -DWITH_USD=no + -DWITH_HYDRA=no + + -DWITH_XR_OPENXR=no ) if use optix; then @@ -303,14 +325,39 @@ src_configure() { # This is currently needed on arm64 to get the NEON SIMD wrapper to compile the code successfully use arm64 && append-flags -flax-vector-conversions - append-flags $(usex debug '-DDEBUG' '-DNDEBUG') + append-cflags $(usex debug '-DDEBUG' '-DNDEBUG') + append-cppflags $(usex debug '-DDEBUG' '-DNDEBUG') if tc-is-gcc ; then # These options only exist when GCC is detected. # We disable these to respect the user's choice of linker. mycmakeargs+=( - -DWITH_LINKER_GOLD=OFF - -DWITH_LINKER_LLD=OFF + -DWITH_LINKER_GOLD=no + -DWITH_LINKER_LLD=no + ) + # Ease compiling with required gcc similar to cuda_sanitize but for cmake + use cuda && use cycles-bin-kernels && mycmakeargs+=( -DCUDA_HOST_COMPILER="$(cuda_gccdir)" ) + fi + if tc-is-clang ; then + mycmakeargs+=( + -DWITH_CLANG=yes + -DWITH_LLVM=yes + ) + fi + + if use test ; then + local CYCLES_TEST_DEVICES=( "CPU" ) + if use cycles-bin-kernels; then + use cuda && CYCLES_TEST_DEVICES+=( "CUDA" ) + use optix && CYCLES_TEST_DEVICES+=( "OPTIX" ) + use hip && CYCLES_TEST_DEVICES+=( "HIP" ) + fi + mycmakeargs+=( + -DCYCLES_TEST_DEVICES:STRING="$(local IFS=";"; echo "${CYCLES_TEST_DEVICES[*]}")" + -DWITH_COMPOSITOR_REALTIME_TESTS=yes + -DWITH_GTESTS=yes + -DWITH_OPENGL_DRAW_TESTS=yes + -DWITH_OPENGL_RENDER_TESTS=yes ) fi @@ -320,13 +367,13 @@ src_configure() { src_test() { # A lot of tests needs to have access to the installed data files. # So install them into the image directory now. - cmake_src_install + DESTDIR="${T}" cmake_build install "$@" blender_get_version # Define custom blender data/script file paths not be able to find them otherwise during testing. # (Because the data is in the image directory and it will default to look in /usr/share) - export BLENDER_SYSTEM_SCRIPTS="${ED}"/usr/share/blender/${BV}/scripts - export BLENDER_SYSTEM_DATAFILES="${ED}"/usr/share/blender/${BV}/datafiles + export BLENDER_SYSTEM_SCRIPTS="${T}/usr/share/blender/${BV}/scripts" + export BLENDER_SYSTEM_DATAFILES="${T}/usr/share/blender/${BV}/datafiles" # Sanity check that the script and datafile path is valid. # If they are not vaild, blender will fallback to the default path which is not what we want. @@ -336,7 +383,7 @@ src_test() { cmake_src_test # Clean up the image directory for src_install - rm -fr "${ED}"/* || die + rm -fr "${T}"/usr || die } src_install() { diff --git a/media-gfx/blender/metadata.xml b/media-gfx/blender/metadata.xml index 5b6cbb8d18d1..533ef36d911a 100644 --- a/media-gfx/blender/metadata.xml +++ b/media-gfx/blender/metadata.xml @@ -33,6 +33,9 @@ <flag name="cuda"> Build cycles renderer with nVidia CUDA support. </flag> + <flag name="hip"> + Build cycles renderer with AMD HIP support. + </flag> <flag name="cycles"> Build cycles renderer (requires <pkg>media-libs/openimageio</pkg> and <pkg>dev-libs/boost</pkg>).