From bb59556b3302a941db4630613c604644d5f7a617 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Fri, 11 Apr 2025 08:43:59 +0100 Subject: gentoo auto-resync : 11:04:2025 - 08:43:58 --- media-gfx/Manifest.gz | Bin 38219 -> 38223 bytes media-gfx/blender/Manifest | 8 +- media-gfx/blender/blender-4.1.1-r4.ebuild | 602 ------------------------ media-gfx/blender/blender-4.1.1-r5.ebuild | 606 ++++++++++++++++++++++++ media-gfx/blender/blender-4.2.4-r1.ebuild | 607 ------------------------ media-gfx/blender/blender-4.2.4-r2.ebuild | 611 ++++++++++++++++++++++++ media-gfx/blender/blender-4.3.2-r1.ebuild | 608 ------------------------ media-gfx/blender/blender-4.3.2-r2.ebuild | 612 +++++++++++++++++++++++++ media-gfx/blender/blender-9999.ebuild | 6 +- media-gfx/prusaslicer/Manifest | 4 +- media-gfx/prusaslicer/prusaslicer-2.9.0.ebuild | 113 ----- media-gfx/prusaslicer/prusaslicer-2.9.2.ebuild | 111 +++++ 12 files changed, 1951 insertions(+), 1937 deletions(-) delete mode 100644 media-gfx/blender/blender-4.1.1-r4.ebuild create mode 100644 media-gfx/blender/blender-4.1.1-r5.ebuild delete mode 100644 media-gfx/blender/blender-4.2.4-r1.ebuild create mode 100644 media-gfx/blender/blender-4.2.4-r2.ebuild delete mode 100644 media-gfx/blender/blender-4.3.2-r1.ebuild create mode 100644 media-gfx/blender/blender-4.3.2-r2.ebuild delete mode 100644 media-gfx/prusaslicer/prusaslicer-2.9.0.ebuild create mode 100644 media-gfx/prusaslicer/prusaslicer-2.9.2.ebuild (limited to 'media-gfx') diff --git a/media-gfx/Manifest.gz b/media-gfx/Manifest.gz index 3d82f04084af..45fc51dbdc95 100644 Binary files a/media-gfx/Manifest.gz and b/media-gfx/Manifest.gz differ diff --git a/media-gfx/blender/Manifest b/media-gfx/blender/Manifest index bee1f4e6649e..6fdc428b17a0 100644 --- a/media-gfx/blender/Manifest +++ b/media-gfx/blender/Manifest @@ -8,8 +8,8 @@ DIST blender-4.1.1.tar.xz 82146268 BLAKE2B 1ab4a6c1046851ef619394c62fc73794430dc DIST blender-4.2.4.tar.xz 72804204 BLAKE2B 613ae4671cc9263d18fe988b07e8744eb04f67fe53f1c14ad3fbc7d80c58a577e7753871ca775cd40ab5f26ef2bc9030cda57012dda0c4785769f04263aea15b SHA512 1f61c1866aaa680c91fc6e3402b1e10533c8cce32572ffb825c53dc7c15ca51f1157a32d10134ca9e612fbf719406421ccc920b2d8ddd2993675784797381c6a DIST blender-4.3.2.tar.xz 74473996 BLAKE2B 9a5c8973561f3296b0ec35990ab4951e34f7c0dd5bee3dd120a49989dc8ca7ebfc9610654e8be9d14463af2197626f490324cdd03118db755f5d0b1f7acce375 SHA512 44697faf9acc2c1e75783d432a1a0040339c3445834961a995e95974d4088e75ee5cb647a3908125259d1910d180910e5bc50d34d40d35f33e03197893581477 EBUILD blender-3.6.18-r1.ebuild 14139 BLAKE2B 7a228242dd7b9f8a3d1f90db34a140c7107cbc867eb45445af19a9ebade3520355b4116b00e703af774f96d1786bf86a401736be8e5c608470332736e4b3c902 SHA512 935d9ae19518fa732f44ff1f6fc982dae741f2303f34849a3340c35b0a7495cb90801b573273b885543bb03a7b7acae422ce221b78388c1176b3667a17a3013d -EBUILD blender-4.1.1-r4.ebuild 17514 BLAKE2B 262a0baacd13f6317d477edd22c521c0f4b6949aee209ddf7f87d35f079afcb3fdb36256319726ce7c9c429f77a19054d59732edef6247403d6099a5ed483b4d SHA512 357088f90093d84b3732a862ae99b68dd99915d908ed5ccceb35a17e97913436178dbfb9f953b4ebe0549bc1cb60d50010609e8bd0355aac3f13c2dafd442b15 -EBUILD blender-4.2.4-r1.ebuild 17336 BLAKE2B c92d040e877556af726ca3d591d90f451e103673f5e6d3657c7a1d9e085d1b1dab2a89eac443755f9fb4dc5f51ac5787c5e3b88d19d013b39f11ef6cedcbc3a3 SHA512 1c817081e243434750d86f0c6d6c711d95d6385470447f2869104a679b86bb228b4908f6c1c91a748489a40abd5ace09ef4aaa02bd3d3c96a8119a63f70a68d2 -EBUILD blender-4.3.2-r1.ebuild 17378 BLAKE2B 9c73ef6b70aaff2b4fc5762c4a6a0028b4767c9a30715cc937a0af9d65960edf5ae14872e53db8b7c256297e9c09bdcd1bfd7df47baaa1bdcdba5360a980797a SHA512 f7b491da4b2786c5f1b43c085ebff4e7ff3055f61850be88f27a12a7629e0e4d2d0be3d36186b7baf13d7faa4f62346ec901433b681dd81cbb1ccccf18d9abb0 -EBUILD blender-9999.ebuild 17338 BLAKE2B 54e2eadbf4fafd83b160732df13d62219b164e9d212cbddceb21af88c730574c0ee743f719fe06a39d024651f3f62598a83eabedce830eecb710e84bda260449 SHA512 3b7b7bfe04683aa41cdff10fcf9191b09c04698b3ec35a6d57bdb568d10b0d61f9b2bcfac60d9ef6f5131bbb47e8c614e8e283166778b2bc874ba267042d95e3 +EBUILD blender-4.1.1-r5.ebuild 17574 BLAKE2B 7dfe59a1b2c0dd3452aef3c4d27d464ae3dd5a0148139d0d2d2471ca94832f8c518e00b9f7217ac3bb2acc45c2de1381cbc7e72f9158019ac8a10e98e1677986 SHA512 697cf61f07cd5a6cba32d44e87505b99670ff79812405ff1d95b4e95c5f09ffa6a9a5683443a4d49fab79caab72e16c645f31980e16dcc311a677157412f2944 +EBUILD blender-4.2.4-r2.ebuild 17396 BLAKE2B 54ddb0cdef3bede7bd52720d4215b917b034888fef661a84db8b00616d42a5971ca6be8cc3a1f3a91491b533d276faca67ebb5090016e944cd641f8797687b28 SHA512 757140d9cc44021df22f38c29f490e17423ae4452f0eb3277fa0b8742bf2743bf7165a31e437891ae44a45d11b4aa36cc1cc81b530fa64bc4990607a494e428e +EBUILD blender-4.3.2-r2.ebuild 17438 BLAKE2B 619d27d929ad25dd54b5c7ebc80294e8ae642d1c916b6c8352add0cd621f9d24d84a4b945dc8e4c5e7e93495475e5317085fff4bb318e9a778d668f0a8780377 SHA512 4a7bc66241db53cd2758b1f0a96ad6592b8f4216d413607eac3b7ffd4d17371a5a17d20fe9a96f506b23e6b1a9fd45622092ad3d758558853573aefb1681c315 +EBUILD blender-9999.ebuild 17398 BLAKE2B 8d1cc6760b7216167c6ba7bca93f802dea6db931d679b286494c93de8fec784d42b4e5c196ffb7077e7f9772acb7c69d19d3caedbf722247080b8dbaf12e49e2 SHA512 bd0f8f00a32c25b560330351980439638a2fe1010b531714e6a841e23380a8a6ff0b8592510206fc82e972fee9969e4b358e6f9be8d2794eb1e6e5d6f4d5fb3b MISC metadata.xml 3459 BLAKE2B 6fb5c60150a6ff87ef3011bd439886dbba0d41137cd7eb36afe5ce13daf4038178880f19a3afda52decc576132d6b44b17d99bafb611207b8417790706b299f9 SHA512 8057e29057a0a2d3851c44c95116b5ac8c04fbbf3efd1540df63ffe7837201007a99883fca9c6e31f89fb20a099959a81f97d88b14f99cf4910ae9e771b5fdbc diff --git a/media-gfx/blender/blender-4.1.1-r4.ebuild b/media-gfx/blender/blender-4.1.1-r4.ebuild deleted file mode 100644 index 3fbedcbe3c5f..000000000000 --- a/media-gfx/blender/blender-4.1.1-r4.ebuild +++ /dev/null @@ -1,602 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{11..12} ) -# NOTE must match media-libs/osl -LLVM_COMPAT=( {15..18} ) -LLVM_OPTIONAL=1 - -inherit check-reqs cmake cuda flag-o-matic llvm-r1 pax-utils python-single-r1 toolchain-funcs xdg-utils - -DESCRIPTION="3D Creation/Animation/Publishing System" -HOMEPAGE="https://www.blender.org" - -if [[ ${PV} = *9999* ]] ; then - EGIT_LFS="yes" - inherit git-r3 - EGIT_REPO_URI="https://projects.blender.org/blender/blender.git" - EGIT_SUBMODULES=( '*' '-lib/*' ) - ADDONS_EGIT_REPO_URI="https://projects.blender.org/blender/blender-addons.git" - RESTRICT="!test? ( test )" -else - SRC_URI=" - https://download.blender.org/source/${P}.tar.xz - " - # test? ( - # https://projects.blender.org/blender/blender-test-data/archive/blender-v$(ver_cut 1-2)-release.tar.gz - # ) - # " - KEYWORDS="amd64 ~arm ~arm64" - RESTRICT="test" # the test archive returns LFS references. -fi - -LICENSE="GPL-3+ cycles? ( Apache-2.0 )" -SLOT="${PV%.*}" -IUSE=" - alembic +bullet collada +color-management cuda +cycles +cycles-bin-kernels - debug doc +embree experimental +ffmpeg +fftw +fluid +gmp gnome hip jack - jemalloc jpeg2k man +nanovdb ndof nls +oidn oneapi openal +openexr +openmp openpgl - +opensubdiv +openvdb optix osl +otf +pdf +potrace +pugixml pulseaudio - renderdoc sdl +sndfile +tbb test +tiff valgrind vulkan wayland +webp X -" - -REQUIRED_USE="${PYTHON_REQUIRED_USE} - alembic? ( openexr ) - cuda? ( cycles ) - cycles? ( openexr tiff tbb ) - fluid? ( tbb ) - gnome? ( wayland ) - hip? ( cycles ) - nanovdb? ( openvdb ) - openvdb? ( tbb openexr ) - optix? ( cuda ) - osl? ( cycles pugixml ) - test? ( color-management )" - -# Library versions for official builds can be found in the blender source directory in: -# build_files/build_environment/cmake/versions.cmake -RDEPEND="${PYTHON_DEPS} - app-arch/zstd - dev-libs/boost:=[nls?] - dev-libs/lzo:2= - $(python_gen_cond_dep ' - dev-python/cython[${PYTHON_USEDEP}] - dev-python/numpy[${PYTHON_USEDEP}] - dev-python/zstandard[${PYTHON_USEDEP}] - dev-python/requests[${PYTHON_USEDEP}] - ') - media-libs/freetype:=[brotli] - media-libs/libepoxy:= - media-libs/libjpeg-turbo:= - media-libs/libpng:= - media-libs/libsamplerate - >=media-libs/openimageio-2.5.6.0:= - sys-libs/zlib:= - virtual/glu - virtual/libintl - virtual/opengl - alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] ) - collada? ( >=media-libs/opencollada-1.6.68 ) - color-management? ( media-libs/opencolorio:= ) - cuda? ( dev-util/nvidia-cuda-toolkit:= ) - embree? ( media-libs/embree:=[raymask] ) - ffmpeg? ( media-video/ffmpeg:=[encode(+),lame(-),jpeg2k?,opus,theora,vorbis,vpx,x264,xvid] ) - fftw? ( sci-libs/fftw:3.0= ) - gmp? ( dev-libs/gmp[cxx] ) - gnome? ( gui-libs/libdecor ) - hip? ( >=dev-util/hip-5.7 ) - jack? ( virtual/jack ) - jemalloc? ( dev-libs/jemalloc:= ) - jpeg2k? ( media-libs/openjpeg:2= ) - ndof? ( - app-misc/spacenavd - dev-libs/libspnav - ) - nls? ( virtual/libiconv ) - openal? ( media-libs/openal ) - oidn? ( >=media-libs/oidn-2.1.0 ) - oneapi? ( dev-libs/intel-compute-runtime[l0] ) - openexr? ( - >=dev-libs/imath-3.1.7:= - >=media-libs/openexr-3.2.1:0= - ) - openpgl? ( media-libs/openpgl:= ) - opensubdiv? ( >=media-libs/opensubdiv-3.5.0 ) - openvdb? ( - >=media-gfx/openvdb-11.0.0:=[nanovdb?] - dev-libs/c-blosc:= - ) - optix? ( dev-libs/optix ) - osl? ( - >=media-libs/osl-1.13:=[${LLVM_USEDEP}] - media-libs/mesa[${LLVM_USEDEP}] - ) - pdf? ( media-libs/libharu ) - potrace? ( media-gfx/potrace ) - pugixml? ( dev-libs/pugixml ) - pulseaudio? ( media-libs/libpulse ) - sdl? ( media-libs/libsdl2[sound,joystick] ) - sndfile? ( media-libs/libsndfile ) - tbb? ( dev-cpp/tbb:= ) - tiff? ( media-libs/tiff:= ) - valgrind? ( dev-debug/valgrind ) - wayland? ( - >=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 - ) - vulkan? ( - media-libs/shaderc - dev-util/spirv-tools - dev-util/glslang - media-libs/vulkan-loader - ) - otf? ( - media-libs/harfbuzz - ) - renderdoc? ( - media-gfx/renderdoc - ) - X? ( - x11-libs/libX11 - x11-libs/libXi - x11-libs/libXxf86vm - ) -" - -DEPEND="${RDEPEND} - dev-cpp/eigen:= - vulkan? ( - dev-util/spirv-headers - dev-util/vulkan-headers - ) -" - -BDEPEND=" - virtual/pkgconfig - doc? ( - app-text/doxygen[dot] - dev-python/sphinx[latex] - dev-texlive/texlive-bibtexextra - dev-texlive/texlive-fontsextra - dev-texlive/texlive-fontutils - dev-texlive/texlive-latex - dev-texlive/texlive-latexextra - ) - nls? ( sys-devel/gettext ) - wayland? ( - dev-util/wayland-scanner - ) - X? ( - x11-base/xorg-proto - ) -" - -PATCHES=( - "${FILESDIR}/${PN}-4.0.2-FindClang.patch" - "${FILESDIR}/${PN}-4.0.2-CUDA_NVCC_FLAGS.patch" - "${FILESDIR}/${PN}-4.1.1-FindLLVM.patch" - "${FILESDIR}/${PN}-4.1.1-numpy.patch" -) - -blender_check_requirements() { - [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp - - if use doc; then - CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend - fi -} - -blender_get_version() { - # Get blender version from blender itself. - BV=$(grep "BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d " " -f 3; assert) - if ((${BV:0:1} < 3)) ; then - # Add period (290 -> 2.90). - BV=${BV:0:1}.${BV:1} - else - # Add period and skip the middle number (301 -> 3.1) - BV=${BV:0:1}.${BV:2} - fi -} - -pkg_pretend() { - blender_check_requirements - - if use oneapi; then - einfo "The Intel oneAPI support is rudimentary." - einfo "" - einfo "Please report any bugs you find to https://bugs.gentoo.org/" - fi -} - -pkg_setup() { - if use osl; then - llvm-r1_pkg_setup - fi - - blender_check_requirements - python-single-r1_pkg_setup -} - -src_unpack() { - if [[ ${PV} = *9999* ]] ; then - if ! use test; then - EGIT_SUBMODULES+=( '-tests/*' ) - fi - git-r3_src_unpack - - git-r3_fetch "${ADDONS_EGIT_REPO_URI}" - git-r3_checkout "${ADDONS_EGIT_REPO_URI}" "${S}/scripts/addons" - else - default - - if use test; then - mkdir -p "${S}/tests/data/" || die - mv blender-test-data/* "${S}/tests/data/" || die - fi - fi -} - -src_prepare() { - use cuda && cuda_src_prepare - - cmake_src_prepare - - blender_get_version - - # Disable MS Windows help generation. The variable doesn't do what it - # it sounds like. - sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \ - -i doc/doxygen/Doxyfile || die - - # Prepare icons and .desktop files for slotting. - sed \ - -e "s|blender.svg|blender-${BV}.svg|" \ - -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" \ - -e "s|blender.desktop|blender-${BV}.desktop|" \ - -e "s|org.blender.Blender.metainfo.xml|blender-${BV}.metainfo.xml|" \ - -i source/creator/CMakeLists.txt || die - - sed \ - -e "s|Name=Blender|Name=Blender ${BV}|" \ - -e "s|Exec=blender|Exec=blender-${BV}|" \ - -e "s|Icon=blender|Icon=blender-${BV}|" \ - -i release/freedesktop/blender.desktop || die - - sed -e "s|\${CMAKE_INSTALL_PREFIX}/\${BLENDER_BIN}|${T}/usr/\${BLENDER_BIN}|g" -i source/creator/CMakeLists.txt || 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 - mv release/freedesktop/org.blender.Blender.metainfo.xml "release/freedesktop/blender-${BV}.metainfo.xml" - mv release/freedesktop/org.blender.Blender.appdata.xml "release/freedesktop/blender-${BV}.appdata.xml" - - 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 ${T}/usr)|g" -i tests/CMakeLists.txt || die - sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${T}/usr)|g" -i build_files/cmake/testing.cmake || die - fi - - if use vulkan; then - sed -e "s/extern_vulkan_memory_allocator/extern_vulkan_memory_allocator\nSPIRV-Tools-opt\nSPIRV-Tools\nSPIRV-Tools-link\nglslang\nSPIRV\nSPVRemapper/" -i source/blender/gpu/CMakeLists.txt || die - fi -} - -src_configure() { - # -Werror=odr, -Werror=lto-type-mismatch - # https://bugs.gentoo.org/859607 - # https://projects.blender.org/blender/blender/issues/120444 - filter-lto - - # Workaround for bug #922600 - append-ldflags $(test-flags-CCLD -Wl,--undefined-version) - - append-lfs-flags - blender_get_version - - local mycmakeargs=( - -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_BOOST=yes - -DWITH_BULLET=$(usex bullet) - -DWITH_CODEC_FFMPEG=$(usex ffmpeg) - -DWITH_CODEC_SNDFILE=$(usex sndfile) - - -DWITH_CYCLES=$(usex cycles) - - -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda) - -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda $(usex cycles-bin-kernels))" - -DWITH_CYCLES_DEVICE_OPTIX=$(usex optix) - - -DWITH_CYCLES_DEVICE_HIP="$(usex hip)" - -DWITH_CYCLES_HIP_BINARIES=$(usex hip $(usex cycles-bin-kernels)) - - -DWITH_CYCLES_DEVICE_ONEAPI="$(usex oneapi)" - -DWITH_CYCLES_ONEAPI_BINARIES="$(usex oneapi $(usex cycles-bin-kernels))" - - -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra - -DWITH_CYCLES_EMBREE="$(usex embree)" - -DWITH_CYCLES_OSL=$(usex osl) - -DWITH_CYCLES_PATH_GUIDING=$(usex openpgl) - -DWITH_CYCLES_STANDALONE=no - -DWITH_CYCLES_STANDALONE_GUI=no - - -DWITH_DOC_MANPAGE=$(usex man) - -DWITH_DRACO="no" # TODO: Package Draco - -DWITH_EXPERIMENTAL_FEATURES="$(usex experimental)" - -DWITH_FFTW3=$(usex fftw) - -DWITH_GHOST_WAYLAND=$(usex wayland) - -DWITH_GHOST_WAYLAND_DYNLOAD="no" - -DWITH_GHOST_X11=$(usex X) - -DWITH_GMP=$(usex gmp) - -DWITH_GTESTS=$(usex test) - -DWITH_HARFBUZZ="$(usex otf)" - -DWITH_HARU=$(usex pdf) - -DWITH_HEADLESS=$($(use X || use wayland) && echo OFF || echo ON) - -DWITH_HYDRA="no" # TODO: Package Hydra - -DWITH_IMAGE_OPENEXR=$(usex openexr) - -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k) - -DWITH_IMAGE_WEBP=$(usex webp) - -DWITH_INPUT_NDOF=$(usex ndof) - -DWITH_INSTALL_PORTABLE="no" - -DWITH_INTERNATIONAL=$(usex nls) - -DWITH_JACK=$(usex jack) - -DWITH_MATERIALX="no" # TODO: Package MaterialX - -DWITH_MEM_JEMALLOC=$(usex jemalloc) - -DWITH_MEM_VALGRIND=$(usex valgrind) - -DWITH_MOD_FLUID=$(usex fluid) - -DWITH_MOD_OCEANSIM=$(usex fftw) - -DWITH_NANOVDB=$(usex nanovdb) - -DWITH_OPENAL=$(usex openal) - -DWITH_OPENCOLLADA=$(usex collada) - -DWITH_OPENCOLORIO=$(usex color-management) - -DWITH_OPENIMAGEDENOISE=$(usex oidn) - -DWITH_OPENMP=$(usex openmp) - -DWITH_OPENSUBDIV=$(usex opensubdiv) - -DWITH_OPENVDB=$(usex openvdb) - -DWITH_OPENVDB_BLOSC=$(usex openvdb) - -DWITH_POTRACE=$(usex potrace) - -DWITH_PUGIXML=$(usex pugixml) - -DWITH_PULSEAUDIO=$(usex pulseaudio) - -DWITH_PYTHON_INSTALL=no - -DWITH_PYTHON_INSTALL_NUMPY=no - -DWITH_PYTHON_INSTALL_ZSTANDARD=no - -DWITH_RENDERDOC="$(usex renderdoc)" - -DWITH_SDL=$(usex sdl) - -DWITH_STATIC_LIBS=no - -DWITH_STRICT_BUILD_OPTIONS=yes - -DWITH_SYSTEM_EIGEN3=yes - -DWITH_SYSTEM_FREETYPE=yes - -DWITH_SYSTEM_LZO=yes - -DWITH_TBB=$(usex tbb) - -DWITH_USD="no" # TODO: Package USD - -DWITH_VULKAN_BACKEND="$(usex vulkan)" - -DWITH_XR_OPENXR=no - ) - - if has_version ">=dev-python/numpy-2"; then - mycmakeargs+=( - -DPYTHON_NUMPY_INCLUDE_DIRS="$(python_get_sitedir)/numpy/_core/include" - -DPYTHON_NUMPY_PATH="$(python_get_sitedir)/numpy/_core/include" - ) - fi - - # requires dev-vcs/git - if [[ ${PV} = *9999* ]] ; then - mycmakeargs+=( -DWITH_BUILDINFO="yes" ) - else - mycmakeargs+=( -DWITH_BUILDINFO="no" ) - fi - - if use cuda; then - mycmakeargs+=( - -DCUDA_NVCC_FLAGS="--compiler-bindir;$(cuda_gccdir)" - ) - fi - - if use hip; then - mycmakeargs+=( - -DROCM_PATH="$(hipconfig -R)" - -DHIP_HIPCC_FLAGS="-fcf-protection=none" - ) - fi - - if use optix; then - mycmakeargs+=( - -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${EPREFIX}"/opt/optix - -DOPTIX_ROOT_DIR="${EPREFIX}"/opt/optix - ) - fi - - if use wayland; then - mycmakeargs+=( - -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" - -DWITH_GHOST_WAYLAND_LIBDECOR="$(usex gnome)" - ) - fi - - # 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-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=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 || use osl; 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_GPU_DRAW_TESTS=yes - -DWITH_GPU_RENDER_TESTS=yes - ) - fi - - cmake_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. - 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="${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. - [ -d "$BLENDER_SYSTEM_SCRIPTS" ] || die "The custom script path is invalid, fix the ebuild!" - [ -d "$BLENDER_SYSTEM_DATAFILES" ] || die "The custom datafiles path is invalid, fix the ebuild!" - - if use cuda; then - cuda_add_sandbox -w - addwrite "/dev/dri/renderD128" - addwrite "/dev/char/" - fi - - if use X; then - xdg_environment_reset - fi - - cmake_src_test - - # Clean up the image directory for src_install - rm -fr "${T}/usr" || die -} - -src_install() { - blender_get_version - - # Pax mark blender for hardened support. - pax-mark m "${BUILD_DIR}"/bin/blender - - cmake_src_install - - if use man; then - # Slot the man page - mv "${ED}/usr/share/man/man1/blender.1" "${ED}/usr/share/man/man1/blender-${BV}.1" || die - fi - - if use doc; then - # Define custom blender data/script file paths. Otherwise Blender will not be able to find them during doc building. - # (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 - - # Workaround for binary drivers. - addpredict /dev/ati - addpredict /dev/dri - addpredict /dev/nvidiactl - - einfo "Generating Blender C/C++ API docs ..." - cd "${CMAKE_USE_DIR}"/doc/doxygen || die - doxygen -u Doxyfile || die - doxygen || die "doxygen failed to build API docs." - - cd "${CMAKE_USE_DIR}" || die - einfo "Generating (BPY) Blender Python API docs ..." - "${BUILD_DIR}"/bin/blender --background --python doc/python_api/sphinx_doc_gen.py -noaudio || die "sphinx failed." - - cd "${CMAKE_USE_DIR}"/doc/python_api || die - sphinx-build sphinx-in BPY_API || die "sphinx failed." - - docinto "html/API/python" - dodoc -r "${CMAKE_USE_DIR}"/doc/python_api/BPY_API/. - - docinto "html/API/blender" - dodoc -r "${CMAKE_USE_DIR}"/doc/doxygen/html/. - fi - - # Fix doc installdir - docinto html - dodoc "${CMAKE_USE_DIR}"/release/text/readme.html - rm -r "${ED}"/usr/share/doc/blender || die - - python_optimize "${ED}/usr/share/blender/${BV}/scripts" - - mv "${ED}/usr/bin/blender-thumbnailer" "${ED}/usr/bin/blender-${BV}-thumbnailer" || die - mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die -} - -pkg_postinst() { - elog - elog "Blender uses python integration. As such, may have some" - elog "inherent risks with running unknown python scripts." - elog - elog "It is recommended to change your blender temp directory" - elog "from /tmp to /home/user/tmp or another tmp file under your" - elog "home directory. This can be done by starting blender, then" - elog "changing the 'Temporary Files' directory in Blender preferences." - elog - - if use osl; then - ewarn "" - ewarn "OSL is know to cause runtime segfaults if Mesa has been linked to" - ewarn "an other LLVM version than what OSL is linked to." - ewarn "See https://bugs.gentoo.org/880671 for more details" - ewarn "" - fi - - if ! use python_single_target_python3_11; then - elog "You are building Blender with a newer python version than" - elog "supported by this version upstream." - elog "If you experience breakages with e.g. plugins, please switch to" - elog "python_single_target_python3_11 instead." - elog "Bug: https://bugs.gentoo.org/737388" - elog - fi - - xdg_icon_cache_update - xdg_mimeinfo_database_update - xdg_desktop_database_update -} - -pkg_postrm() { - xdg_icon_cache_update - xdg_mimeinfo_database_update - xdg_desktop_database_update - - ewarn "" - ewarn "You may want to remove the following directory." - ewarn "~/.config/${PN}/${BV}/cache/" - ewarn "It may contain extra render kernels not tracked by portage" - ewarn "" -} diff --git a/media-gfx/blender/blender-4.1.1-r5.ebuild b/media-gfx/blender/blender-4.1.1-r5.ebuild new file mode 100644 index 000000000000..81c48ef32a60 --- /dev/null +++ b/media-gfx/blender/blender-4.1.1-r5.ebuild @@ -0,0 +1,606 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..12} ) +# NOTE must match media-libs/osl +LLVM_COMPAT=( {15..18} ) +LLVM_OPTIONAL=1 + +inherit check-reqs cmake cuda flag-o-matic llvm-r1 pax-utils python-single-r1 toolchain-funcs xdg-utils + +DESCRIPTION="3D Creation/Animation/Publishing System" +HOMEPAGE="https://www.blender.org" + +if [[ ${PV} = *9999* ]] ; then + EGIT_LFS="yes" + inherit git-r3 + EGIT_REPO_URI="https://projects.blender.org/blender/blender.git" + EGIT_SUBMODULES=( '*' '-lib/*' ) + ADDONS_EGIT_REPO_URI="https://projects.blender.org/blender/blender-addons.git" + RESTRICT="!test? ( test )" +else + SRC_URI=" + https://download.blender.org/source/${P}.tar.xz + " + # test? ( + # https://projects.blender.org/blender/blender-test-data/archive/blender-v$(ver_cut 1-2)-release.tar.gz + # ) + # " + KEYWORDS="amd64 ~arm ~arm64" + RESTRICT="test" # the test archive returns LFS references. +fi + +LICENSE="GPL-3+ cycles? ( Apache-2.0 )" +SLOT="${PV%.*}" +IUSE=" + alembic +bullet collada +color-management cuda +cycles +cycles-bin-kernels + debug doc +embree experimental +ffmpeg +fftw +fluid +gmp gnome hip jack + jemalloc jpeg2k man +nanovdb ndof nls +oidn oneapi openal +openexr +openmp openpgl + +opensubdiv +openvdb optix osl +otf +pdf +potrace +pugixml pulseaudio + renderdoc sdl +sndfile +tbb test +tiff valgrind vulkan wayland +webp X +" + +REQUIRED_USE="${PYTHON_REQUIRED_USE} + alembic? ( openexr ) + cuda? ( cycles ) + cycles? ( openexr tiff tbb ) + fluid? ( tbb ) + gnome? ( wayland ) + hip? ( cycles ) + nanovdb? ( openvdb ) + openvdb? ( tbb openexr ) + optix? ( cuda ) + osl? ( cycles pugixml ) + test? ( color-management )" + +# Library versions for official builds can be found in the blender source directory in: +# build_files/build_environment/cmake/versions.cmake +RDEPEND="${PYTHON_DEPS} + app-arch/zstd + dev-libs/boost:=[nls?] + dev-libs/lzo:2= + $(python_gen_cond_dep ' + dev-python/cython[${PYTHON_USEDEP}] + dev-python/numpy[${PYTHON_USEDEP}] + dev-python/zstandard[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + ') + media-libs/freetype:=[brotli] + media-libs/libepoxy:= + media-libs/libjpeg-turbo:= + media-libs/libpng:= + media-libs/libsamplerate + >=media-libs/openimageio-2.5.6.0:= + sys-libs/zlib:= + virtual/glu + virtual/libintl + virtual/opengl + alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] ) + collada? ( >=media-libs/opencollada-1.6.68 ) + color-management? ( media-libs/opencolorio:= ) + cuda? ( dev-util/nvidia-cuda-toolkit:= ) + embree? ( media-libs/embree:=[raymask] ) + ffmpeg? ( media-video/ffmpeg:=[encode(+),lame(-),jpeg2k?,opus,theora,vorbis,vpx,x264,xvid] ) + fftw? ( sci-libs/fftw:3.0= ) + gmp? ( dev-libs/gmp[cxx] ) + gnome? ( gui-libs/libdecor ) + hip? ( >=dev-util/hip-5.7 ) + jack? ( virtual/jack ) + jemalloc? ( dev-libs/jemalloc:= ) + jpeg2k? ( media-libs/openjpeg:2= ) + ndof? ( + app-misc/spacenavd + dev-libs/libspnav + ) + nls? ( virtual/libiconv ) + openal? ( media-libs/openal ) + oidn? ( >=media-libs/oidn-2.1.0 ) + oneapi? ( || ( + dev-libs/intel-compute-runtime:0[l0] + dev-libs/intel-compute-runtime:legacy[l0] + ) + ) + openexr? ( + >=dev-libs/imath-3.1.7:= + >=media-libs/openexr-3.2.1:0= + ) + openpgl? ( media-libs/openpgl:= ) + opensubdiv? ( >=media-libs/opensubdiv-3.5.0 ) + openvdb? ( + >=media-gfx/openvdb-11.0.0:=[nanovdb?] + dev-libs/c-blosc:= + ) + optix? ( dev-libs/optix ) + osl? ( + >=media-libs/osl-1.13:=[${LLVM_USEDEP}] + media-libs/mesa[${LLVM_USEDEP}] + ) + pdf? ( media-libs/libharu ) + potrace? ( media-gfx/potrace ) + pugixml? ( dev-libs/pugixml ) + pulseaudio? ( media-libs/libpulse ) + sdl? ( media-libs/libsdl2[sound,joystick] ) + sndfile? ( media-libs/libsndfile ) + tbb? ( dev-cpp/tbb:= ) + tiff? ( media-libs/tiff:= ) + valgrind? ( dev-debug/valgrind ) + wayland? ( + >=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 + ) + vulkan? ( + media-libs/shaderc + dev-util/spirv-tools + dev-util/glslang + media-libs/vulkan-loader + ) + otf? ( + media-libs/harfbuzz + ) + renderdoc? ( + media-gfx/renderdoc + ) + X? ( + x11-libs/libX11 + x11-libs/libXi + x11-libs/libXxf86vm + ) +" + +DEPEND="${RDEPEND} + dev-cpp/eigen:= + vulkan? ( + dev-util/spirv-headers + dev-util/vulkan-headers + ) +" + +BDEPEND=" + virtual/pkgconfig + doc? ( + app-text/doxygen[dot] + dev-python/sphinx[latex] + dev-texlive/texlive-bibtexextra + dev-texlive/texlive-fontsextra + dev-texlive/texlive-fontutils + dev-texlive/texlive-latex + dev-texlive/texlive-latexextra + ) + nls? ( sys-devel/gettext ) + wayland? ( + dev-util/wayland-scanner + ) + X? ( + x11-base/xorg-proto + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-4.0.2-FindClang.patch" + "${FILESDIR}/${PN}-4.0.2-CUDA_NVCC_FLAGS.patch" + "${FILESDIR}/${PN}-4.1.1-FindLLVM.patch" + "${FILESDIR}/${PN}-4.1.1-numpy.patch" +) + +blender_check_requirements() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp + + if use doc; then + CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend + fi +} + +blender_get_version() { + # Get blender version from blender itself. + BV=$(grep "BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d " " -f 3; assert) + if ((${BV:0:1} < 3)) ; then + # Add period (290 -> 2.90). + BV=${BV:0:1}.${BV:1} + else + # Add period and skip the middle number (301 -> 3.1) + BV=${BV:0:1}.${BV:2} + fi +} + +pkg_pretend() { + blender_check_requirements + + if use oneapi; then + einfo "The Intel oneAPI support is rudimentary." + einfo "" + einfo "Please report any bugs you find to https://bugs.gentoo.org/" + fi +} + +pkg_setup() { + if use osl; then + llvm-r1_pkg_setup + fi + + blender_check_requirements + python-single-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} = *9999* ]] ; then + if ! use test; then + EGIT_SUBMODULES+=( '-tests/*' ) + fi + git-r3_src_unpack + + git-r3_fetch "${ADDONS_EGIT_REPO_URI}" + git-r3_checkout "${ADDONS_EGIT_REPO_URI}" "${S}/scripts/addons" + else + default + + if use test; then + mkdir -p "${S}/tests/data/" || die + mv blender-test-data/* "${S}/tests/data/" || die + fi + fi +} + +src_prepare() { + use cuda && cuda_src_prepare + + cmake_src_prepare + + blender_get_version + + # Disable MS Windows help generation. The variable doesn't do what it + # it sounds like. + sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \ + -i doc/doxygen/Doxyfile || die + + # Prepare icons and .desktop files for slotting. + sed \ + -e "s|blender.svg|blender-${BV}.svg|" \ + -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" \ + -e "s|blender.desktop|blender-${BV}.desktop|" \ + -e "s|org.blender.Blender.metainfo.xml|blender-${BV}.metainfo.xml|" \ + -i source/creator/CMakeLists.txt || die + + sed \ + -e "s|Name=Blender|Name=Blender ${BV}|" \ + -e "s|Exec=blender|Exec=blender-${BV}|" \ + -e "s|Icon=blender|Icon=blender-${BV}|" \ + -i release/freedesktop/blender.desktop || die + + sed -e "s|\${CMAKE_INSTALL_PREFIX}/\${BLENDER_BIN}|${T}/usr/\${BLENDER_BIN}|g" -i source/creator/CMakeLists.txt || 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 + mv release/freedesktop/org.blender.Blender.metainfo.xml "release/freedesktop/blender-${BV}.metainfo.xml" + mv release/freedesktop/org.blender.Blender.appdata.xml "release/freedesktop/blender-${BV}.appdata.xml" + + 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 ${T}/usr)|g" -i tests/CMakeLists.txt || die + sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${T}/usr)|g" -i build_files/cmake/testing.cmake || die + fi + + if use vulkan; then + sed -e "s/extern_vulkan_memory_allocator/extern_vulkan_memory_allocator\nSPIRV-Tools-opt\nSPIRV-Tools\nSPIRV-Tools-link\nglslang\nSPIRV\nSPVRemapper/" -i source/blender/gpu/CMakeLists.txt || die + fi +} + +src_configure() { + # -Werror=odr, -Werror=lto-type-mismatch + # https://bugs.gentoo.org/859607 + # https://projects.blender.org/blender/blender/issues/120444 + filter-lto + + # Workaround for bug #922600 + append-ldflags $(test-flags-CCLD -Wl,--undefined-version) + + append-lfs-flags + blender_get_version + + local mycmakeargs=( + -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_BOOST=yes + -DWITH_BULLET=$(usex bullet) + -DWITH_CODEC_FFMPEG=$(usex ffmpeg) + -DWITH_CODEC_SNDFILE=$(usex sndfile) + + -DWITH_CYCLES=$(usex cycles) + + -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda) + -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda $(usex cycles-bin-kernels))" + -DWITH_CYCLES_DEVICE_OPTIX=$(usex optix) + + -DWITH_CYCLES_DEVICE_HIP="$(usex hip)" + -DWITH_CYCLES_HIP_BINARIES=$(usex hip $(usex cycles-bin-kernels)) + + -DWITH_CYCLES_DEVICE_ONEAPI="$(usex oneapi)" + -DWITH_CYCLES_ONEAPI_BINARIES="$(usex oneapi $(usex cycles-bin-kernels))" + + -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra + -DWITH_CYCLES_EMBREE="$(usex embree)" + -DWITH_CYCLES_OSL=$(usex osl) + -DWITH_CYCLES_PATH_GUIDING=$(usex openpgl) + -DWITH_CYCLES_STANDALONE=no + -DWITH_CYCLES_STANDALONE_GUI=no + + -DWITH_DOC_MANPAGE=$(usex man) + -DWITH_DRACO="no" # TODO: Package Draco + -DWITH_EXPERIMENTAL_FEATURES="$(usex experimental)" + -DWITH_FFTW3=$(usex fftw) + -DWITH_GHOST_WAYLAND=$(usex wayland) + -DWITH_GHOST_WAYLAND_DYNLOAD="no" + -DWITH_GHOST_X11=$(usex X) + -DWITH_GMP=$(usex gmp) + -DWITH_GTESTS=$(usex test) + -DWITH_HARFBUZZ="$(usex otf)" + -DWITH_HARU=$(usex pdf) + -DWITH_HEADLESS=$($(use X || use wayland) && echo OFF || echo ON) + -DWITH_HYDRA="no" # TODO: Package Hydra + -DWITH_IMAGE_OPENEXR=$(usex openexr) + -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k) + -DWITH_IMAGE_WEBP=$(usex webp) + -DWITH_INPUT_NDOF=$(usex ndof) + -DWITH_INSTALL_PORTABLE="no" + -DWITH_INTERNATIONAL=$(usex nls) + -DWITH_JACK=$(usex jack) + -DWITH_MATERIALX="no" # TODO: Package MaterialX + -DWITH_MEM_JEMALLOC=$(usex jemalloc) + -DWITH_MEM_VALGRIND=$(usex valgrind) + -DWITH_MOD_FLUID=$(usex fluid) + -DWITH_MOD_OCEANSIM=$(usex fftw) + -DWITH_NANOVDB=$(usex nanovdb) + -DWITH_OPENAL=$(usex openal) + -DWITH_OPENCOLLADA=$(usex collada) + -DWITH_OPENCOLORIO=$(usex color-management) + -DWITH_OPENIMAGEDENOISE=$(usex oidn) + -DWITH_OPENMP=$(usex openmp) + -DWITH_OPENSUBDIV=$(usex opensubdiv) + -DWITH_OPENVDB=$(usex openvdb) + -DWITH_OPENVDB_BLOSC=$(usex openvdb) + -DWITH_POTRACE=$(usex potrace) + -DWITH_PUGIXML=$(usex pugixml) + -DWITH_PULSEAUDIO=$(usex pulseaudio) + -DWITH_PYTHON_INSTALL=no + -DWITH_PYTHON_INSTALL_NUMPY=no + -DWITH_PYTHON_INSTALL_ZSTANDARD=no + -DWITH_RENDERDOC="$(usex renderdoc)" + -DWITH_SDL=$(usex sdl) + -DWITH_STATIC_LIBS=no + -DWITH_STRICT_BUILD_OPTIONS=yes + -DWITH_SYSTEM_EIGEN3=yes + -DWITH_SYSTEM_FREETYPE=yes + -DWITH_SYSTEM_LZO=yes + -DWITH_TBB=$(usex tbb) + -DWITH_USD="no" # TODO: Package USD + -DWITH_VULKAN_BACKEND="$(usex vulkan)" + -DWITH_XR_OPENXR=no + ) + + if has_version ">=dev-python/numpy-2"; then + mycmakeargs+=( + -DPYTHON_NUMPY_INCLUDE_DIRS="$(python_get_sitedir)/numpy/_core/include" + -DPYTHON_NUMPY_PATH="$(python_get_sitedir)/numpy/_core/include" + ) + fi + + # requires dev-vcs/git + if [[ ${PV} = *9999* ]] ; then + mycmakeargs+=( -DWITH_BUILDINFO="yes" ) + else + mycmakeargs+=( -DWITH_BUILDINFO="no" ) + fi + + if use cuda; then + mycmakeargs+=( + -DCUDA_NVCC_FLAGS="--compiler-bindir;$(cuda_gccdir)" + ) + fi + + if use hip; then + mycmakeargs+=( + -DROCM_PATH="$(hipconfig -R)" + -DHIP_HIPCC_FLAGS="-fcf-protection=none" + ) + fi + + if use optix; then + mycmakeargs+=( + -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${EPREFIX}"/opt/optix + -DOPTIX_ROOT_DIR="${EPREFIX}"/opt/optix + ) + fi + + if use wayland; then + mycmakeargs+=( + -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" + -DWITH_GHOST_WAYLAND_LIBDECOR="$(usex gnome)" + ) + fi + + # 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-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=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 || use osl; 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_GPU_DRAW_TESTS=yes + -DWITH_GPU_RENDER_TESTS=yes + ) + fi + + cmake_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. + 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="${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. + [ -d "$BLENDER_SYSTEM_SCRIPTS" ] || die "The custom script path is invalid, fix the ebuild!" + [ -d "$BLENDER_SYSTEM_DATAFILES" ] || die "The custom datafiles path is invalid, fix the ebuild!" + + if use cuda; then + cuda_add_sandbox -w + addwrite "/dev/dri/renderD128" + addwrite "/dev/char/" + fi + + if use X; then + xdg_environment_reset + fi + + cmake_src_test + + # Clean up the image directory for src_install + rm -fr "${T}/usr" || die +} + +src_install() { + blender_get_version + + # Pax mark blender for hardened support. + pax-mark m "${BUILD_DIR}"/bin/blender + + cmake_src_install + + if use man; then + # Slot the man page + mv "${ED}/usr/share/man/man1/blender.1" "${ED}/usr/share/man/man1/blender-${BV}.1" || die + fi + + if use doc; then + # Define custom blender data/script file paths. Otherwise Blender will not be able to find them during doc building. + # (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 + + # Workaround for binary drivers. + addpredict /dev/ati + addpredict /dev/dri + addpredict /dev/nvidiactl + + einfo "Generating Blender C/C++ API docs ..." + cd "${CMAKE_USE_DIR}"/doc/doxygen || die + doxygen -u Doxyfile || die + doxygen || die "doxygen failed to build API docs." + + cd "${CMAKE_USE_DIR}" || die + einfo "Generating (BPY) Blender Python API docs ..." + "${BUILD_DIR}"/bin/blender --background --python doc/python_api/sphinx_doc_gen.py -noaudio || die "sphinx failed." + + cd "${CMAKE_USE_DIR}"/doc/python_api || die + sphinx-build sphinx-in BPY_API || die "sphinx failed." + + docinto "html/API/python" + dodoc -r "${CMAKE_USE_DIR}"/doc/python_api/BPY_API/. + + docinto "html/API/blender" + dodoc -r "${CMAKE_USE_DIR}"/doc/doxygen/html/. + fi + + # Fix doc installdir + docinto html + dodoc "${CMAKE_USE_DIR}"/release/text/readme.html + rm -r "${ED}"/usr/share/doc/blender || die + + python_optimize "${ED}/usr/share/blender/${BV}/scripts" + + mv "${ED}/usr/bin/blender-thumbnailer" "${ED}/usr/bin/blender-${BV}-thumbnailer" || die + mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die +} + +pkg_postinst() { + elog + elog "Blender uses python integration. As such, may have some" + elog "inherent risks with running unknown python scripts." + elog + elog "It is recommended to change your blender temp directory" + elog "from /tmp to /home/user/tmp or another tmp file under your" + elog "home directory. This can be done by starting blender, then" + elog "changing the 'Temporary Files' directory in Blender preferences." + elog + + if use osl; then + ewarn "" + ewarn "OSL is know to cause runtime segfaults if Mesa has been linked to" + ewarn "an other LLVM version than what OSL is linked to." + ewarn "See https://bugs.gentoo.org/880671 for more details" + ewarn "" + fi + + if ! use python_single_target_python3_11; then + elog "You are building Blender with a newer python version than" + elog "supported by this version upstream." + elog "If you experience breakages with e.g. plugins, please switch to" + elog "python_single_target_python3_11 instead." + elog "Bug: https://bugs.gentoo.org/737388" + elog + fi + + xdg_icon_cache_update + xdg_mimeinfo_database_update + xdg_desktop_database_update +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_mimeinfo_database_update + xdg_desktop_database_update + + ewarn "" + ewarn "You may want to remove the following directory." + ewarn "~/.config/${PN}/${BV}/cache/" + ewarn "It may contain extra render kernels not tracked by portage" + ewarn "" +} diff --git a/media-gfx/blender/blender-4.2.4-r1.ebuild b/media-gfx/blender/blender-4.2.4-r1.ebuild deleted file mode 100644 index 8fcb55057a7b..000000000000 --- a/media-gfx/blender/blender-4.2.4-r1.ebuild +++ /dev/null @@ -1,607 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{11..12} ) -# NOTE must match media-libs/osl -LLVM_COMPAT=( {15..18} ) -LLVM_OPTIONAL=1 - -inherit check-reqs cmake cuda flag-o-matic llvm-r1 pax-utils python-single-r1 toolchain-funcs xdg-utils - -DESCRIPTION="3D Creation/Animation/Publishing System" -HOMEPAGE="https://www.blender.org" - -if [[ ${PV} = *9999* ]] ; then - EGIT_LFS="yes" - inherit git-r3 - EGIT_REPO_URI="https://projects.blender.org/blender/blender.git" - EGIT_SUBMODULES=( '*' '-lib/*' ) - RESTRICT="!test? ( test )" -else - SRC_URI=" - https://download.blender.org/source/${P}.tar.xz - " - # test? ( - # https://projects.blender.org/blender/blender-test-data/archive/blender-v$(ver_cut 1-2)-release.tar.gz - # ) - # " - KEYWORDS="amd64 ~arm ~arm64" - RESTRICT="test" # the test archive returns LFS references. -fi - -LICENSE="GPL-3+ cycles? ( Apache-2.0 )" -SLOT="${PV%.*}" -IUSE=" - alembic +bullet collada +color-management cuda +cycles +cycles-bin-kernels - debug doc +embree +ffmpeg +fftw +fluid +gmp gnome hip jack - jemalloc jpeg2k man +nanovdb ndof nls +oidn oneapi openal +openexr +openmp +openpgl - +opensubdiv +openvdb optix osl +otf +pdf +potrace +pugixml pulseaudio - renderdoc sdl +sndfile +tbb test +tiff valgrind vulkan wayland +webp X -" - -REQUIRED_USE="${PYTHON_REQUIRED_USE} - alembic? ( openexr ) - cuda? ( cycles ) - cycles? ( openexr tiff tbb ) - fluid? ( tbb ) - gnome? ( wayland ) - hip? ( cycles ) - nanovdb? ( openvdb ) - openvdb? ( tbb openexr ) - optix? ( cuda ) - osl? ( cycles pugixml ) - test? ( color-management )" - -# Library versions for official builds can be found in the blender source directory in: -# build_files/build_environment/cmake/versions.cmake -RDEPEND="${PYTHON_DEPS} - app-arch/zstd - dev-libs/boost:=[nls?] - dev-libs/lzo:2= - $(python_gen_cond_dep ' - dev-python/cython[${PYTHON_USEDEP}] - dev-python/numpy[${PYTHON_USEDEP}] - dev-python/zstandard[${PYTHON_USEDEP}] - dev-python/requests[${PYTHON_USEDEP}] - ') - media-libs/freetype:=[brotli] - media-libs/libepoxy:= - media-libs/libjpeg-turbo:= - media-libs/libpng:= - media-libs/libsamplerate - >=media-libs/openimageio-2.5.6.0:= - sys-libs/zlib:= - virtual/glu - virtual/libintl - virtual/opengl - alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] ) - collada? ( >=media-libs/opencollada-1.6.68 ) - color-management? ( media-libs/opencolorio:= ) - cuda? ( dev-util/nvidia-cuda-toolkit:= ) - embree? ( media-libs/embree:=[raymask] ) - ffmpeg? ( media-video/ffmpeg:=[encode(+),lame(-),jpeg2k?,opus,theora,vorbis,vpx,x264,xvid] ) - fftw? ( sci-libs/fftw:3.0= ) - gmp? ( dev-libs/gmp[cxx] ) - gnome? ( gui-libs/libdecor ) - hip? ( >=dev-util/hip-5.7 ) - jack? ( virtual/jack ) - jemalloc? ( dev-libs/jemalloc:= ) - jpeg2k? ( media-libs/openjpeg:2= ) - ndof? ( - app-misc/spacenavd - dev-libs/libspnav - ) - nls? ( virtual/libiconv ) - openal? ( media-libs/openal ) - oidn? ( >=media-libs/oidn-2.1.0 ) - oneapi? ( dev-libs/intel-compute-runtime[l0] ) - openexr? ( - >=dev-libs/imath-3.1.7:= - >=media-libs/openexr-3.2.1:0= - ) - openpgl? ( media-libs/openpgl:= ) - opensubdiv? ( >=media-libs/opensubdiv-3.5.0 ) - openvdb? ( - >=media-gfx/openvdb-11.0.0:=[nanovdb?] - dev-libs/c-blosc:= - ) - optix? ( dev-libs/optix ) - osl? ( - >=media-libs/osl-1.13:=[${LLVM_USEDEP}] - media-libs/mesa[${LLVM_USEDEP}] - ) - pdf? ( media-libs/libharu ) - potrace? ( media-gfx/potrace ) - pugixml? ( dev-libs/pugixml ) - pulseaudio? ( media-libs/libpulse ) - sdl? ( media-libs/libsdl2[sound,joystick] ) - sndfile? ( media-libs/libsndfile ) - tbb? ( dev-cpp/tbb:= ) - tiff? ( media-libs/tiff:= ) - valgrind? ( dev-debug/valgrind ) - wayland? ( - >=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 - ) - vulkan? ( - media-libs/shaderc - dev-util/spirv-tools - dev-util/glslang - media-libs/vulkan-loader - ) - otf? ( - media-libs/harfbuzz - ) - renderdoc? ( - media-gfx/renderdoc - ) - X? ( - x11-libs/libX11 - x11-libs/libXi - x11-libs/libXxf86vm - ) -" - -DEPEND="${RDEPEND} - dev-cpp/eigen:= - vulkan? ( - dev-util/spirv-headers - dev-util/vulkan-headers - ) -" - -BDEPEND=" - virtual/pkgconfig - doc? ( - app-text/doxygen[dot] - dev-python/sphinx[latex] - dev-texlive/texlive-bibtexextra - dev-texlive/texlive-fontsextra - dev-texlive/texlive-fontutils - dev-texlive/texlive-latex - dev-texlive/texlive-latexextra - ) - nls? ( sys-devel/gettext ) - wayland? ( - dev-util/wayland-scanner - ) - X? ( - x11-base/xorg-proto - ) -" - -PATCHES=( - "${FILESDIR}/${PN}-4.0.2-FindClang.patch" - "${FILESDIR}/${PN}-4.0.2-CUDA_NVCC_FLAGS.patch" - "${FILESDIR}/${PN}-4.1.1-FindLLVM.patch" - "${FILESDIR}/${PN}-4.1.1-numpy.patch" -) - -blender_check_requirements() { - [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp - - if use doc; then - CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend - fi -} - -blender_get_version() { - # Get blender version from blender itself. - BV=$(grep "BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d " " -f 3; assert) - if ((${BV:0:1} < 3)) ; then - # Add period (290 -> 2.90). - BV=${BV:0:1}.${BV:1} - else - # Add period and skip the middle number (301 -> 3.1) - BV=${BV:0:1}.${BV:2} - fi -} - -pkg_pretend() { - blender_check_requirements - - if use oneapi; then - einfo "The Intel oneAPI support is rudimentary." - einfo "" - einfo "Please report any bugs you find to https://bugs.gentoo.org/" - fi -} - -pkg_setup() { - if use osl; then - llvm-r1_pkg_setup - fi - - blender_check_requirements - python-single-r1_pkg_setup -} - -src_unpack() { - if [[ ${PV} = *9999* ]] ; then - if ! use test; then - EGIT_SUBMODULES+=( '-tests/*' ) - fi - git-r3_src_unpack - else - default - - if use test; then - mkdir -p "${S}/tests/data/" || die - mv blender-test-data/* "${S}/tests/data/" || die - fi - fi -} - -src_prepare() { - use cuda && cuda_src_prepare - - cmake_src_prepare - - blender_get_version - - # Disable MS Windows help generation. The variable doesn't do what it - # it sounds like. - sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \ - -i doc/doxygen/Doxyfile || die - - # Prepare icons and .desktop files for slotting. - sed \ - -e "s|blender.svg|blender-${BV}.svg|" \ - -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" \ - -e "s|blender.desktop|blender-${BV}.desktop|" \ - -e "s|org.blender.Blender.metainfo.xml|blender-${BV}.metainfo.xml|" \ - -i source/creator/CMakeLists.txt || die - - sed \ - -e "s|Name=Blender|Name=Blender ${BV}|" \ - -e "s|Exec=blender|Exec=blender-${BV}|" \ - -e "s|Icon=blender|Icon=blender-${BV}|" \ - -i release/freedesktop/blender.desktop || die - - sed -e "s|\${CMAKE_INSTALL_PREFIX}/\${BLENDER_BIN}|${T}/usr/\${BLENDER_BIN}|g" -i source/creator/CMakeLists.txt || 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 - mv release/freedesktop/org.blender.Blender.metainfo.xml "release/freedesktop/blender-${BV}.metainfo.xml" - mv release/freedesktop/org.blender.Blender.appdata.xml "release/freedesktop/blender-${BV}.appdata.xml" - - 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 ${T}/usr)|g" -i tests/CMakeLists.txt || die - sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${T}/usr)|g" -i build_files/cmake/testing.cmake || die - fi - - if use vulkan; then - sed -e "s/extern_vulkan_memory_allocator/extern_vulkan_memory_allocator\nSPIRV-Tools-opt\nSPIRV-Tools\nSPIRV-Tools-link\nglslang\nSPIRV\nSPVRemapper/" -i source/blender/gpu/CMakeLists.txt || die - fi -} - -src_configure() { - # -Werror=odr, -Werror=lto-type-mismatch - # https://bugs.gentoo.org/859607 - # https://projects.blender.org/blender/blender/issues/120444 - filter-lto - - # Workaround for bug #922600 - append-ldflags $(test-flags-CCLD -Wl,--undefined-version) - - append-lfs-flags - blender_get_version - - local mycmakeargs=( - -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_BOOST=yes - -DWITH_BULLET=$(usex bullet) - -DWITH_CODEC_FFMPEG=$(usex ffmpeg) - -DWITH_CODEC_SNDFILE=$(usex sndfile) - -DWITH_CPU_CHECK=no - - -DWITH_CYCLES=$(usex cycles) - - -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda) - -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda $(usex cycles-bin-kernels))" - -DWITH_CYCLES_DEVICE_OPTIX=$(usex optix) - - -DWITH_CYCLES_DEVICE_HIP="$(usex hip)" - -DWITH_CYCLES_HIP_BINARIES=$(usex hip $(usex cycles-bin-kernels)) - - -DWITH_CYCLES_DEVICE_ONEAPI="$(usex oneapi)" - -DWITH_CYCLES_ONEAPI_BINARIES="$(usex oneapi $(usex cycles-bin-kernels))" - - -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra - -DWITH_CYCLES_EMBREE="$(usex embree)" - -DWITH_CYCLES_OSL=$(usex osl) - -DWITH_CYCLES_PATH_GUIDING=$(usex openpgl) - -DWITH_CYCLES_STANDALONE=no - -DWITH_CYCLES_STANDALONE_GUI=no - - -DWITH_DOC_MANPAGE=$(usex man) - -DWITH_DRACO="no" # TODO: Package Draco - -DWITH_FFTW3=$(usex fftw) - -DWITH_GHOST_WAYLAND=$(usex wayland) - -DWITH_GHOST_WAYLAND_DYNLOAD="no" - -DWITH_GHOST_X11=$(usex X) - -DWITH_GMP=$(usex gmp) - -DWITH_GTESTS=$(usex test) - -DWITH_HARFBUZZ="$(usex otf)" - -DWITH_HARU=$(usex pdf) - -DWITH_HEADLESS=$($(use X || use wayland) && echo OFF || echo ON) - -DWITH_HYDRA="no" # TODO: Package Hydra - -DWITH_IMAGE_OPENEXR=$(usex openexr) - -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k) - -DWITH_IMAGE_WEBP=$(usex webp) - -DWITH_INPUT_NDOF=$(usex ndof) - -DWITH_INSTALL_PORTABLE="no" - -DWITH_INTERNATIONAL=$(usex nls) - -DWITH_JACK=$(usex jack) - -DWITH_MATERIALX="no" # TODO: Package MaterialX - -DWITH_MEM_JEMALLOC=$(usex jemalloc) - -DWITH_MEM_VALGRIND=$(usex valgrind) - -DWITH_MOD_FLUID=$(usex fluid) - -DWITH_MOD_OCEANSIM=$(usex fftw) - -DWITH_NANOVDB=$(usex nanovdb) - -DWITH_OPENAL=$(usex openal) - -DWITH_OPENCOLLADA=$(usex collada) - -DWITH_OPENCOLORIO=$(usex color-management) - -DWITH_OPENIMAGEDENOISE=$(usex oidn) - -DWITH_OPENMP=$(usex openmp) - -DWITH_OPENSUBDIV=$(usex opensubdiv) - -DWITH_OPENVDB=$(usex openvdb) - -DWITH_OPENVDB_BLOSC=$(usex openvdb) - -DWITH_POTRACE=$(usex potrace) - -DWITH_PUGIXML=$(usex pugixml) - -DWITH_PULSEAUDIO=$(usex pulseaudio) - -DWITH_PYTHON_INSTALL=no - -DWITH_PYTHON_INSTALL_NUMPY=no - -DWITH_PYTHON_INSTALL_ZSTANDARD=no - -DWITH_RENDERDOC="$(usex renderdoc)" - -DWITH_SDL=$(usex sdl) - -DWITH_STATIC_LIBS=no - -DWITH_STRICT_BUILD_OPTIONS=yes - -DWITH_SYSTEM_EIGEN3=yes - -DWITH_SYSTEM_FREETYPE=yes - -DWITH_SYSTEM_LZO=yes - -DWITH_TBB=$(usex tbb) - -DWITH_USD="no" # TODO: Package USD - -DWITH_VULKAN_BACKEND="$(usex vulkan)" - -DWITH_XR_OPENXR=no - ) - - if has_version ">=dev-python/numpy-2"; then - mycmakeargs+=( - -DPYTHON_NUMPY_INCLUDE_DIRS="$(python_get_sitedir)/numpy/_core/include" - -DPYTHON_NUMPY_PATH="$(python_get_sitedir)/numpy/_core/include" - ) - fi - - # requires dev-vcs/git - if [[ ${PV} = *9999* ]] ; then - mycmakeargs+=( -DWITH_BUILDINFO="yes" ) - else - mycmakeargs+=( -DWITH_BUILDINFO="no" ) - fi - - if use cuda; then - mycmakeargs+=( - -DCUDA_NVCC_FLAGS="--compiler-bindir;$(cuda_gccdir)" - ) - fi - - if use hip; then - mycmakeargs+=( - -DROCM_PATH="$(hipconfig -R)" - -DHIP_HIPCC_FLAGS="-fcf-protection=none" - ) - fi - - if use optix; then - mycmakeargs+=( - -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${EPREFIX}"/opt/optix - -DOPTIX_ROOT_DIR="${EPREFIX}"/opt/optix - ) - fi - - if use wayland; then - mycmakeargs+=( - -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" - -DWITH_GHOST_WAYLAND_LIBDECOR="$(usex gnome)" - ) - fi - - # 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-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=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 || use osl; 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_GPU_DRAW_TESTS=yes - -DWITH_GPU_RENDER_TESTS=yes - ) - fi - - cmake_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. - DESTDIR="${T}" cmake_build install - - blender_get_version - # By default, blender will look for system scripts and data in - # /usr/share/, but until this is installed, they are not necessarily - # available there. Use this to have blender search the intermediate - # install directory instead. - export BLENDER_SYSTEM_RESOURCES="${T}/usr/share/blender/${BV}" - - # Brake check: Make sure the above path is valid. - # If not, blender will fallback to the default path which is not what - # we want. - [ -d "$BLENDER_SYSTEM_RESOURCES" ] || die "The custom script path is invalid, fix the ebuild!" - - if use cuda; then - cuda_add_sandbox -w - addwrite "/dev/dri/renderD128" - addwrite "/dev/char/" - fi - - if use X; then - xdg_environment_reset - fi - - addwrite /dev/dri - - cmake_src_test - - # Clean up the image directory for src_install - rm -fr "${T}/usr" || die -} - -src_install() { - blender_get_version - - # Pax mark blender for hardened support. - pax-mark m "${BUILD_DIR}"/bin/blender - - cmake_src_install - - if use man; then - # Slot the man page - mv "${ED}/usr/share/man/man1/blender.1" "${ED}/usr/share/man/man1/blender-${BV}.1" || die - fi - - if use doc; then - # By default, blender will look for system scripts and data in - # /usr/share/, but until this is installed, they are not necessarily - # available there. Use this to have blender search the intermediate - # install directory instead. - export BLENDER_SYSTEM_RESOURCES="${ED}/usr/share/blender/${BV}" - - # Brake check: Make sure the above path is valid. - # If not, blender will fallback to the default path which is not what - # we want. - [ -d "$BLENDER_SYSTEM_RESOURCES" ] || die "The custom script path is invalid, fix the ebuild!" - - # Workaround for binary drivers. - addpredict /dev/ati - addpredict /dev/dri - addpredict /dev/nvidiactl - - einfo "Generating Blender C/C++ API docs ..." - cd "${CMAKE_USE_DIR}"/doc/doxygen || die - doxygen -u Doxyfile || die - doxygen || die "doxygen failed to build API docs." - - cd "${CMAKE_USE_DIR}" || die - einfo "Generating (BPY) Blender Python API docs ..." - "${BUILD_DIR}"/bin/blender --background --python doc/python_api/sphinx_doc_gen.py -noaudio || die "sphinx failed." - - cd "${CMAKE_USE_DIR}"/doc/python_api || die - sphinx-build sphinx-in BPY_API || die "sphinx failed." - - docinto "html/API/python" - dodoc -r "${CMAKE_USE_DIR}"/doc/python_api/BPY_API/. - - docinto "html/API/blender" - dodoc -r "${CMAKE_USE_DIR}"/doc/doxygen/html/. - fi - - # Fix doc installdir - docinto html - dodoc "${CMAKE_USE_DIR}"/release/text/readme.html - rm -r "${ED}"/usr/share/doc/blender || die - - python_optimize "${ED}/usr/share/blender/${BV}/scripts" - - mv "${ED}/usr/bin/blender-thumbnailer" "${ED}/usr/bin/blender-${BV}-thumbnailer" || die - mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die -} - -pkg_postinst() { - elog - elog "Blender uses python integration. As such, may have some" - elog "inherent risks with running unknown python scripts." - elog - elog "It is recommended to change your blender temp directory" - elog "from /tmp to /home/user/tmp or another tmp file under your" - elog "home directory. This can be done by starting blender, then" - elog "changing the 'Temporary Files' directory in Blender preferences." - elog - - if use osl; then - ewarn "" - ewarn "OSL is know to cause runtime segfaults if Mesa has been linked to" - ewarn "an other LLVM version than what OSL is linked to." - ewarn "See https://bugs.gentoo.org/880671 for more details" - ewarn "" - fi - - if ! use python_single_target_python3_11; then - elog "You are building Blender with a newer python version than" - elog "supported by this version upstream." - elog "If you experience breakages with e.g. plugins, please switch to" - elog "python_single_target_python3_11 instead." - elog "Bug: https://bugs.gentoo.org/737388" - elog - fi - - xdg_icon_cache_update - xdg_mimeinfo_database_update - xdg_desktop_database_update -} - -pkg_postrm() { - xdg_icon_cache_update - xdg_mimeinfo_database_update - xdg_desktop_database_update - - ewarn "" - ewarn "You may want to remove the following directory." - ewarn "~/.config/${PN}/${BV}/cache/" - ewarn "It may contain extra render kernels not tracked by portage" - ewarn "" -} diff --git a/media-gfx/blender/blender-4.2.4-r2.ebuild b/media-gfx/blender/blender-4.2.4-r2.ebuild new file mode 100644 index 000000000000..9b5a6db08f0a --- /dev/null +++ b/media-gfx/blender/blender-4.2.4-r2.ebuild @@ -0,0 +1,611 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..12} ) +# NOTE must match media-libs/osl +LLVM_COMPAT=( {15..18} ) +LLVM_OPTIONAL=1 + +inherit check-reqs cmake cuda flag-o-matic llvm-r1 pax-utils python-single-r1 toolchain-funcs xdg-utils + +DESCRIPTION="3D Creation/Animation/Publishing System" +HOMEPAGE="https://www.blender.org" + +if [[ ${PV} = *9999* ]] ; then + EGIT_LFS="yes" + inherit git-r3 + EGIT_REPO_URI="https://projects.blender.org/blender/blender.git" + EGIT_SUBMODULES=( '*' '-lib/*' ) + RESTRICT="!test? ( test )" +else + SRC_URI=" + https://download.blender.org/source/${P}.tar.xz + " + # test? ( + # https://projects.blender.org/blender/blender-test-data/archive/blender-v$(ver_cut 1-2)-release.tar.gz + # ) + # " + KEYWORDS="amd64 ~arm ~arm64" + RESTRICT="test" # the test archive returns LFS references. +fi + +LICENSE="GPL-3+ cycles? ( Apache-2.0 )" +SLOT="${PV%.*}" +IUSE=" + alembic +bullet collada +color-management cuda +cycles +cycles-bin-kernels + debug doc +embree +ffmpeg +fftw +fluid +gmp gnome hip jack + jemalloc jpeg2k man +nanovdb ndof nls +oidn oneapi openal +openexr +openmp +openpgl + +opensubdiv +openvdb optix osl +otf +pdf +potrace +pugixml pulseaudio + renderdoc sdl +sndfile +tbb test +tiff valgrind vulkan wayland +webp X +" + +REQUIRED_USE="${PYTHON_REQUIRED_USE} + alembic? ( openexr ) + cuda? ( cycles ) + cycles? ( openexr tiff tbb ) + fluid? ( tbb ) + gnome? ( wayland ) + hip? ( cycles ) + nanovdb? ( openvdb ) + openvdb? ( tbb openexr ) + optix? ( cuda ) + osl? ( cycles pugixml ) + test? ( color-management )" + +# Library versions for official builds can be found in the blender source directory in: +# build_files/build_environment/cmake/versions.cmake +RDEPEND="${PYTHON_DEPS} + app-arch/zstd + dev-libs/boost:=[nls?] + dev-libs/lzo:2= + $(python_gen_cond_dep ' + dev-python/cython[${PYTHON_USEDEP}] + dev-python/numpy[${PYTHON_USEDEP}] + dev-python/zstandard[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + ') + media-libs/freetype:=[brotli] + media-libs/libepoxy:= + media-libs/libjpeg-turbo:= + media-libs/libpng:= + media-libs/libsamplerate + >=media-libs/openimageio-2.5.6.0:= + sys-libs/zlib:= + virtual/glu + virtual/libintl + virtual/opengl + alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] ) + collada? ( >=media-libs/opencollada-1.6.68 ) + color-management? ( media-libs/opencolorio:= ) + cuda? ( dev-util/nvidia-cuda-toolkit:= ) + embree? ( media-libs/embree:=[raymask] ) + ffmpeg? ( media-video/ffmpeg:=[encode(+),lame(-),jpeg2k?,opus,theora,vorbis,vpx,x264,xvid] ) + fftw? ( sci-libs/fftw:3.0= ) + gmp? ( dev-libs/gmp[cxx] ) + gnome? ( gui-libs/libdecor ) + hip? ( >=dev-util/hip-5.7 ) + jack? ( virtual/jack ) + jemalloc? ( dev-libs/jemalloc:= ) + jpeg2k? ( media-libs/openjpeg:2= ) + ndof? ( + app-misc/spacenavd + dev-libs/libspnav + ) + nls? ( virtual/libiconv ) + openal? ( media-libs/openal ) + oidn? ( >=media-libs/oidn-2.1.0 ) + oneapi? ( || ( + dev-libs/intel-compute-runtime:0[l0] + dev-libs/intel-compute-runtime:legacy[l0] + ) + ) + openexr? ( + >=dev-libs/imath-3.1.7:= + >=media-libs/openexr-3.2.1:0= + ) + openpgl? ( media-libs/openpgl:= ) + opensubdiv? ( >=media-libs/opensubdiv-3.5.0 ) + openvdb? ( + >=media-gfx/openvdb-11.0.0:=[nanovdb?] + dev-libs/c-blosc:= + ) + optix? ( dev-libs/optix ) + osl? ( + >=media-libs/osl-1.13:=[${LLVM_USEDEP}] + media-libs/mesa[${LLVM_USEDEP}] + ) + pdf? ( media-libs/libharu ) + potrace? ( media-gfx/potrace ) + pugixml? ( dev-libs/pugixml ) + pulseaudio? ( media-libs/libpulse ) + sdl? ( media-libs/libsdl2[sound,joystick] ) + sndfile? ( media-libs/libsndfile ) + tbb? ( dev-cpp/tbb:= ) + tiff? ( media-libs/tiff:= ) + valgrind? ( dev-debug/valgrind ) + wayland? ( + >=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 + ) + vulkan? ( + media-libs/shaderc + dev-util/spirv-tools + dev-util/glslang + media-libs/vulkan-loader + ) + otf? ( + media-libs/harfbuzz + ) + renderdoc? ( + media-gfx/renderdoc + ) + X? ( + x11-libs/libX11 + x11-libs/libXi + x11-libs/libXxf86vm + ) +" + +DEPEND="${RDEPEND} + dev-cpp/eigen:= + vulkan? ( + dev-util/spirv-headers + dev-util/vulkan-headers + ) +" + +BDEPEND=" + virtual/pkgconfig + doc? ( + app-text/doxygen[dot] + dev-python/sphinx[latex] + dev-texlive/texlive-bibtexextra + dev-texlive/texlive-fontsextra + dev-texlive/texlive-fontutils + dev-texlive/texlive-latex + dev-texlive/texlive-latexextra + ) + nls? ( sys-devel/gettext ) + wayland? ( + dev-util/wayland-scanner + ) + X? ( + x11-base/xorg-proto + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-4.0.2-FindClang.patch" + "${FILESDIR}/${PN}-4.0.2-CUDA_NVCC_FLAGS.patch" + "${FILESDIR}/${PN}-4.1.1-FindLLVM.patch" + "${FILESDIR}/${PN}-4.1.1-numpy.patch" +) + +blender_check_requirements() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp + + if use doc; then + CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend + fi +} + +blender_get_version() { + # Get blender version from blender itself. + BV=$(grep "BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d " " -f 3; assert) + if ((${BV:0:1} < 3)) ; then + # Add period (290 -> 2.90). + BV=${BV:0:1}.${BV:1} + else + # Add period and skip the middle number (301 -> 3.1) + BV=${BV:0:1}.${BV:2} + fi +} + +pkg_pretend() { + blender_check_requirements + + if use oneapi; then + einfo "The Intel oneAPI support is rudimentary." + einfo "" + einfo "Please report any bugs you find to https://bugs.gentoo.org/" + fi +} + +pkg_setup() { + if use osl; then + llvm-r1_pkg_setup + fi + + blender_check_requirements + python-single-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} = *9999* ]] ; then + if ! use test; then + EGIT_SUBMODULES+=( '-tests/*' ) + fi + git-r3_src_unpack + else + default + + if use test; then + mkdir -p "${S}/tests/data/" || die + mv blender-test-data/* "${S}/tests/data/" || die + fi + fi +} + +src_prepare() { + use cuda && cuda_src_prepare + + cmake_src_prepare + + blender_get_version + + # Disable MS Windows help generation. The variable doesn't do what it + # it sounds like. + sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \ + -i doc/doxygen/Doxyfile || die + + # Prepare icons and .desktop files for slotting. + sed \ + -e "s|blender.svg|blender-${BV}.svg|" \ + -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" \ + -e "s|blender.desktop|blender-${BV}.desktop|" \ + -e "s|org.blender.Blender.metainfo.xml|blender-${BV}.metainfo.xml|" \ + -i source/creator/CMakeLists.txt || die + + sed \ + -e "s|Name=Blender|Name=Blender ${BV}|" \ + -e "s|Exec=blender|Exec=blender-${BV}|" \ + -e "s|Icon=blender|Icon=blender-${BV}|" \ + -i release/freedesktop/blender.desktop || die + + sed -e "s|\${CMAKE_INSTALL_PREFIX}/\${BLENDER_BIN}|${T}/usr/\${BLENDER_BIN}|g" -i source/creator/CMakeLists.txt || 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 + mv release/freedesktop/org.blender.Blender.metainfo.xml "release/freedesktop/blender-${BV}.metainfo.xml" + mv release/freedesktop/org.blender.Blender.appdata.xml "release/freedesktop/blender-${BV}.appdata.xml" + + 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 ${T}/usr)|g" -i tests/CMakeLists.txt || die + sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${T}/usr)|g" -i build_files/cmake/testing.cmake || die + fi + + if use vulkan; then + sed -e "s/extern_vulkan_memory_allocator/extern_vulkan_memory_allocator\nSPIRV-Tools-opt\nSPIRV-Tools\nSPIRV-Tools-link\nglslang\nSPIRV\nSPVRemapper/" -i source/blender/gpu/CMakeLists.txt || die + fi +} + +src_configure() { + # -Werror=odr, -Werror=lto-type-mismatch + # https://bugs.gentoo.org/859607 + # https://projects.blender.org/blender/blender/issues/120444 + filter-lto + + # Workaround for bug #922600 + append-ldflags $(test-flags-CCLD -Wl,--undefined-version) + + append-lfs-flags + blender_get_version + + local mycmakeargs=( + -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_BOOST=yes + -DWITH_BULLET=$(usex bullet) + -DWITH_CODEC_FFMPEG=$(usex ffmpeg) + -DWITH_CODEC_SNDFILE=$(usex sndfile) + -DWITH_CPU_CHECK=no + + -DWITH_CYCLES=$(usex cycles) + + -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda) + -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda $(usex cycles-bin-kernels))" + -DWITH_CYCLES_DEVICE_OPTIX=$(usex optix) + + -DWITH_CYCLES_DEVICE_HIP="$(usex hip)" + -DWITH_CYCLES_HIP_BINARIES=$(usex hip $(usex cycles-bin-kernels)) + + -DWITH_CYCLES_DEVICE_ONEAPI="$(usex oneapi)" + -DWITH_CYCLES_ONEAPI_BINARIES="$(usex oneapi $(usex cycles-bin-kernels))" + + -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra + -DWITH_CYCLES_EMBREE="$(usex embree)" + -DWITH_CYCLES_OSL=$(usex osl) + -DWITH_CYCLES_PATH_GUIDING=$(usex openpgl) + -DWITH_CYCLES_STANDALONE=no + -DWITH_CYCLES_STANDALONE_GUI=no + + -DWITH_DOC_MANPAGE=$(usex man) + -DWITH_DRACO="no" # TODO: Package Draco + -DWITH_FFTW3=$(usex fftw) + -DWITH_GHOST_WAYLAND=$(usex wayland) + -DWITH_GHOST_WAYLAND_DYNLOAD="no" + -DWITH_GHOST_X11=$(usex X) + -DWITH_GMP=$(usex gmp) + -DWITH_GTESTS=$(usex test) + -DWITH_HARFBUZZ="$(usex otf)" + -DWITH_HARU=$(usex pdf) + -DWITH_HEADLESS=$($(use X || use wayland) && echo OFF || echo ON) + -DWITH_HYDRA="no" # TODO: Package Hydra + -DWITH_IMAGE_OPENEXR=$(usex openexr) + -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k) + -DWITH_IMAGE_WEBP=$(usex webp) + -DWITH_INPUT_NDOF=$(usex ndof) + -DWITH_INSTALL_PORTABLE="no" + -DWITH_INTERNATIONAL=$(usex nls) + -DWITH_JACK=$(usex jack) + -DWITH_MATERIALX="no" # TODO: Package MaterialX + -DWITH_MEM_JEMALLOC=$(usex jemalloc) + -DWITH_MEM_VALGRIND=$(usex valgrind) + -DWITH_MOD_FLUID=$(usex fluid) + -DWITH_MOD_OCEANSIM=$(usex fftw) + -DWITH_NANOVDB=$(usex nanovdb) + -DWITH_OPENAL=$(usex openal) + -DWITH_OPENCOLLADA=$(usex collada) + -DWITH_OPENCOLORIO=$(usex color-management) + -DWITH_OPENIMAGEDENOISE=$(usex oidn) + -DWITH_OPENMP=$(usex openmp) + -DWITH_OPENSUBDIV=$(usex opensubdiv) + -DWITH_OPENVDB=$(usex openvdb) + -DWITH_OPENVDB_BLOSC=$(usex openvdb) + -DWITH_POTRACE=$(usex potrace) + -DWITH_PUGIXML=$(usex pugixml) + -DWITH_PULSEAUDIO=$(usex pulseaudio) + -DWITH_PYTHON_INSTALL=no + -DWITH_PYTHON_INSTALL_NUMPY=no + -DWITH_PYTHON_INSTALL_ZSTANDARD=no + -DWITH_RENDERDOC="$(usex renderdoc)" + -DWITH_SDL=$(usex sdl) + -DWITH_STATIC_LIBS=no + -DWITH_STRICT_BUILD_OPTIONS=yes + -DWITH_SYSTEM_EIGEN3=yes + -DWITH_SYSTEM_FREETYPE=yes + -DWITH_SYSTEM_LZO=yes + -DWITH_TBB=$(usex tbb) + -DWITH_USD="no" # TODO: Package USD + -DWITH_VULKAN_BACKEND="$(usex vulkan)" + -DWITH_XR_OPENXR=no + ) + + if has_version ">=dev-python/numpy-2"; then + mycmakeargs+=( + -DPYTHON_NUMPY_INCLUDE_DIRS="$(python_get_sitedir)/numpy/_core/include" + -DPYTHON_NUMPY_PATH="$(python_get_sitedir)/numpy/_core/include" + ) + fi + + # requires dev-vcs/git + if [[ ${PV} = *9999* ]] ; then + mycmakeargs+=( -DWITH_BUILDINFO="yes" ) + else + mycmakeargs+=( -DWITH_BUILDINFO="no" ) + fi + + if use cuda; then + mycmakeargs+=( + -DCUDA_NVCC_FLAGS="--compiler-bindir;$(cuda_gccdir)" + ) + fi + + if use hip; then + mycmakeargs+=( + -DROCM_PATH="$(hipconfig -R)" + -DHIP_HIPCC_FLAGS="-fcf-protection=none" + ) + fi + + if use optix; then + mycmakeargs+=( + -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${EPREFIX}"/opt/optix + -DOPTIX_ROOT_DIR="${EPREFIX}"/opt/optix + ) + fi + + if use wayland; then + mycmakeargs+=( + -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" + -DWITH_GHOST_WAYLAND_LIBDECOR="$(usex gnome)" + ) + fi + + # 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-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=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 || use osl; 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_GPU_DRAW_TESTS=yes + -DWITH_GPU_RENDER_TESTS=yes + ) + fi + + cmake_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. + DESTDIR="${T}" cmake_build install + + blender_get_version + # By default, blender will look for system scripts and data in + # /usr/share/, but until this is installed, they are not necessarily + # available there. Use this to have blender search the intermediate + # install directory instead. + export BLENDER_SYSTEM_RESOURCES="${T}/usr/share/blender/${BV}" + + # Brake check: Make sure the above path is valid. + # If not, blender will fallback to the default path which is not what + # we want. + [ -d "$BLENDER_SYSTEM_RESOURCES" ] || die "The custom script path is invalid, fix the ebuild!" + + if use cuda; then + cuda_add_sandbox -w + addwrite "/dev/dri/renderD128" + addwrite "/dev/char/" + fi + + if use X; then + xdg_environment_reset + fi + + addwrite /dev/dri + + cmake_src_test + + # Clean up the image directory for src_install + rm -fr "${T}/usr" || die +} + +src_install() { + blender_get_version + + # Pax mark blender for hardened support. + pax-mark m "${BUILD_DIR}"/bin/blender + + cmake_src_install + + if use man; then + # Slot the man page + mv "${ED}/usr/share/man/man1/blender.1" "${ED}/usr/share/man/man1/blender-${BV}.1" || die + fi + + if use doc; then + # By default, blender will look for system scripts and data in + # /usr/share/, but until this is installed, they are not necessarily + # available there. Use this to have blender search the intermediate + # install directory instead. + export BLENDER_SYSTEM_RESOURCES="${ED}/usr/share/blender/${BV}" + + # Brake check: Make sure the above path is valid. + # If not, blender will fallback to the default path which is not what + # we want. + [ -d "$BLENDER_SYSTEM_RESOURCES" ] || die "The custom script path is invalid, fix the ebuild!" + + # Workaround for binary drivers. + addpredict /dev/ati + addpredict /dev/dri + addpredict /dev/nvidiactl + + einfo "Generating Blender C/C++ API docs ..." + cd "${CMAKE_USE_DIR}"/doc/doxygen || die + doxygen -u Doxyfile || die + doxygen || die "doxygen failed to build API docs." + + cd "${CMAKE_USE_DIR}" || die + einfo "Generating (BPY) Blender Python API docs ..." + "${BUILD_DIR}"/bin/blender --background --python doc/python_api/sphinx_doc_gen.py -noaudio || die "sphinx failed." + + cd "${CMAKE_USE_DIR}"/doc/python_api || die + sphinx-build sphinx-in BPY_API || die "sphinx failed." + + docinto "html/API/python" + dodoc -r "${CMAKE_USE_DIR}"/doc/python_api/BPY_API/. + + docinto "html/API/blender" + dodoc -r "${CMAKE_USE_DIR}"/doc/doxygen/html/. + fi + + # Fix doc installdir + docinto html + dodoc "${CMAKE_USE_DIR}"/release/text/readme.html + rm -r "${ED}"/usr/share/doc/blender || die + + python_optimize "${ED}/usr/share/blender/${BV}/scripts" + + mv "${ED}/usr/bin/blender-thumbnailer" "${ED}/usr/bin/blender-${BV}-thumbnailer" || die + mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die +} + +pkg_postinst() { + elog + elog "Blender uses python integration. As such, may have some" + elog "inherent risks with running unknown python scripts." + elog + elog "It is recommended to change your blender temp directory" + elog "from /tmp to /home/user/tmp or another tmp file under your" + elog "home directory. This can be done by starting blender, then" + elog "changing the 'Temporary Files' directory in Blender preferences." + elog + + if use osl; then + ewarn "" + ewarn "OSL is know to cause runtime segfaults if Mesa has been linked to" + ewarn "an other LLVM version than what OSL is linked to." + ewarn "See https://bugs.gentoo.org/880671 for more details" + ewarn "" + fi + + if ! use python_single_target_python3_11; then + elog "You are building Blender with a newer python version than" + elog "supported by this version upstream." + elog "If you experience breakages with e.g. plugins, please switch to" + elog "python_single_target_python3_11 instead." + elog "Bug: https://bugs.gentoo.org/737388" + elog + fi + + xdg_icon_cache_update + xdg_mimeinfo_database_update + xdg_desktop_database_update +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_mimeinfo_database_update + xdg_desktop_database_update + + ewarn "" + ewarn "You may want to remove the following directory." + ewarn "~/.config/${PN}/${BV}/cache/" + ewarn "It may contain extra render kernels not tracked by portage" + ewarn "" +} diff --git a/media-gfx/blender/blender-4.3.2-r1.ebuild b/media-gfx/blender/blender-4.3.2-r1.ebuild deleted file mode 100644 index 105a047649fb..000000000000 --- a/media-gfx/blender/blender-4.3.2-r1.ebuild +++ /dev/null @@ -1,608 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{11..12} ) -# NOTE must match media-libs/osl -LLVM_COMPAT=( {15..18} ) -LLVM_OPTIONAL=1 - -inherit check-reqs cmake cuda flag-o-matic llvm-r1 pax-utils python-single-r1 toolchain-funcs xdg-utils - -DESCRIPTION="3D Creation/Animation/Publishing System" -HOMEPAGE="https://www.blender.org" - -if [[ ${PV} = *9999* ]] ; then - EGIT_LFS="yes" - inherit git-r3 - EGIT_REPO_URI="https://projects.blender.org/blender/blender.git" - EGIT_SUBMODULES=( '*' '-lib/*' ) - RESTRICT="!test? ( test )" -else - SRC_URI=" - https://download.blender.org/source/${P}.tar.xz - " - # test? ( - # https://projects.blender.org/blender/blender-test-data/archive/blender-v$(ver_cut 1-2)-release.tar.gz - # ) - # " - KEYWORDS="~amd64 ~arm ~arm64" - RESTRICT="test" # the test archive returns LFS references. -fi - -LICENSE="GPL-3+ cycles? ( Apache-2.0 )" -SLOT="${PV%.*}" -IUSE=" - alembic +bullet collada +color-management cuda +cycles +cycles-bin-kernels - debug doc +embree +ffmpeg +fftw +fluid +gmp gnome hip jack - jemalloc jpeg2k man +nanovdb ndof nls +oidn oneapi openal +openexr +openmp +openpgl - +opensubdiv +openvdb optix osl +otf +pdf +potrace +pugixml pulseaudio - renderdoc sdl +sndfile +tbb test +tiff valgrind vulkan wayland +webp X -" - -REQUIRED_USE="${PYTHON_REQUIRED_USE} - alembic? ( openexr ) - cuda? ( cycles ) - cycles? ( openexr tiff tbb ) - fluid? ( tbb ) - gnome? ( wayland ) - hip? ( cycles ) - nanovdb? ( openvdb ) - openvdb? ( tbb openexr ) - optix? ( cuda ) - osl? ( cycles pugixml ) - test? ( color-management )" - -# Library versions for official builds can be found in the blender source directory in: -# build_files/build_environment/cmake/versions.cmake -RDEPEND="${PYTHON_DEPS} - app-arch/zstd - dev-libs/boost:=[nls?] - dev-libs/lzo:2= - $(python_gen_cond_dep ' - dev-python/cython[${PYTHON_USEDEP}] - dev-python/numpy[${PYTHON_USEDEP}] - dev-python/zstandard[${PYTHON_USEDEP}] - dev-python/requests[${PYTHON_USEDEP}] - ') - media-libs/freetype:=[brotli] - media-libs/libepoxy:= - media-libs/libjpeg-turbo:= - media-libs/libpng:= - media-libs/libsamplerate - >=media-libs/openimageio-2.5.6.0:= - sys-libs/zlib:= - virtual/glu - virtual/libintl - virtual/opengl - alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] ) - collada? ( >=media-libs/opencollada-1.6.68 ) - color-management? ( media-libs/opencolorio:= ) - cuda? ( dev-util/nvidia-cuda-toolkit:= ) - embree? ( media-libs/embree:=[raymask] ) - ffmpeg? ( media-video/ffmpeg:=[encode(+),lame(-),jpeg2k?,opus,theora,vorbis,vpx,x264,xvid] ) - fftw? ( sci-libs/fftw:3.0= ) - gmp? ( dev-libs/gmp[cxx] ) - gnome? ( gui-libs/libdecor ) - hip? ( >=dev-util/hip-5.7 ) - jack? ( virtual/jack ) - jemalloc? ( dev-libs/jemalloc:= ) - jpeg2k? ( media-libs/openjpeg:2= ) - ndof? ( - app-misc/spacenavd - dev-libs/libspnav - ) - nls? ( virtual/libiconv ) - openal? ( media-libs/openal ) - oidn? ( >=media-libs/oidn-2.1.0 ) - oneapi? ( dev-libs/intel-compute-runtime[l0] ) - openexr? ( - >=dev-libs/imath-3.1.7:= - >=media-libs/openexr-3.2.1:0= - ) - openpgl? ( media-libs/openpgl:= ) - opensubdiv? ( >=media-libs/opensubdiv-3.5.0 ) - openvdb? ( - >=media-gfx/openvdb-11.0.0:=[nanovdb?] - dev-libs/c-blosc:= - ) - optix? ( dev-libs/optix ) - osl? ( - >=media-libs/osl-1.13:=[${LLVM_USEDEP}] - media-libs/mesa[${LLVM_USEDEP}] - ) - pdf? ( media-libs/libharu ) - potrace? ( media-gfx/potrace ) - pugixml? ( dev-libs/pugixml ) - pulseaudio? ( media-libs/libpulse ) - sdl? ( media-libs/libsdl2[sound,joystick] ) - sndfile? ( media-libs/libsndfile ) - tbb? ( dev-cpp/tbb:= ) - tiff? ( media-libs/tiff:= ) - valgrind? ( dev-debug/valgrind ) - wayland? ( - >=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 - ) - vulkan? ( - media-libs/shaderc - dev-util/spirv-tools - dev-util/glslang - media-libs/vulkan-loader - ) - otf? ( - media-libs/harfbuzz - ) - renderdoc? ( - media-gfx/renderdoc - ) - X? ( - x11-libs/libX11 - x11-libs/libXi - x11-libs/libXxf86vm - ) -" - -DEPEND="${RDEPEND} - dev-cpp/eigen:= - vulkan? ( - dev-util/spirv-headers - dev-util/vulkan-headers - ) -" - -BDEPEND=" - virtual/pkgconfig - doc? ( - app-text/doxygen[dot] - dev-python/sphinx[latex] - dev-texlive/texlive-bibtexextra - dev-texlive/texlive-fontsextra - dev-texlive/texlive-fontutils - dev-texlive/texlive-latex - dev-texlive/texlive-latexextra - ) - nls? ( sys-devel/gettext ) - wayland? ( - dev-util/wayland-scanner - ) - X? ( - x11-base/xorg-proto - ) -" - -PATCHES=( - "${FILESDIR}/${PN}-4.0.2-FindClang.patch" - "${FILESDIR}/${PN}-4.0.2-CUDA_NVCC_FLAGS.patch" - "${FILESDIR}/${PN}-4.1.1-FindLLVM.patch" - "${FILESDIR}/${PN}-4.1.1-numpy.patch" - "${FILESDIR}/${PN}-4.3.2-ffmpeg7.patch" -) - -blender_check_requirements() { - [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp - - if use doc; then - CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend - fi -} - -blender_get_version() { - # Get blender version from blender itself. - BV=$(grep "BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d " " -f 3; assert) - if ((${BV:0:1} < 3)) ; then - # Add period (290 -> 2.90). - BV=${BV:0:1}.${BV:1} - else - # Add period and skip the middle number (301 -> 3.1) - BV=${BV:0:1}.${BV:2} - fi -} - -pkg_pretend() { - blender_check_requirements - - if use oneapi; then - einfo "The Intel oneAPI support is rudimentary." - einfo "" - einfo "Please report any bugs you find to https://bugs.gentoo.org/" - fi -} - -pkg_setup() { - if use osl; then - llvm-r1_pkg_setup - fi - - blender_check_requirements - python-single-r1_pkg_setup -} - -src_unpack() { - if [[ ${PV} = *9999* ]] ; then - if ! use test; then - EGIT_SUBMODULES+=( '-tests/*' ) - fi - git-r3_src_unpack - else - default - - if use test; then - mkdir -p "${S}/tests/data/" || die - mv blender-test-data/* "${S}/tests/data/" || die - fi - fi -} - -src_prepare() { - use cuda && cuda_src_prepare - - cmake_src_prepare - - blender_get_version - - # Disable MS Windows help generation. The variable doesn't do what it - # it sounds like. - sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \ - -i doc/doxygen/Doxyfile || die - - # Prepare icons and .desktop files for slotting. - sed \ - -e "s|blender.svg|blender-${BV}.svg|" \ - -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" \ - -e "s|blender.desktop|blender-${BV}.desktop|" \ - -e "s|org.blender.Blender.metainfo.xml|blender-${BV}.metainfo.xml|" \ - -i source/creator/CMakeLists.txt || die - - sed \ - -e "s|Name=Blender|Name=Blender ${BV}|" \ - -e "s|Exec=blender|Exec=blender-${BV}|" \ - -e "s|Icon=blender|Icon=blender-${BV}|" \ - -i release/freedesktop/blender.desktop || die - - sed -e "s|\${CMAKE_INSTALL_PREFIX}/\${BLENDER_BIN}|${T}/usr/\${BLENDER_BIN}|g" -i source/creator/CMakeLists.txt || 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 - mv release/freedesktop/org.blender.Blender.metainfo.xml "release/freedesktop/blender-${BV}.metainfo.xml" - mv release/freedesktop/org.blender.Blender.appdata.xml "release/freedesktop/blender-${BV}.appdata.xml" - - 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 ${T}/usr)|g" -i tests/CMakeLists.txt || die - sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${T}/usr)|g" -i build_files/cmake/testing.cmake || die - fi - - if use vulkan; then - sed -e "s/extern_vulkan_memory_allocator/extern_vulkan_memory_allocator\nSPIRV-Tools-opt\nSPIRV-Tools\nSPIRV-Tools-link\nglslang\nSPIRV\nSPVRemapper/" -i source/blender/gpu/CMakeLists.txt || die - fi -} - -src_configure() { - # -Werror=odr, -Werror=lto-type-mismatch - # https://bugs.gentoo.org/859607 - # https://projects.blender.org/blender/blender/issues/120444 - filter-lto - - # Workaround for bug #922600 - append-ldflags $(test-flags-CCLD -Wl,--undefined-version) - - append-lfs-flags - blender_get_version - - local mycmakeargs=( - -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_BOOST=yes - -DWITH_BULLET=$(usex bullet) - -DWITH_CODEC_FFMPEG=$(usex ffmpeg) - -DWITH_CODEC_SNDFILE=$(usex sndfile) - -DWITH_CPU_CHECK=no - - -DWITH_CYCLES=$(usex cycles) - - -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda) - -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda $(usex cycles-bin-kernels))" - -DWITH_CYCLES_DEVICE_OPTIX=$(usex optix) - - -DWITH_CYCLES_DEVICE_HIP="$(usex hip)" - -DWITH_CYCLES_HIP_BINARIES=$(usex hip $(usex cycles-bin-kernels)) - - -DWITH_CYCLES_DEVICE_ONEAPI="$(usex oneapi)" - -DWITH_CYCLES_ONEAPI_BINARIES="$(usex oneapi $(usex cycles-bin-kernels))" - - -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra - -DWITH_CYCLES_EMBREE="$(usex embree)" - -DWITH_CYCLES_OSL=$(usex osl) - -DWITH_CYCLES_PATH_GUIDING=$(usex openpgl) - -DWITH_CYCLES_STANDALONE=no - -DWITH_CYCLES_STANDALONE_GUI=no - - -DWITH_DOC_MANPAGE=$(usex man) - -DWITH_DRACO="no" # TODO: Package Draco - -DWITH_FFTW3=$(usex fftw) - -DWITH_GHOST_WAYLAND=$(usex wayland) - -DWITH_GHOST_WAYLAND_DYNLOAD="no" - -DWITH_GHOST_X11=$(usex X) - -DWITH_GMP=$(usex gmp) - -DWITH_GTESTS=$(usex test) - -DWITH_HARFBUZZ="$(usex otf)" - -DWITH_HARU=$(usex pdf) - -DWITH_HEADLESS=$($(use X || use wayland) && echo OFF || echo ON) - -DWITH_HYDRA="no" # TODO: Package Hydra - -DWITH_IMAGE_OPENEXR=$(usex openexr) - -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k) - -DWITH_IMAGE_WEBP=$(usex webp) - -DWITH_INPUT_NDOF=$(usex ndof) - -DWITH_INSTALL_PORTABLE="no" - -DWITH_INTERNATIONAL=$(usex nls) - -DWITH_JACK=$(usex jack) - -DWITH_MATERIALX="no" # TODO: Package MaterialX - -DWITH_MEM_JEMALLOC=$(usex jemalloc) - -DWITH_MEM_VALGRIND=$(usex valgrind) - -DWITH_MOD_FLUID=$(usex fluid) - -DWITH_MOD_OCEANSIM=$(usex fftw) - -DWITH_NANOVDB=$(usex nanovdb) - -DWITH_OPENAL=$(usex openal) - -DWITH_OPENCOLLADA=$(usex collada) - -DWITH_OPENCOLORIO=$(usex color-management) - -DWITH_OPENIMAGEDENOISE=$(usex oidn) - -DWITH_OPENMP=$(usex openmp) - -DWITH_OPENSUBDIV=$(usex opensubdiv) - -DWITH_OPENVDB=$(usex openvdb) - -DWITH_OPENVDB_BLOSC=$(usex openvdb) - -DWITH_POTRACE=$(usex potrace) - -DWITH_PUGIXML=$(usex pugixml) - -DWITH_PULSEAUDIO=$(usex pulseaudio) - -DWITH_PYTHON_INSTALL=no - -DWITH_PYTHON_INSTALL_NUMPY=no - -DWITH_PYTHON_INSTALL_ZSTANDARD=no - -DWITH_RENDERDOC="$(usex renderdoc)" - -DWITH_SDL=$(usex sdl) - -DWITH_STATIC_LIBS=no - -DWITH_STRICT_BUILD_OPTIONS=yes - -DWITH_SYSTEM_EIGEN3=yes - -DWITH_SYSTEM_FREETYPE=yes - -DWITH_SYSTEM_LZO=yes - -DWITH_TBB=$(usex tbb) - -DWITH_USD="no" # TODO: Package USD - -DWITH_VULKAN_BACKEND="$(usex vulkan)" - -DWITH_XR_OPENXR=no - ) - - if has_version ">=dev-python/numpy-2"; then - mycmakeargs+=( - -DPYTHON_NUMPY_INCLUDE_DIRS="$(python_get_sitedir)/numpy/_core/include" - -DPYTHON_NUMPY_PATH="$(python_get_sitedir)/numpy/_core/include" - ) - fi - - # requires dev-vcs/git - if [[ ${PV} = *9999* ]] ; then - mycmakeargs+=( -DWITH_BUILDINFO="yes" ) - else - mycmakeargs+=( -DWITH_BUILDINFO="no" ) - fi - - if use cuda; then - mycmakeargs+=( - -DCUDA_NVCC_FLAGS="--compiler-bindir;$(cuda_gccdir)" - ) - fi - - if use hip; then - mycmakeargs+=( - -DROCM_PATH="$(hipconfig -R)" - -DHIP_HIPCC_FLAGS="-fcf-protection=none" - ) - fi - - if use optix; then - mycmakeargs+=( - -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${EPREFIX}"/opt/optix - -DOPTIX_ROOT_DIR="${EPREFIX}"/opt/optix - ) - fi - - if use wayland; then - mycmakeargs+=( - -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" - -DWITH_GHOST_WAYLAND_LIBDECOR="$(usex gnome)" - ) - fi - - # 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-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=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 || use osl; 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_GPU_DRAW_TESTS=yes - -DWITH_GPU_RENDER_TESTS=yes - ) - fi - - cmake_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. - DESTDIR="${T}" cmake_build install - - blender_get_version - # By default, blender will look for system scripts and data in - # /usr/share/, but until this is installed, they are not necessarily - # available there. Use this to have blender search the intermediate - # install directory instead. - export BLENDER_SYSTEM_RESOURCES="${T}/usr/share/blender/${BV}" - - # Brake check: Make sure the above path is valid. - # If not, blender will fallback to the default path which is not what - # we want. - [ -d "$BLENDER_SYSTEM_RESOURCES" ] || die "The custom script path is invalid, fix the ebuild!" - - if use cuda; then - cuda_add_sandbox -w - addwrite "/dev/dri/renderD128" - addwrite "/dev/char/" - fi - - if use X; then - xdg_environment_reset - fi - - addwrite /dev/dri - - cmake_src_test - - # Clean up the image directory for src_install - rm -fr "${T}/usr" || die -} - -src_install() { - blender_get_version - - # Pax mark blender for hardened support. - pax-mark m "${BUILD_DIR}"/bin/blender - - cmake_src_install - - if use man; then - # Slot the man page - mv "${ED}/usr/share/man/man1/blender.1" "${ED}/usr/share/man/man1/blender-${BV}.1" || die - fi - - if use doc; then - # By default, blender will look for system scripts and data in - # /usr/share/, but until this is installed, they are not necessarily - # available there. Use this to have blender search the intermediate - # install directory instead. - export BLENDER_SYSTEM_RESOURCES="${ED}/usr/share/blender/${BV}" - - # Brake check: Make sure the above path is valid. - # If not, blender will fallback to the default path which is not what - # we want. - [ -d "$BLENDER_SYSTEM_RESOURCES" ] || die "The custom script path is invalid, fix the ebuild!" - - # Workaround for binary drivers. - addpredict /dev/ati - addpredict /dev/dri - addpredict /dev/nvidiactl - - einfo "Generating Blender C/C++ API docs ..." - cd "${CMAKE_USE_DIR}"/doc/doxygen || die - doxygen -u Doxyfile || die - doxygen || die "doxygen failed to build API docs." - - cd "${CMAKE_USE_DIR}" || die - einfo "Generating (BPY) Blender Python API docs ..." - "${BUILD_DIR}"/bin/blender --background --python doc/python_api/sphinx_doc_gen.py -noaudio || die "sphinx failed." - - cd "${CMAKE_USE_DIR}"/doc/python_api || die - sphinx-build sphinx-in BPY_API || die "sphinx failed." - - docinto "html/API/python" - dodoc -r "${CMAKE_USE_DIR}"/doc/python_api/BPY_API/. - - docinto "html/API/blender" - dodoc -r "${CMAKE_USE_DIR}"/doc/doxygen/html/. - fi - - # Fix doc installdir - docinto html - dodoc "${CMAKE_USE_DIR}"/release/text/readme.html - rm -r "${ED}"/usr/share/doc/blender || die - - python_optimize "${ED}/usr/share/blender/${BV}/scripts" - - mv "${ED}/usr/bin/blender-thumbnailer" "${ED}/usr/bin/blender-${BV}-thumbnailer" || die - mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die -} - -pkg_postinst() { - elog - elog "Blender uses python integration. As such, may have some" - elog "inherent risks with running unknown python scripts." - elog - elog "It is recommended to change your blender temp directory" - elog "from /tmp to /home/user/tmp or another tmp file under your" - elog "home directory. This can be done by starting blender, then" - elog "changing the 'Temporary Files' directory in Blender preferences." - elog - - if use osl; then - ewarn "" - ewarn "OSL is know to cause runtime segfaults if Mesa has been linked to" - ewarn "an other LLVM version than what OSL is linked to." - ewarn "See https://bugs.gentoo.org/880671 for more details" - ewarn "" - fi - - if ! use python_single_target_python3_11; then - elog "You are building Blender with a newer python version than" - elog "supported by this version upstream." - elog "If you experience breakages with e.g. plugins, please switch to" - elog "python_single_target_python3_11 instead." - elog "Bug: https://bugs.gentoo.org/737388" - elog - fi - - xdg_icon_cache_update - xdg_mimeinfo_database_update - xdg_desktop_database_update -} - -pkg_postrm() { - xdg_icon_cache_update - xdg_mimeinfo_database_update - xdg_desktop_database_update - - ewarn "" - ewarn "You may want to remove the following directory." - ewarn "~/.config/${PN}/${BV}/cache/" - ewarn "It may contain extra render kernels not tracked by portage" - ewarn "" -} diff --git a/media-gfx/blender/blender-4.3.2-r2.ebuild b/media-gfx/blender/blender-4.3.2-r2.ebuild new file mode 100644 index 000000000000..776e8cc148b5 --- /dev/null +++ b/media-gfx/blender/blender-4.3.2-r2.ebuild @@ -0,0 +1,612 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..12} ) +# NOTE must match media-libs/osl +LLVM_COMPAT=( {15..18} ) +LLVM_OPTIONAL=1 + +inherit check-reqs cmake cuda flag-o-matic llvm-r1 pax-utils python-single-r1 toolchain-funcs xdg-utils + +DESCRIPTION="3D Creation/Animation/Publishing System" +HOMEPAGE="https://www.blender.org" + +if [[ ${PV} = *9999* ]] ; then + EGIT_LFS="yes" + inherit git-r3 + EGIT_REPO_URI="https://projects.blender.org/blender/blender.git" + EGIT_SUBMODULES=( '*' '-lib/*' ) + RESTRICT="!test? ( test )" +else + SRC_URI=" + https://download.blender.org/source/${P}.tar.xz + " + # test? ( + # https://projects.blender.org/blender/blender-test-data/archive/blender-v$(ver_cut 1-2)-release.tar.gz + # ) + # " + KEYWORDS="~amd64 ~arm ~arm64" + RESTRICT="test" # the test archive returns LFS references. +fi + +LICENSE="GPL-3+ cycles? ( Apache-2.0 )" +SLOT="${PV%.*}" +IUSE=" + alembic +bullet collada +color-management cuda +cycles +cycles-bin-kernels + debug doc +embree +ffmpeg +fftw +fluid +gmp gnome hip jack + jemalloc jpeg2k man +nanovdb ndof nls +oidn oneapi openal +openexr +openmp +openpgl + +opensubdiv +openvdb optix osl +otf +pdf +potrace +pugixml pulseaudio + renderdoc sdl +sndfile +tbb test +tiff valgrind vulkan wayland +webp X +" + +REQUIRED_USE="${PYTHON_REQUIRED_USE} + alembic? ( openexr ) + cuda? ( cycles ) + cycles? ( openexr tiff tbb ) + fluid? ( tbb ) + gnome? ( wayland ) + hip? ( cycles ) + nanovdb? ( openvdb ) + openvdb? ( tbb openexr ) + optix? ( cuda ) + osl? ( cycles pugixml ) + test? ( color-management )" + +# Library versions for official builds can be found in the blender source directory in: +# build_files/build_environment/cmake/versions.cmake +RDEPEND="${PYTHON_DEPS} + app-arch/zstd + dev-libs/boost:=[nls?] + dev-libs/lzo:2= + $(python_gen_cond_dep ' + dev-python/cython[${PYTHON_USEDEP}] + dev-python/numpy[${PYTHON_USEDEP}] + dev-python/zstandard[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + ') + media-libs/freetype:=[brotli] + media-libs/libepoxy:= + media-libs/libjpeg-turbo:= + media-libs/libpng:= + media-libs/libsamplerate + >=media-libs/openimageio-2.5.6.0:= + sys-libs/zlib:= + virtual/glu + virtual/libintl + virtual/opengl + alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] ) + collada? ( >=media-libs/opencollada-1.6.68 ) + color-management? ( media-libs/opencolorio:= ) + cuda? ( dev-util/nvidia-cuda-toolkit:= ) + embree? ( media-libs/embree:=[raymask] ) + ffmpeg? ( media-video/ffmpeg:=[encode(+),lame(-),jpeg2k?,opus,theora,vorbis,vpx,x264,xvid] ) + fftw? ( sci-libs/fftw:3.0= ) + gmp? ( dev-libs/gmp[cxx] ) + gnome? ( gui-libs/libdecor ) + hip? ( >=dev-util/hip-5.7 ) + jack? ( virtual/jack ) + jemalloc? ( dev-libs/jemalloc:= ) + jpeg2k? ( media-libs/openjpeg:2= ) + ndof? ( + app-misc/spacenavd + dev-libs/libspnav + ) + nls? ( virtual/libiconv ) + openal? ( media-libs/openal ) + oidn? ( >=media-libs/oidn-2.1.0 ) + oneapi? ( || ( + dev-libs/intel-compute-runtime:0[l0] + dev-libs/intel-compute-runtime:legacy[l0] + ) + ) + openexr? ( + >=dev-libs/imath-3.1.7:= + >=media-libs/openexr-3.2.1:0= + ) + openpgl? ( media-libs/openpgl:= ) + opensubdiv? ( >=media-libs/opensubdiv-3.5.0 ) + openvdb? ( + >=media-gfx/openvdb-11.0.0:=[nanovdb?] + dev-libs/c-blosc:= + ) + optix? ( dev-libs/optix ) + osl? ( + >=media-libs/osl-1.13:=[${LLVM_USEDEP}] + media-libs/mesa[${LLVM_USEDEP}] + ) + pdf? ( media-libs/libharu ) + potrace? ( media-gfx/potrace ) + pugixml? ( dev-libs/pugixml ) + pulseaudio? ( media-libs/libpulse ) + sdl? ( media-libs/libsdl2[sound,joystick] ) + sndfile? ( media-libs/libsndfile ) + tbb? ( dev-cpp/tbb:= ) + tiff? ( media-libs/tiff:= ) + valgrind? ( dev-debug/valgrind ) + wayland? ( + >=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 + ) + vulkan? ( + media-libs/shaderc + dev-util/spirv-tools + dev-util/glslang + media-libs/vulkan-loader + ) + otf? ( + media-libs/harfbuzz + ) + renderdoc? ( + media-gfx/renderdoc + ) + X? ( + x11-libs/libX11 + x11-libs/libXi + x11-libs/libXxf86vm + ) +" + +DEPEND="${RDEPEND} + dev-cpp/eigen:= + vulkan? ( + dev-util/spirv-headers + dev-util/vulkan-headers + ) +" + +BDEPEND=" + virtual/pkgconfig + doc? ( + app-text/doxygen[dot] + dev-python/sphinx[latex] + dev-texlive/texlive-bibtexextra + dev-texlive/texlive-fontsextra + dev-texlive/texlive-fontutils + dev-texlive/texlive-latex + dev-texlive/texlive-latexextra + ) + nls? ( sys-devel/gettext ) + wayland? ( + dev-util/wayland-scanner + ) + X? ( + x11-base/xorg-proto + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-4.0.2-FindClang.patch" + "${FILESDIR}/${PN}-4.0.2-CUDA_NVCC_FLAGS.patch" + "${FILESDIR}/${PN}-4.1.1-FindLLVM.patch" + "${FILESDIR}/${PN}-4.1.1-numpy.patch" + "${FILESDIR}/${PN}-4.3.2-ffmpeg7.patch" +) + +blender_check_requirements() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp + + if use doc; then + CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend + fi +} + +blender_get_version() { + # Get blender version from blender itself. + BV=$(grep "BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d " " -f 3; assert) + if ((${BV:0:1} < 3)) ; then + # Add period (290 -> 2.90). + BV=${BV:0:1}.${BV:1} + else + # Add period and skip the middle number (301 -> 3.1) + BV=${BV:0:1}.${BV:2} + fi +} + +pkg_pretend() { + blender_check_requirements + + if use oneapi; then + einfo "The Intel oneAPI support is rudimentary." + einfo "" + einfo "Please report any bugs you find to https://bugs.gentoo.org/" + fi +} + +pkg_setup() { + if use osl; then + llvm-r1_pkg_setup + fi + + blender_check_requirements + python-single-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} = *9999* ]] ; then + if ! use test; then + EGIT_SUBMODULES+=( '-tests/*' ) + fi + git-r3_src_unpack + else + default + + if use test; then + mkdir -p "${S}/tests/data/" || die + mv blender-test-data/* "${S}/tests/data/" || die + fi + fi +} + +src_prepare() { + use cuda && cuda_src_prepare + + cmake_src_prepare + + blender_get_version + + # Disable MS Windows help generation. The variable doesn't do what it + # it sounds like. + sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \ + -i doc/doxygen/Doxyfile || die + + # Prepare icons and .desktop files for slotting. + sed \ + -e "s|blender.svg|blender-${BV}.svg|" \ + -e "s|blender-symbolic.svg|blender-${BV}-symbolic.svg|" \ + -e "s|blender.desktop|blender-${BV}.desktop|" \ + -e "s|org.blender.Blender.metainfo.xml|blender-${BV}.metainfo.xml|" \ + -i source/creator/CMakeLists.txt || die + + sed \ + -e "s|Name=Blender|Name=Blender ${BV}|" \ + -e "s|Exec=blender|Exec=blender-${BV}|" \ + -e "s|Icon=blender|Icon=blender-${BV}|" \ + -i release/freedesktop/blender.desktop || die + + sed -e "s|\${CMAKE_INSTALL_PREFIX}/\${BLENDER_BIN}|${T}/usr/\${BLENDER_BIN}|g" -i source/creator/CMakeLists.txt || 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 + mv release/freedesktop/org.blender.Blender.metainfo.xml "release/freedesktop/blender-${BV}.metainfo.xml" + mv release/freedesktop/org.blender.Blender.appdata.xml "release/freedesktop/blender-${BV}.appdata.xml" + + 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 ${T}/usr)|g" -i tests/CMakeLists.txt || die + sed -e "s|string(REPLACE.*|set(TEST_INSTALL_DIR ${T}/usr)|g" -i build_files/cmake/testing.cmake || die + fi + + if use vulkan; then + sed -e "s/extern_vulkan_memory_allocator/extern_vulkan_memory_allocator\nSPIRV-Tools-opt\nSPIRV-Tools\nSPIRV-Tools-link\nglslang\nSPIRV\nSPVRemapper/" -i source/blender/gpu/CMakeLists.txt || die + fi +} + +src_configure() { + # -Werror=odr, -Werror=lto-type-mismatch + # https://bugs.gentoo.org/859607 + # https://projects.blender.org/blender/blender/issues/120444 + filter-lto + + # Workaround for bug #922600 + append-ldflags $(test-flags-CCLD -Wl,--undefined-version) + + append-lfs-flags + blender_get_version + + local mycmakeargs=( + -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_BOOST=yes + -DWITH_BULLET=$(usex bullet) + -DWITH_CODEC_FFMPEG=$(usex ffmpeg) + -DWITH_CODEC_SNDFILE=$(usex sndfile) + -DWITH_CPU_CHECK=no + + -DWITH_CYCLES=$(usex cycles) + + -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda) + -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda $(usex cycles-bin-kernels))" + -DWITH_CYCLES_DEVICE_OPTIX=$(usex optix) + + -DWITH_CYCLES_DEVICE_HIP="$(usex hip)" + -DWITH_CYCLES_HIP_BINARIES=$(usex hip $(usex cycles-bin-kernels)) + + -DWITH_CYCLES_DEVICE_ONEAPI="$(usex oneapi)" + -DWITH_CYCLES_ONEAPI_BINARIES="$(usex oneapi $(usex cycles-bin-kernels))" + + -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra + -DWITH_CYCLES_EMBREE="$(usex embree)" + -DWITH_CYCLES_OSL=$(usex osl) + -DWITH_CYCLES_PATH_GUIDING=$(usex openpgl) + -DWITH_CYCLES_STANDALONE=no + -DWITH_CYCLES_STANDALONE_GUI=no + + -DWITH_DOC_MANPAGE=$(usex man) + -DWITH_DRACO="no" # TODO: Package Draco + -DWITH_FFTW3=$(usex fftw) + -DWITH_GHOST_WAYLAND=$(usex wayland) + -DWITH_GHOST_WAYLAND_DYNLOAD="no" + -DWITH_GHOST_X11=$(usex X) + -DWITH_GMP=$(usex gmp) + -DWITH_GTESTS=$(usex test) + -DWITH_HARFBUZZ="$(usex otf)" + -DWITH_HARU=$(usex pdf) + -DWITH_HEADLESS=$($(use X || use wayland) && echo OFF || echo ON) + -DWITH_HYDRA="no" # TODO: Package Hydra + -DWITH_IMAGE_OPENEXR=$(usex openexr) + -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k) + -DWITH_IMAGE_WEBP=$(usex webp) + -DWITH_INPUT_NDOF=$(usex ndof) + -DWITH_INSTALL_PORTABLE="no" + -DWITH_INTERNATIONAL=$(usex nls) + -DWITH_JACK=$(usex jack) + -DWITH_MATERIALX="no" # TODO: Package MaterialX + -DWITH_MEM_JEMALLOC=$(usex jemalloc) + -DWITH_MEM_VALGRIND=$(usex valgrind) + -DWITH_MOD_FLUID=$(usex fluid) + -DWITH_MOD_OCEANSIM=$(usex fftw) + -DWITH_NANOVDB=$(usex nanovdb) + -DWITH_OPENAL=$(usex openal) + -DWITH_OPENCOLLADA=$(usex collada) + -DWITH_OPENCOLORIO=$(usex color-management) + -DWITH_OPENIMAGEDENOISE=$(usex oidn) + -DWITH_OPENMP=$(usex openmp) + -DWITH_OPENSUBDIV=$(usex opensubdiv) + -DWITH_OPENVDB=$(usex openvdb) + -DWITH_OPENVDB_BLOSC=$(usex openvdb) + -DWITH_POTRACE=$(usex potrace) + -DWITH_PUGIXML=$(usex pugixml) + -DWITH_PULSEAUDIO=$(usex pulseaudio) + -DWITH_PYTHON_INSTALL=no + -DWITH_PYTHON_INSTALL_NUMPY=no + -DWITH_PYTHON_INSTALL_ZSTANDARD=no + -DWITH_RENDERDOC="$(usex renderdoc)" + -DWITH_SDL=$(usex sdl) + -DWITH_STATIC_LIBS=no + -DWITH_STRICT_BUILD_OPTIONS=yes + -DWITH_SYSTEM_EIGEN3=yes + -DWITH_SYSTEM_FREETYPE=yes + -DWITH_SYSTEM_LZO=yes + -DWITH_TBB=$(usex tbb) + -DWITH_USD="no" # TODO: Package USD + -DWITH_VULKAN_BACKEND="$(usex vulkan)" + -DWITH_XR_OPENXR=no + ) + + if has_version ">=dev-python/numpy-2"; then + mycmakeargs+=( + -DPYTHON_NUMPY_INCLUDE_DIRS="$(python_get_sitedir)/numpy/_core/include" + -DPYTHON_NUMPY_PATH="$(python_get_sitedir)/numpy/_core/include" + ) + fi + + # requires dev-vcs/git + if [[ ${PV} = *9999* ]] ; then + mycmakeargs+=( -DWITH_BUILDINFO="yes" ) + else + mycmakeargs+=( -DWITH_BUILDINFO="no" ) + fi + + if use cuda; then + mycmakeargs+=( + -DCUDA_NVCC_FLAGS="--compiler-bindir;$(cuda_gccdir)" + ) + fi + + if use hip; then + mycmakeargs+=( + -DROCM_PATH="$(hipconfig -R)" + -DHIP_HIPCC_FLAGS="-fcf-protection=none" + ) + fi + + if use optix; then + mycmakeargs+=( + -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${EPREFIX}"/opt/optix + -DOPTIX_ROOT_DIR="${EPREFIX}"/opt/optix + ) + fi + + if use wayland; then + mycmakeargs+=( + -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" + -DWITH_GHOST_WAYLAND_LIBDECOR="$(usex gnome)" + ) + fi + + # 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-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=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 || use osl; 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_GPU_DRAW_TESTS=yes + -DWITH_GPU_RENDER_TESTS=yes + ) + fi + + cmake_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. + DESTDIR="${T}" cmake_build install + + blender_get_version + # By default, blender will look for system scripts and data in + # /usr/share/, but until this is installed, they are not necessarily + # available there. Use this to have blender search the intermediate + # install directory instead. + export BLENDER_SYSTEM_RESOURCES="${T}/usr/share/blender/${BV}" + + # Brake check: Make sure the above path is valid. + # If not, blender will fallback to the default path which is not what + # we want. + [ -d "$BLENDER_SYSTEM_RESOURCES" ] || die "The custom script path is invalid, fix the ebuild!" + + if use cuda; then + cuda_add_sandbox -w + addwrite "/dev/dri/renderD128" + addwrite "/dev/char/" + fi + + if use X; then + xdg_environment_reset + fi + + addwrite /dev/dri + + cmake_src_test + + # Clean up the image directory for src_install + rm -fr "${T}/usr" || die +} + +src_install() { + blender_get_version + + # Pax mark blender for hardened support. + pax-mark m "${BUILD_DIR}"/bin/blender + + cmake_src_install + + if use man; then + # Slot the man page + mv "${ED}/usr/share/man/man1/blender.1" "${ED}/usr/share/man/man1/blender-${BV}.1" || die + fi + + if use doc; then + # By default, blender will look for system scripts and data in + # /usr/share/, but until this is installed, they are not necessarily + # available there. Use this to have blender search the intermediate + # install directory instead. + export BLENDER_SYSTEM_RESOURCES="${ED}/usr/share/blender/${BV}" + + # Brake check: Make sure the above path is valid. + # If not, blender will fallback to the default path which is not what + # we want. + [ -d "$BLENDER_SYSTEM_RESOURCES" ] || die "The custom script path is invalid, fix the ebuild!" + + # Workaround for binary drivers. + addpredict /dev/ati + addpredict /dev/dri + addpredict /dev/nvidiactl + + einfo "Generating Blender C/C++ API docs ..." + cd "${CMAKE_USE_DIR}"/doc/doxygen || die + doxygen -u Doxyfile || die + doxygen || die "doxygen failed to build API docs." + + cd "${CMAKE_USE_DIR}" || die + einfo "Generating (BPY) Blender Python API docs ..." + "${BUILD_DIR}"/bin/blender --background --python doc/python_api/sphinx_doc_gen.py -noaudio || die "sphinx failed." + + cd "${CMAKE_USE_DIR}"/doc/python_api || die + sphinx-build sphinx-in BPY_API || die "sphinx failed." + + docinto "html/API/python" + dodoc -r "${CMAKE_USE_DIR}"/doc/python_api/BPY_API/. + + docinto "html/API/blender" + dodoc -r "${CMAKE_USE_DIR}"/doc/doxygen/html/. + fi + + # Fix doc installdir + docinto html + dodoc "${CMAKE_USE_DIR}"/release/text/readme.html + rm -r "${ED}"/usr/share/doc/blender || die + + python_optimize "${ED}/usr/share/blender/${BV}/scripts" + + mv "${ED}/usr/bin/blender-thumbnailer" "${ED}/usr/bin/blender-${BV}-thumbnailer" || die + mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die +} + +pkg_postinst() { + elog + elog "Blender uses python integration. As such, may have some" + elog "inherent risks with running unknown python scripts." + elog + elog "It is recommended to change your blender temp directory" + elog "from /tmp to /home/user/tmp or another tmp file under your" + elog "home directory. This can be done by starting blender, then" + elog "changing the 'Temporary Files' directory in Blender preferences." + elog + + if use osl; then + ewarn "" + ewarn "OSL is know to cause runtime segfaults if Mesa has been linked to" + ewarn "an other LLVM version than what OSL is linked to." + ewarn "See https://bugs.gentoo.org/880671 for more details" + ewarn "" + fi + + if ! use python_single_target_python3_11; then + elog "You are building Blender with a newer python version than" + elog "supported by this version upstream." + elog "If you experience breakages with e.g. plugins, please switch to" + elog "python_single_target_python3_11 instead." + elog "Bug: https://bugs.gentoo.org/737388" + elog + fi + + xdg_icon_cache_update + xdg_mimeinfo_database_update + xdg_desktop_database_update +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_mimeinfo_database_update + xdg_desktop_database_update + + ewarn "" + ewarn "You may want to remove the following directory." + ewarn "~/.config/${PN}/${BV}/cache/" + ewarn "It may contain extra render kernels not tracked by portage" + ewarn "" +} diff --git a/media-gfx/blender/blender-9999.ebuild b/media-gfx/blender/blender-9999.ebuild index 8cf95a7b4ed5..ae310352c7cd 100644 --- a/media-gfx/blender/blender-9999.ebuild +++ b/media-gfx/blender/blender-9999.ebuild @@ -96,7 +96,11 @@ RDEPEND="${PYTHON_DEPS} nls? ( virtual/libiconv ) openal? ( media-libs/openal ) oidn? ( >=media-libs/oidn-2.1.0 ) - oneapi? ( dev-libs/intel-compute-runtime[l0] ) + oneapi? ( || ( + dev-libs/intel-compute-runtime:0[l0] + dev-libs/intel-compute-runtime:legacy[l0] + ) + ) openexr? ( >=dev-libs/imath-3.1.7:= >=media-libs/openexr-3.2.1:0= diff --git a/media-gfx/prusaslicer/Manifest b/media-gfx/prusaslicer/Manifest index b0ec51e8438f..9af57ffeea5a 100644 --- a/media-gfx/prusaslicer/Manifest +++ b/media-gfx/prusaslicer/Manifest @@ -10,10 +10,10 @@ AUX prusaslicer-2.8.1-opencascade-7.8.0.patch 401 BLAKE2B e2d3a859e418be897d093f AUX prusaslicer-2.9.0-arrange-static.patch 1789 BLAKE2B 42a83e9b65985fe63631f60432b42cc7f1fb3960327307100273db5ee003e0ef660ea38f50183d0f3fd047f9d22e0ac016a26401b9e05db548c778c187b110c6 SHA512 1eaf97314118aec7bdb2e0d1ad03fb69645a23283b24ef2992146f0fd1e7ed0cb3b852a97d0eaec699c982ed968a69a2bbb078f771031b7f85ed5927f0d5f29a AUX prusaslicer-2.9.0-missing-includes.patch 306 BLAKE2B 8b8de2ad9c7adee8cddaff29eee2f4aae6a789b150f130846235dd0e76be053e36f1ad5c7396837c59b8246be0ff04ba9e365684ce8bffb30fbd8d18f271ee27 SHA512 0ebb829ff10e5214a19c77aec5f55874df3d04ab16ac70e5fd8219e7fb25e93ef5ab5b30d49cf71bdd154f36157183e2d6a27bb47f011baaeb1b00097e5b8166 DIST prusaslicer-2.8.1.tar.gz 69409077 BLAKE2B dd3ee810ea00d03f1790386d1fe1fd044c038429700cd33f21299abdf5def12902f7a07c23aa3d2a6cfc5e18d1e2534080889d4a33beefb493a504978a742453 SHA512 0471fa579a494d66e6b49c0bc1a9fa91f3a5f9147d8b7fa8133c6f03391f8daddddb19ed222d1be44f6f22e2de3021f3fb839331e3c3ccdf5643caa8a61d6912 -DIST prusaslicer-2.9.0.tar.gz 70604482 BLAKE2B 14480ad6e4257d052e65f7158e14e6eb57f2e51c5c7ce3a6545b36a47007cb528aa38a1ff00eacd70374dfaef4ba7efd185dd5add1a6807f79148a124320126a SHA512 554099ba827f8b4af37727d4e99ad6b2f339c530f35a4f8e63f0c5aaf455a5fc3261b983939c487f76964c522ea8ecd13527efea7f881749f907a039cfe7ef89 DIST prusaslicer-2.9.1.tar.gz 76767199 BLAKE2B 0aaf606f25b449f6787905edc06c15cf89e78fa1bc51db2f1fd9e54cc5d1285be9cbe5232e98bdd24de792784c328fb6a79535414b3ff279ddc4dccc8dd0c93c SHA512 a7a7131fa0d04bbf63954e047c8db18fffd71e35650841d281b5f97ec23b8029324a187320a5b5f5abdc7da2ec44c2a757e4a67db22e17bbcc069756e59959d9 +DIST prusaslicer-2.9.2.tar.gz 76992191 BLAKE2B ac88d2549baeb896137f85531eabe8e3c87b2998766e9f21d5e10be62fd421d821d2e66a818462c26fd20105fa3589e5396300f8795f0f97cbf26d11d25dd1bf SHA512 f43d6c2e639f029f91e722bcbac7db993ff4df69a850421e9acac4165bafeeb7f765a9ecab88d5bd5221524b3fbce78ae84f62d290a406406fd75644811440c1 EBUILD prusaslicer-2.8.1-r1.ebuild 2752 BLAKE2B 43107bfa1a0026d7cf3eabd3b49dd43216997f99a0b56a27865e16406d80134a26f863fc8bbca5a2521e186c73059dfb9854554cbd7f904d1147b82efc296a92 SHA512 b0721b56b5ba73238b16e69a41e6c1effbe42c7ed38071591381880365891fcdac515a0f5a1a2a3eb3672c60565d1832d670af8d943b433f03b9785580f5446f -EBUILD prusaslicer-2.9.0.ebuild 2625 BLAKE2B 21dd02edd34dc43d181f286acff9cd80cf13ec4690d358aed66115c3346438b95c77f63b45e659da3595127ba59b1c61be0f9c909069a1b559f21e7ee7085fc3 SHA512 da4207cb458cb0af251771bf383eb832689cbfed43a2d7188ed5f478e585e741c484ccd9097703824dd51e7da49aefe8838c019c94ed2355a0b9b22d94104383 EBUILD prusaslicer-2.9.1.ebuild 2500 BLAKE2B 0588cf2f1ac1bf85f3f4a1fbc65ecc5bc2a3043773f243b461906a223833f22b993ca8a463f243164a9daad0e5b9e9eadb0c9c349c5fd714749b790857d844db SHA512 ce143cbed74e8d1c4243b978cbf906de93323c420dcf476c10d1bd95e81f38d9ec5d095835668e1f5551659e401ea5228859c6d270bcade9e27668a7ed5db15d +EBUILD prusaslicer-2.9.2.ebuild 2500 BLAKE2B 0588cf2f1ac1bf85f3f4a1fbc65ecc5bc2a3043773f243b461906a223833f22b993ca8a463f243164a9daad0e5b9e9eadb0c9c349c5fd714749b790857d844db SHA512 ce143cbed74e8d1c4243b978cbf906de93323c420dcf476c10d1bd95e81f38d9ec5d095835668e1f5551659e401ea5228859c6d270bcade9e27668a7ed5db15d EBUILD prusaslicer-9999.ebuild 2500 BLAKE2B 0588cf2f1ac1bf85f3f4a1fbc65ecc5bc2a3043773f243b461906a223833f22b993ca8a463f243164a9daad0e5b9e9eadb0c9c349c5fd714749b790857d844db SHA512 ce143cbed74e8d1c4243b978cbf906de93323c420dcf476c10d1bd95e81f38d9ec5d095835668e1f5551659e401ea5228859c6d270bcade9e27668a7ed5db15d MISC metadata.xml 1028 BLAKE2B a267e6b0ee72a85b895046cc7d5f659cca379fd799a9ebb802dc1fafd7edfa1b989784b10eb93ac24f1ea6153153b892e28e20055b0a7d2021f6db7742e065b4 SHA512 5760ea954f5ccf09e5d69e101b6d68839a4517a9375adc3009b1bf846b98091ee0555e9c92bb0cf316670efec699cd24d04b4ebe7db5b65e363f83051d868512 diff --git a/media-gfx/prusaslicer/prusaslicer-2.9.0.ebuild b/media-gfx/prusaslicer/prusaslicer-2.9.0.ebuild deleted file mode 100644 index 2f4ebe6ec2af..000000000000 --- a/media-gfx/prusaslicer/prusaslicer-2.9.0.ebuild +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -WX_GTK_VER="3.2-gtk3" -MY_PN="PrusaSlicer" -MY_PV="$(ver_rs 3 -)" - -inherit cmake wxwidgets xdg - -if [[ ${PV} == *9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/prusa3d/prusaslicer.git" -else - SRC_URI="https://github.com/prusa3d/PrusaSlicer/archive/refs/tags/version_${MY_PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="~amd64 ~arm64 ~x86" - S="${WORKDIR}/${MY_PN}-version_${MY_PV}" -fi - -DESCRIPTION="A mesh slicer to generate G-code for fused-filament-fabrication (3D printers)" -HOMEPAGE="https://www.prusa3d.com/prusaslicer/" - -LICENSE="AGPL-3 Boost-1.0 GPL-2 LGPL-3 MIT" -SLOT="0" -IUSE="test" - -RESTRICT="!test? ( test )" - -RDEPEND=" - dev-cpp/eigen:3 - dev-cpp/tbb:= - dev-libs/boost:=[nls] - dev-libs/cereal - dev-libs/expat - dev-libs/glib:2 - dev-libs/gmp:= - dev-libs/mpfr:= - media-gfx/openvdb:= - media-gfx/libbgcode - net-misc/curl[adns] - media-libs/glew:0= - media-libs/libjpeg-turbo:= - media-libs/libpng:0= - media-libs/qhull:= - net-libs/webkit-gtk:4.1 - sci-libs/libigl - sci-libs/nlopt - sci-libs/opencascade:= - sci-mathematics/cgal:= - sys-apps/dbus - sys-libs/zlib:= - virtual/opengl - x11-libs/gtk+:3 - >=x11-libs/wxGTK-3.2.2.1-r3:${WX_GTK_VER}[X,opengl,webkit] - media-libs/nanosvg:= -" -DEPEND="${RDEPEND} - media-libs/qhull[static-libs] - test? ( =dev-cpp/catch-2* ) -" - -PATCHES=( - "${FILESDIR}/${PN}-2.6.0-dont-force-link-to-wayland-and-x11.patch" - "${FILESDIR}/${PN}-2.8.0-wxwidgets-3.2.4.patch" - "${FILESDIR}/${PN}-2.8.1-cgal-6.0.patch" - "${FILESDIR}/${PN}-2.8.1-fstream.patch" - "${FILESDIR}/${PN}-2.8.1-fix-libsoup-double-linking.patch" - "${FILESDIR}/${PN}-2.8.1-boost-1.87.patch" - "${FILESDIR}/${PN}-2.9.0-missing-includes.patch" - "${FILESDIR}/${PN}-2.9.0-arrange-static.patch" -) - -src_prepare() { - if has_version ">=sci-libs/opencascade-7.8.0"; then - eapply "${FILESDIR}/prusaslicer-2.8.1-opencascade-7.8.0.patch" - fi - - sed -i -e 's/PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN/PrusaSlicer-${SLIC3R_VERSION}+Gentoo/g' version.inc || die - - sed -i -e 's/find_package(OpenCASCADE 7.6.[0-9] REQUIRED)/find_package(OpenCASCADE REQUIRED)/g' \ - src/occt_wrapper/CMakeLists.txt || die - - cmake_src_prepare -} - -src_configure() { - CMAKE_BUILD_TYPE="Release" - - setup-wxwidgets - - local mycmakeargs=( - -DOPENVDB_FIND_MODULE_PATH="/usr/$(get_libdir)/cmake/OpenVDB" - - -DSLIC3R_BUILD_TESTS=$(usex test) - -DSLIC3R_FHS=ON - -DSLIC3R_GTK=3 - -DSLIC3R_GUI=ON - -DSLIC3R_PCH=OFF - -DSLIC3R_STATIC=OFF - -DSLIC3R_WX_STABLE=ON - -Wno-dev - ) - - cmake_src_configure -} - -src_test() { - CMAKE_SKIP_TESTS=( - "^libslic3r_tests$" - ) - cmake_src_test -} diff --git a/media-gfx/prusaslicer/prusaslicer-2.9.2.ebuild b/media-gfx/prusaslicer/prusaslicer-2.9.2.ebuild new file mode 100644 index 000000000000..ddb4522b2ddc --- /dev/null +++ b/media-gfx/prusaslicer/prusaslicer-2.9.2.ebuild @@ -0,0 +1,111 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +WX_GTK_VER="3.2-gtk3" +MY_PN="PrusaSlicer" +MY_PV="$(ver_rs 3 -)" + +inherit cmake wxwidgets xdg + +if [[ ${PV} == *9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/prusa3d/prusaslicer.git" +else + SRC_URI="https://github.com/prusa3d/PrusaSlicer/archive/refs/tags/version_${MY_PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~arm64 ~x86" + S="${WORKDIR}/${MY_PN}-version_${MY_PV}" +fi + +DESCRIPTION="A mesh slicer to generate G-code for fused-filament-fabrication (3D printers)" +HOMEPAGE="https://www.prusa3d.com/prusaslicer/" + +LICENSE="AGPL-3 Boost-1.0 GPL-2 LGPL-3 MIT" +SLOT="0" +IUSE="test" + +RESTRICT="!test? ( test )" + +RDEPEND=" + dev-cpp/eigen:3 + dev-cpp/tbb:= + dev-libs/boost:=[nls] + dev-libs/cereal + dev-libs/expat + dev-libs/glib:2 + dev-libs/gmp:= + dev-libs/mpfr:= + media-gfx/openvdb:= + media-gfx/libbgcode + net-misc/curl[adns] + media-libs/glew:0= + media-libs/libjpeg-turbo:= + media-libs/libpng:0= + media-libs/qhull:= + net-libs/webkit-gtk:4.1 + sci-libs/libigl + sci-libs/nlopt + sci-libs/opencascade:= + sci-mathematics/cgal:= + sci-mathematics/z3:= + sys-apps/dbus + sys-libs/zlib:= + virtual/opengl + x11-libs/gtk+:3 + >=x11-libs/wxGTK-3.2.2.1-r3:${WX_GTK_VER}[X,opengl,webkit] + media-libs/nanosvg:= +" +DEPEND="${RDEPEND} + media-libs/qhull[static-libs] + test? ( =dev-cpp/catch-2* ) +" + +PATCHES=( + "${FILESDIR}/${PN}-2.6.0-dont-force-link-to-wayland-and-x11.patch" + "${FILESDIR}/${PN}-2.8.1-cgal-6.0.patch" + "${FILESDIR}/${PN}-2.8.1-fstream.patch" + "${FILESDIR}/${PN}-2.8.1-fix-libsoup-double-linking.patch" + "${FILESDIR}/${PN}-2.8.1-boost-1.87.patch" +) + +src_prepare() { + if has_version ">=sci-libs/opencascade-7.8.0"; then + eapply "${FILESDIR}/prusaslicer-2.8.1-opencascade-7.8.0.patch" + fi + + sed -i -e 's/PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN/PrusaSlicer-${SLIC3R_VERSION}+Gentoo/g' version.inc || die + + sed -i -e 's/find_package(OpenCASCADE 7.6.[0-9] REQUIRED)/find_package(OpenCASCADE REQUIRED)/g' \ + src/occt_wrapper/CMakeLists.txt || die + + cmake_src_prepare +} + +src_configure() { + CMAKE_BUILD_TYPE="Release" + + setup-wxwidgets + + local mycmakeargs=( + -DOPENVDB_FIND_MODULE_PATH="/usr/$(get_libdir)/cmake/OpenVDB" + + -DSLIC3R_BUILD_TESTS=$(usex test) + -DSLIC3R_FHS=ON + -DSLIC3R_GTK=3 + -DSLIC3R_GUI=ON + -DSLIC3R_PCH=OFF + -DSLIC3R_STATIC=OFF + -DSLIC3R_WX_STABLE=ON + -Wno-dev + ) + + cmake_src_configure +} + +src_test() { + CMAKE_SKIP_TESTS=( + "^libslic3r_tests$" + ) + cmake_src_test +} -- cgit v1.2.3