summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-09-09 03:56:31 -0500
committerroot <root@alpha.trunkmasters.com>2026-09-09 03:56:31 -0500
commit98068fb4a1502cade02134b1834439134ca4eed1 (patch)
treee520b2626c8751a47d5c75df8df15b9407d48462
parentdd4dbff7d90d19cb3b8a4657236e598887ffbd41 (diff)
downloadbaldeagleos-repo-98068fb4a1502cade02134b1834439134ca4eed1.tar.gz
baldeagleos-repo-98068fb4a1502cade02134b1834439134ca4eed1.tar.xz
baldeagleos-repo-98068fb4a1502cade02134b1834439134ca4eed1.zip
Adding metadata
-rw-r--r--app-admin/vaultwarden/Manifest4
-rw-r--r--app-admin/vaultwarden/vaultwarden-1.36.0.ebuild158
-rw-r--r--app-admin/vaultwarden/vaultwarden-1.37.1.ebuild151
-rw-r--r--app-admin/vaultwarden/vaultwarden-1.37.2.ebuild6
-rw-r--r--app-admin/vaultwarden/vaultwarden-9999.ebuild6
-rw-r--r--dev-libs/cutlass/cutlass-4.6.1.ebuild10
-rw-r--r--media-gfx/blender/Manifest9
-rw-r--r--media-gfx/blender/blender-4.2.16.ebuild766
-rw-r--r--media-gfx/blender/blender-4.4.3.ebuild895
-rw-r--r--media-gfx/blender/blender-4.5.5.ebuild964
-rw-r--r--media-gfx/blender/blender-4.5.9999.ebuild963
-rw-r--r--media-gfx/blender/blender-5.0.9999.ebuild948
-rw-r--r--media-gfx/blender/blender-5.2.1.ebuild (renamed from media-gfx/blender/blender-5.0.0.ebuild)74
-rw-r--r--media-gfx/blender/blender-9999.ebuild942
-rw-r--r--media-gfx/blender/files/blender-4.0.2-CUDA_NVCC_FLAGS.patch14
-rw-r--r--media-gfx/blender/files/blender-4.0.2-FindClang.patch14
-rw-r--r--media-gfx/blender/files/blender-4.1.1-numpy.patch26
-rw-r--r--media-gfx/blender/files/blender-4.3.2-ffmpeg7.patch151
-rw-r--r--media-gfx/blender/files/blender-4.3.2-openvdb-12.patch76
-rw-r--r--media-gfx/blender/files/blender-4.3.2-optix-8.1.0.patch34
-rw-r--r--media-gfx/blender/files/blender-4.3.2-system-glog.patch79
-rw-r--r--media-gfx/blender/files/blender-4.4.0-optix-compile-flags.patch40
-rw-r--r--media-gfx/blender/files/blender-4.5.0-ffmpeg-8.0.patch40
-rw-r--r--media-gfx/blender/files/blender-4.5.3-cmake-policy-3.10.patch68
-rw-r--r--media-gfx/blender/files/blender-5.0.0-osd-omp-link.patch17
-rw-r--r--media-gfx/blender/files/blender-5.2.1-FindClang.patch (renamed from media-gfx/blender/files/blender-5.0.0-FindClang.patch)6
-rw-r--r--media-gfx/blender/files/blender-5.2.1-eigen-3.4.patch67
-rw-r--r--media-gfx/blender/files/blender-5.2.1-osd-omp-link.patch15
-rw-r--r--media-gfx/blender/files/blender-5.2.1-osl-python-types.patch20
-rw-r--r--media-gfx/blender/files/blender-9999-don-t-show-variable-names.patch25
-rw-r--r--media-gfx/blender/metadata.xml18
-rw-r--r--sci-libs/vtk/vtk-9.5.2.ebuild5
32 files changed, 147 insertions, 6464 deletions
diff --git a/app-admin/vaultwarden/Manifest b/app-admin/vaultwarden/Manifest
index 63dd18cd29be..e3f6957416be 100644
--- a/app-admin/vaultwarden/Manifest
+++ b/app-admin/vaultwarden/Manifest
@@ -1,6 +1,2 @@
-DIST vaultwarden-1.36.0-deps.tar.xz 50360552 BLAKE2B 6696028b155140469c750bc75c16268e2de85b39bf2d4a6143c5f8f47093b199f3248dcc5335745f8e8556ae4905f7acf0c62d44642ba5225504e6317a9ebc92 SHA512 cb06e4c95109fb9643cc55dd9cc0d571016c064ef1cd72db5a0fd6fc10fbfc1d4c883471e8a23359cb343bbac3e043a75046707e6f86be9dc5c010f89be9a85e
-DIST vaultwarden-1.36.0.tar.gz 727573 BLAKE2B 89cb7b8dece4a71c86aba329b404dd08d38052f1af4639e0b57182e6902c182ca43e70e9cb9dcbd81d20548e9f60d0280c3818180cc7b90e84355a0c2d081e03 SHA512 59b7be22504826a5b3cb7c30d84c2648d80af5bf003b16512401dd734baf05a208651cdd49bc79120a85e43c92df303f2f501521161b7e550c44ffeccb3e5923
-DIST vaultwarden-1.37.0-deps.tar.xz 48840240 BLAKE2B abbd4c6ca78b1bc410cdda7cab6842fa0d06cf40fa9fbf82b915221da0f3ba31458f2b0dd52efbc185c19f7cbf23e3a37f78299d7cfa25fd84a05d80a4c7cd3a SHA512 955858aef6fff1074bc729ad389ab0609285372f14779294a46f8d18f378b5d1e448d114fcb015ba17b709456e006358183e2a1fa240ae3e4c7f8db97e10e459
-DIST vaultwarden-1.37.1.tar.gz 739171 BLAKE2B be8cfbc6c0182c3d000f133892e201d28df56f2cea9f1e50c812dc039906459313ba5bb0f80b082133854d76b56b283cdd7f8d1da70df2c80f2748e5df36f004 SHA512 251323087e4b5b0b7b8f4261a6cd6fd5ac833eb29b3fc2e3365f2dd169f2e6852534ef9c3f1b3f18146c76538a028a09836e2babf32cde4672b88d9399c5f326
DIST vaultwarden-1.37.2-deps.tar.xz 49758228 BLAKE2B b497870e07d889fb2747134d98704348f4cf92dd52d2f90ec13c4a06568ce639e043baac87f6949cbeafb4029a89371246c041b9bee2b55ddb10547a46d6dd17 SHA512 276b1c4b61e2fe8c872b75e7d05c700830a432b81c5cadf1f62421111115d13a9ff57fc3c848e6c06b0c0423f27389f65a615d2682d7cfc3092ae9c18faf9b9a
DIST vaultwarden-1.37.2.tar.gz 742207 BLAKE2B 3998da25768f43102b1f0c628f78705d0af94b0fbb82a9d1f7cf216f8197743b49bbc62b54bca6516fb845d0595ba2c8a22eb604c9aa7c0cee717ffe3a180af1 SHA512 9ddc5e829ffe990a5c866833f4155d062bb974f5c04e2d6b31d5e0a53fb619e054366b65d3777a27080cb0572709548b71d49eb3f7b3e6c1edf1c195c8a10908
diff --git a/app-admin/vaultwarden/vaultwarden-1.36.0.ebuild b/app-admin/vaultwarden/vaultwarden-1.36.0.ebuild
deleted file mode 100644
index 9137586fa047..000000000000
--- a/app-admin/vaultwarden/vaultwarden-1.36.0.ebuild
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cargo check-reqs readme.gentoo-r1 systemd tmpfiles
-
-DESCRIPTION="Unofficial Bitwarden compatible password manager"
-HOMEPAGE="https://github.com/dani-garcia/vaultwarden"
-
-if [[ ${PV} == 9999* ]]; then
- inherit git-r3
- EGIT_REPO_URI="https://github.com/dani-garcia/vaultwarden.git"
-else
- SRC_URI="
- https://github.com/dani-garcia/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
- https://github.com/gentoo-crate-dist/${PN}/releases/download/${PV}/${P}-crates.tar.xz -> ${P}-deps.tar.xz
-"
- KEYWORDS="~amd64 ~arm64"
-fi
-
-LICENSE="AGPL-3"
-# Dependent crate licenses
-LICENSE+=" 0BSD Apache-2.0 BSD ISC MIT MPL-2.0 Unicode-3.0"
-
-SLOT="0"
-IUSE="cli mysql postgres +sqlite +web"
-REQUIRED_USE="|| ( mysql postgres sqlite )"
-
-RDEPEND="
- acct-user/vaultwarden
- acct-group/vaultwarden
- dev-libs/openssl:=
- cli? ( app-admin/bitwarden-cli-bin )
- mysql? ( dev-db/mysql-connector-c:= )
- postgres? ( dev-db/postgresql:* )
- sqlite? ( dev-db/sqlite:3 )
- web? ( www-apps/vaultwarden-web )
-"
-
-DEPEND="${RDEPEND}"
-BDEPEND="virtual/pkgconfig"
-
-RUST_MIN_VER="1.93.0"
-QA_FLAGS_IGNORED="usr/bin/${PN}"
-QA_PRESTRIPPED="usr/bin/${PN}"
-
-PATCHES=(
- "${FILESDIR}"/vaultwarden-envfile-1.34.1.patch
-)
-
-CHECKREQS_MEMORY=3G
-CHECKREQS_DISK_BUILD=2G
-
-DOC_CONTENTS="\n
- Configuration file: /etc/${PN}/${PN}.conf\n
- Data directory: /var/lib/${PN}\n
- Log file: /var/log/${PN}/${PN}.log\n
- Default endpoint: http://127.0.0.1:8000\n
- Admin endpoint: http://127.0.0.1:8000/admin\n
- \n
- MySQL & PostgreSQL users must set DATABASE_URL in config\n
- \n
- Please find the documentation at https://github.com/dani-garcia/vaultwarden/wiki\n
-"
-
-pkg_setup() {
- check-reqs_pkg_setup
- rust_pkg_setup
-}
-
-src_unpack() {
- if [[ ${PV} == 9999* ]]; then
- # clone vaultwarden
- git-r3_src_unpack
-
- # clone vaultwarden.wiki
- EGIT_REPO_URI="https://github.com/dani-garcia/vaultwarden.wiki.git"
- EGIT_CHECKOUT_DIR="${WORKDIR}/${PN}.wiki"
- git-r3_src_unpack
-
- cargo_live_src_unpack
- else
- cargo_src_unpack
- fi
-}
-
-src_prepare() {
- default
- if use !web; then
- sed -i \
- -e 's|^# WEB_VAULT_ENABLED=true|WEB_VAULT_ENABLED=false|g;' \
- .env.template || die
- fi
-
- if use mysql || use postgres; then
- declare -a DB_UNIT
- use mysql && DB_UNIT+=(
- mariadb.service
- mysqld.service
- )
- use postgres && DB_UNIT+=(
- postgresql-{13..17}.service
- )
- cat <<-EOF > "${T}/${PN}-db.conf"
- [Unit]
- After=${DB_UNIT[@]}
- Wants=${DB_UNIT[@]}
- EOF
- fi
-
-}
-
-src_configure() {
- local myfeatures=(
- $(usev sqlite)
- $(usev mysql)
- $(usev postgres postgresql )
- )
- cargo_src_configure
-}
-
-src_compile() {
- # https://github.com/dani-garcia/vaultwarden/blob/main/build.rs
- [[ ${PV} != 9999* ]] && export VW_VERSION="${PV}"
- cargo_src_compile --offline
-}
-
-src_install() {
- dobin "$(cargo_target_dir)/${PN}"
- systemd_newunit "${FILESDIR}"/vaultwarden-1.33.2.service "${PN}".service
- if [[ -f "${T}/${PN}-db.conf" ]]; then
- local UNIT_DIR="$(systemd_get_systemunitdir)"
- insinto "${UNIT_DIR#"${EPREFIX}"}/${PN}".service.d
- doins "${T}/${PN}-db.conf"
- fi
- newinitd "${FILESDIR}"/vaultwarden-1.33.2.initd "${PN}"
- newconfd "${FILESDIR}"/vaultwarden-1.33.2.confd "${PN}"
- newtmpfiles "${FILESDIR}"/vaultwarden-tmpfiles-1.33.2.conf "${PN}".conf
- insinto /etc/logrotate.d
- newins "${FILESDIR}/"vaultwarden-1.33.2.logrotated "${PN}"
- insinto /etc/"${PN}"
- newins .env.template "${PN}".conf
- keepdir /var/lib/"${PN}"
- fowners "${PN}":"${PN}" /var/lib/"${PN}"
- fperms 750 /var/lib/"${PN}"
- keepdir /var/log/"${PN}"
- fowners "${PN}":"${PN}" /var/log/"${PN}"
- fperms 750 /var/log/"${PN}"
-
- readme.gentoo_create_doc
- einstalldocs
-}
-
-pkg_postinst() {
- tmpfiles_process "${PN}".conf
- readme.gentoo_print_elog
-}
diff --git a/app-admin/vaultwarden/vaultwarden-1.37.1.ebuild b/app-admin/vaultwarden/vaultwarden-1.37.1.ebuild
deleted file mode 100644
index 8673954fb680..000000000000
--- a/app-admin/vaultwarden/vaultwarden-1.37.1.ebuild
+++ /dev/null
@@ -1,151 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cargo check-reqs readme.gentoo-r1 systemd tmpfiles
-
-DESCRIPTION="Unofficial Bitwarden compatible password manager"
-HOMEPAGE="https://github.com/dani-garcia/vaultwarden"
-
-if [[ ${PV} == 9999* ]]; then
- inherit git-r3
- EGIT_REPO_URI="https://github.com/dani-garcia/vaultwarden.git"
-else
- SRC_URI="
- https://github.com/dani-garcia/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
- https://github.com/gentoo-crate-dist/${PN}/releases/download/1.37.0/${PN}-1.37.0-crates.tar.xz -> ${PN}-1.37.0-deps.tar.xz
-"
- KEYWORDS="~amd64 ~arm64"
-fi
-
-LICENSE="AGPL-3"
-# Dependent crate licenses
-LICENSE+=" 0BSD Apache-2.0 BSD ISC MIT MPL-2.0 Unicode-3.0"
-
-SLOT="0"
-IUSE="cli mysql postgres +sqlite +web"
-REQUIRED_USE="|| ( mysql postgres sqlite )"
-
-RDEPEND="
- acct-user/vaultwarden
- acct-group/vaultwarden
- dev-libs/openssl:=
- cli? ( app-admin/bitwarden-cli-bin )
- mysql? ( dev-db/mysql-connector-c:= )
- postgres? ( dev-db/postgresql:* )
- sqlite? ( dev-db/sqlite:3 )
- web? ( www-apps/vaultwarden-web )
-"
-
-DEPEND="${RDEPEND}"
-BDEPEND="virtual/pkgconfig"
-
-RUST_MIN_VER="1.95.0"
-QA_FLAGS_IGNORED="usr/bin/${PN}"
-QA_PRESTRIPPED="usr/bin/${PN}"
-
-PATCHES=(
- "${FILESDIR}"/vaultwarden-envfile-1.34.1.patch
-)
-
-CHECKREQS_MEMORY=3G
-CHECKREQS_DISK_BUILD=2G
-
-DOC_CONTENTS="\n
- Configuration file: /etc/${PN}/${PN}.conf\n
- Data directory: /var/lib/${PN}\n
- Log file: /var/log/${PN}/${PN}.log\n
- Default endpoint: http://127.0.0.1:8000\n
- Admin endpoint: http://127.0.0.1:8000/admin\n
- \n
- MySQL & PostgreSQL users must set DATABASE_URL in config\n
- \n
- Please find the documentation at https://github.com/dani-garcia/vaultwarden/wiki\n
-"
-
-pkg_setup() {
- check-reqs_pkg_setup
- rust_pkg_setup
-}
-
-src_unpack() {
- if [[ ${PV} == 9999* ]]; then
- git-r3_src_unpack
- cargo_live_src_unpack
- else
- cargo_src_unpack
- fi
-}
-
-src_prepare() {
- default
- if use !web; then
- sed -i \
- -e 's|^# WEB_VAULT_ENABLED=true|WEB_VAULT_ENABLED=false|g;' \
- .env.template || die
- fi
-
- if use mysql || use postgres; then
- declare -a DB_UNIT
- use mysql && DB_UNIT+=(
- mariadb.service
- mysqld.service
- )
- use postgres && DB_UNIT+=(
- postgresql-{14..19}.service
- )
- cat <<-EOF > "${T}/${PN}-db.conf"
- [Unit]
- After=${DB_UNIT[@]}
- Wants=${DB_UNIT[@]}
- EOF
- fi
-
-}
-
-src_configure() {
- local myfeatures=(
- $(usev sqlite sqlite_system)
- $(usev mysql)
- $(usev postgres postgresql )
- )
- cargo_src_configure
-}
-
-src_compile() {
- # https://github.com/dani-garcia/vaultwarden/blob/main/build.rs
- [[ ${PV} != 9999* ]] && export VW_VERSION="${PV}"
- cargo_src_compile
-}
-
-src_install() {
- dobin "$(cargo_target_dir)/${PN}"
- systemd_newunit "${FILESDIR}"/vaultwarden-1.33.2.service "${PN}".service
- if [[ -f "${T}/${PN}-db.conf" ]]; then
- local UNIT_DIR="$(systemd_get_systemunitdir)"
- insinto "${UNIT_DIR#"${EPREFIX}"}/${PN}".service.d
- doins "${T}/${PN}-db.conf"
- fi
- newinitd "${FILESDIR}"/vaultwarden-1.33.2.initd "${PN}"
- newconfd "${FILESDIR}"/vaultwarden-1.33.2.confd "${PN}"
- newtmpfiles "${FILESDIR}"/vaultwarden-tmpfiles-1.33.2.conf "${PN}".conf
- insinto /etc/logrotate.d
- newins "${FILESDIR}/"vaultwarden-1.33.2.logrotated "${PN}"
- insinto /etc/"${PN}"
- newins .env.template "${PN}".conf
- keepdir /var/lib/"${PN}"
- fowners "${PN}":"${PN}" /var/lib/"${PN}"
- fperms 750 /var/lib/"${PN}"
- keepdir /var/log/"${PN}"
- fowners "${PN}":"${PN}" /var/log/"${PN}"
- fperms 750 /var/log/"${PN}"
-
- readme.gentoo_create_doc
- einstalldocs
-}
-
-pkg_postinst() {
- tmpfiles_process "${PN}".conf
- readme.gentoo_print_elog
-}
diff --git a/app-admin/vaultwarden/vaultwarden-1.37.2.ebuild b/app-admin/vaultwarden/vaultwarden-1.37.2.ebuild
index e0d38b739f23..605d2fefde83 100644
--- a/app-admin/vaultwarden/vaultwarden-1.37.2.ebuild
+++ b/app-admin/vaultwarden/vaultwarden-1.37.2.ebuild
@@ -132,14 +132,16 @@ src_install() {
newtmpfiles "${FILESDIR}"/vaultwarden-tmpfiles-1.33.2.conf "${PN}".conf
insinto /etc/logrotate.d
newins "${FILESDIR}/"vaultwarden-1.33.2.logrotated "${PN}"
- insinto /etc/"${PN}"
- newins .env.template "${PN}".conf
keepdir /var/lib/"${PN}"
fowners "${PN}":"${PN}" /var/lib/"${PN}"
fperms 750 /var/lib/"${PN}"
keepdir /var/log/"${PN}"
fowners "${PN}":"${PN}" /var/log/"${PN}"
fperms 750 /var/log/"${PN}"
+ # Do last due to insopts modifications
+ insopts -m0640 -g "${PN}"
+ insinto /etc/"${PN}"
+ newins .env.template "${PN}".conf
readme.gentoo_create_doc
einstalldocs
diff --git a/app-admin/vaultwarden/vaultwarden-9999.ebuild b/app-admin/vaultwarden/vaultwarden-9999.ebuild
index e0d38b739f23..605d2fefde83 100644
--- a/app-admin/vaultwarden/vaultwarden-9999.ebuild
+++ b/app-admin/vaultwarden/vaultwarden-9999.ebuild
@@ -132,14 +132,16 @@ src_install() {
newtmpfiles "${FILESDIR}"/vaultwarden-tmpfiles-1.33.2.conf "${PN}".conf
insinto /etc/logrotate.d
newins "${FILESDIR}/"vaultwarden-1.33.2.logrotated "${PN}"
- insinto /etc/"${PN}"
- newins .env.template "${PN}".conf
keepdir /var/lib/"${PN}"
fowners "${PN}":"${PN}" /var/lib/"${PN}"
fperms 750 /var/lib/"${PN}"
keepdir /var/log/"${PN}"
fowners "${PN}":"${PN}" /var/log/"${PN}"
fperms 750 /var/log/"${PN}"
+ # Do last due to insopts modifications
+ insopts -m0640 -g "${PN}"
+ insinto /etc/"${PN}"
+ newins .env.template "${PN}".conf
readme.gentoo_create_doc
einstalldocs
diff --git a/dev-libs/cutlass/cutlass-4.6.1.ebuild b/dev-libs/cutlass/cutlass-4.6.1.ebuild
index 1bb9e6e2dcbd..06f73942c0d9 100644
--- a/dev-libs/cutlass/cutlass-4.6.1.ebuild
+++ b/dev-libs/cutlass/cutlass-4.6.1.ebuild
@@ -28,7 +28,7 @@ X86_CPU_FEATURES=(
)
CPU_FEATURES=( "${X86_CPU_FEATURES[@]/#/cpu_flags_x86_}" )
-IUSE="clang-cuda cublas cudnn doc dot examples +headers-only jumbo-build performance profiler test tools ${CPU_FEATURES[*]%:*}"
+IUSE="clang-cuda cublas cudnn examples +headers-only jumbo-build performance profiler test tools ${CPU_FEATURES[*]%:*}"
REQUIRED_USE="
headers-only? (
@@ -94,7 +94,7 @@ src_configure() {
-DCUTLASS_ENABLE_TESTS="$(usex test)"
-DCUTLASS_ENABLE_TOOLS="$(usex tools)"
-DCUTLASS_INSTALL_TESTS="no"
- -DCUTLASS_NVCC_ARCHS="${CUDAARCHS:-80;89;90}"
+ -DCUTLASS_NVCC_ARCHS="${CUDAARCHS:-80;89}"
-DCUTLASS_UNITY_BUILD_ENABLED="$(usex jumbo-build)"
-DCUTLASS_USE_SYSTEM_GOOGLETEST="yes"
-DIMPLICIT_CMAKE_CXX_STANDARD="yes"
@@ -121,12 +121,6 @@ src_configure() {
)
fi
- if use doc; then
- mycmakeargs+=(
- -DCUTLASS_ENABLE_DOXYGEN_DOT="$(usex dot)"
- )
- fi
-
if use test; then
mycmakeargs+=(
-DCUTLASS_TEST_LEVEL="0"
diff --git a/media-gfx/blender/Manifest b/media-gfx/blender/Manifest
index 0d1bcc03a665..e27c99368be8 100644
--- a/media-gfx/blender/Manifest
+++ b/media-gfx/blender/Manifest
@@ -1,7 +1,2 @@
-DIST blender-4.2.16.tar.xz 75352960 BLAKE2B 6be3acce0d8472a78c20faefd0af1b37a70a887a16fe1943a321fe9eb188155d072166d181ec3541bdb64072d1001d6ac38360e8ad7164232c4ea5994208b78a SHA512 11e07e3df21aba85263faa9e0a7fb5be7a0415749b951327f842c8e05c46fce94debf5dfb1f57007e4034d6d7abfec9ef4e94e5bb9c4c57641c52675e0401059
-DIST blender-4.4.3.tar.xz 85519376 BLAKE2B bb2f93d96b98e4104f1e49f3bd9be8992e37d2005665ad913ccd7e9097fba4823567d0aba3cd6487097d52043c5681fde4489c040e24ae4df6014337eb97f9f5 SHA512 0a500a7abee2e2dea7cdc925539c3f906271525ec88877e12920315552a057072c68806d6cdf7a6eb43b2b7d611e8697c5ad093b22f2402f96a11718538012e6
-DIST blender-4.5.5.tar.xz 85095244 BLAKE2B 5578a45300622f71bb7dd679dcaa85f2de0a3db2ddc9e21a6890ed96b83d14f8b617058e8fc648ae0e02b70e5706c05427f9d1cf44848995ca95b5fd074d616f SHA512 14f340e44ee0f2971a9367f35a150bec61d7c378d1a5d60060e16c2e60f8fdffe71d2252e679698aa0a7a6b77e9b353c67d7494e8ba9990f479b834bb6d9b1de
-DIST blender-5.0.0.tar.xz 88881428 BLAKE2B ca2b5bbbe860597099a310ed4bdb63fb8648d5745e16da59b9ada6fe72ba1d75b884357508ddc62e4b7b1cf7fdfcb028b11d9ded89a64153d511fed3caf78245 SHA512 5f4cf6fa2360ccfbd28c3a0abcf8a4aba7e4d03f7eb7df75bfcfbfb72896cc6628c54d17631e458513fc02ef7f5101a607548c0fcfbafd242d4a2d72864ccf3c
-DIST blender-test-data-4.4.0.tar.xz 386262908 BLAKE2B 4b7f16f5d19d9569ae19a8e9feeb134841801c89ea64a787c1caa6a4bddce700ebe2a9a15cb2053701c404743dc0749643a1b03fc45f523f792e3729de11f0e8 SHA512 babd235aeb5cf87764b48000dc7776b5e8121d60d930f4aa92ea27cf275608cfc6c3ed47e59d499c85c670dc1ee329e26882e76d8a9a2567b42d3de551a5a9a0
-DIST blender-test-data-4.5.0-1.tar.xz 408765680 BLAKE2B b09840a18a78f8972424a58ad6b36c9e30019862c8217211ef09b9f910eb1ca9facc2ad14fb9bbb49dcf7c0ed7e082e7dcfc57c08daad9bf18fed4bfb2588b86 SHA512 09fcbb76a673a1e0c53f35bf60a74f09b5123ea37c99f5f0d027043caad184a16e3eea407c81027229e4a3a5c1ad8e66b4432ed90a9c8980e466e8b4575fa34b
-DIST blender-test-data-5.0.0.tar.xz 424858204 BLAKE2B 93a35706481204fbfb310c7dad664bcbf95a9e9083a31ab4cf390c756baf7c6687bcd998644161a828c8d909db986512aba62f2ea8fd1d59649eefb45b719be2 SHA512 f03ea7ff5f59a71c08c3e4489ef46f2cbdf2a3680c531e670be1b2f3b323f5931986acf9b7df337e0d2b2762bc7a693b354d71dbc6759d72f95c5672406ef396
+DIST blender-5.2.1.tar.xz 93666248 BLAKE2B 0e73d09a6d355a19bfba2b8a2b08b0cdd5e42820553b6a8734cf9b35fbf5080ef63a266bb4b19263cb69f09789f7f539aca1352a6764f36f39ec77e357aa7c71 SHA512 02f78e719f3b2d30e02413d8e30f7684e3aa0c81c02f6a241a5cfbd6db6013e41116a6404f59fd1bb9c025a4aaf02e87e35de11b24acc93e211f907df5436f07
+DIST blender-test-data-5.2.0.tar.xz 484927524 BLAKE2B 4c6b8de4c5f13262e684b7e5ac6711ef24fd9753d9301e12ca047a58e30b86acc7990a0e0acf8a16c2586172fd18896a7241e49603f404324625b69fcc07bd5c SHA512 45e8dfe8a3a400b844f1ddaff094027d0e8d0649c48c811411ed76035bc9fa918deed18c0f3d4abedd46a3dad959ee833a894fc9b1a05bf6d85866f92618ce53
diff --git a/media-gfx/blender/blender-4.2.16.ebuild b/media-gfx/blender/blender-4.2.16.ebuild
deleted file mode 100644
index 034d794c89a6..000000000000
--- a/media-gfx/blender/blender-4.2.16.ebuild
+++ /dev/null
@@ -1,766 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-# NOTE must match media-libs/osl
-LLVM_COMPAT=( {18..18} )
-LLVM_OPTIONAL=1
-
-ROCM_SKIP_GLOBALS=1
-CMAKE_QA_COMPAT_SKIP=1
-
-inherit cuda rocm llvm-r2
-inherit eapi9-pipestatus edo check-reqs flag-o-matic pax-utils python-single-r1 toolchain-funcs virtualx
-inherit cmake xdg-utils
-
-DESCRIPTION="3D Creation/Animation/Publishing System"
-HOMEPAGE="https://www.blender.org"
-
-# NOTE BLENDER_VERSION
-# https://projects.blender.org/blender/blender/src/branch/main/source/blender/blenkernel/BKE_blender_version.h
-BLENDER_BRANCH="$(ver_cut 1-2)"
-
-if [[ "${PV}" == *9999* ]]; then
- EGIT_LFS="yes"
- inherit git-r3
- EGIT_REPO_URI="https://projects.blender.org/blender/blender.git"
- EGIT_SUBMODULES=( '*' '-lib/*' )
-
- if [[ "${PV}" == 9999* ]]; then
- EGIT_BRANCH="main"
- else
- EGIT_BRANCH="blender-v${BLENDER_BRANCH}-release"
- fi
-
- 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${BLENDER_BRANCH}-release.tar.gz
- # https://projects.blender.org/blender/blender-test-data/archive/v${PV}.tar.gz
- # )
- # "
- KEYWORDS="~amd64 ~arm ~arm64"
- RESTRICT="test" # the test archive returns LFS references.
-fi
-
-# assets is CC0-1.0
-LICENSE="GPL-3+ cycles? ( Apache-2.0 ) CC0-1.0"
-SLOT="${BLENDER_BRANCH}"
-
-# NOTE +openpgl breaks on very old amd64 hardware
-# potentially mirror cpu_flags_x86 + REQUIRED_USE
-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 openal +openexr +opengl +openmp +openpgl
- +opensubdiv +openvdb optix osl +pdf +potrace +pugixml pulseaudio
- renderdoc sdl +sndfile +tbb test +tiff +truetype valgrind vulkan wayland +webp X
-"
-
-if [[ "${PV}" == *9999* ]]; then
- IUSE+="experimental"
-fi
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}
- || ( opengl vulkan )
- 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
- jpeg2k
- )
-"
-
-# 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-cpp/gflags:=
- dev-cpp/glog:=
- 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-3:=
- virtual/glu
- virtual/libintl
- virtual/opengl[X?]
- virtual/zlib:=
- alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] )
- bullet? ( sci-physics/bullet:=[double-precision] )
- collada? ( >=media-libs/opencollada-1.6.68 )
- color-management? ( media-libs/opencolorio:= )
- cuda? ( <dev-util/nvidia-cuda-toolkit-13:= )
- embree? ( media-libs/embree:=[raymask] )
- ffmpeg? ( <media-video/ffmpeg-8:=[encode(+),lame(-),jpeg2k?,opus,theora,vorbis,vpx,x264,xvid] )
- fftw? ( sci-libs/fftw:3.0=[threads] )
- 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:= )
- openexr? (
- >=dev-libs/imath-3.1.7:=
- >=media-libs/openexr-3.2.1:0=
- )
- openpgl? ( media-libs/openpgl:= )
- opensubdiv? ( >=media-libs/opensubdiv-3.6.0-r2:=[opengl,cuda?,openmp?,tbb?] )
- openvdb? (
- >=media-gfx/openvdb-11.0.0:=[nanovdb?]
- dev-libs/c-blosc:=
- )
- optix? ( <dev-libs/optix-9:= )
- osl? (
- <media-libs/osl-1.14:=[${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
- )
- webp? ( media-libs/libwebp:= )
- vulkan? (
- media-libs/shaderc
- dev-util/spirv-tools
- dev-util/glslang
- media-libs/vulkan-loader
- )
- truetype? (
- media-libs/harfbuzz
- )
- renderdoc? (
- media-gfx/renderdoc
- )
- X? (
- x11-libs/libX11
- x11-libs/libXfixes
- x11-libs/libXi
- x11-libs/libXxf86vm
- )
-"
-
-DEPEND="${RDEPEND}
- dev-cpp/eigen:=
-"
-
-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
- )
- vulkan? (
- dev-util/spirv-headers
- dev-util/vulkan-headers
- )
- 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"
- "${FILESDIR}/${PN}-4.3.2-openvdb-12.patch"
- "${FILESDIR}/${PN}-4.3.2-optix-8.1.0.patch"
- "${FILESDIR}/${PN}-4.3.2-system-glog.patch"
-# "${FILESDIR}/${PN}-4.4.0-optix-compile-flags.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() {
- if [[ -n "${BV}" && -n "${BVC}" ]]; then
- return
- fi
-
- local status
- # Get blender version from blender itself.
- # mirrors build_files/cmake/macros.cmake function(get_blender_version)
- # NOTE maps x0y to x.y
- # TODO this can potentially break for x > 9 and y > 9
- BV="$(grep "define BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION, (PIPESTATUS: ${status})"
- BV="$(printf "%d.%d" "${BV:0: -2}" "${BV: -2}")"
-
- if [[ "${PV}" != 9999* && "${BLENDER_BRANCH}" != "${BV}" ]]; then
- eerror "ebuild (${BLENDER_BRANCH}) and code (${BV}) version mismatch"
- die "blender_get_version"
- fi
-
- BVC="$(grep "define BLENDER_VERSION_CYCLE " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION_CYCLE, (PIPESTATUS: ${status})"
-}
-
-pkg_pretend() {
- blender_check_requirements
-}
-
-pkg_setup() {
- blender_check_requirements
- python-single-r1_pkg_setup
-
- if use osl; then
- llvm-r2_pkg_setup
- fi
-}
-
-src_unpack() {
- if [[ "${PV}" == *9999* ]]; then
- if ! use test; then
- EGIT_SUBMODULES+=( '-tests/*' )
- fi
- git-r3_src_unpack
-
- # NOTE Add-ons bundled with Blender releases up to Blender 4.1. Blender 4.2 LTS and later include only a handful
- # of core add-ons, while others are part of the Extensions Platform at https://extensions.blender.org
- ver_test "${BLENDER_BRANCH}" -ge "4.2" && return
-
- 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
-
- # 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 "/CMAKE_INSTALL_PREFIX_WITH_CONFIG/{s|\${CMAKE_INSTALL_PREFIX}|${T}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i CMakeLists.txt \
- || die CMAKE_INSTALL_PREFIX_WITH_CONFIG
-
- # WITH_SYSTEM_GLOG=yes
- cmake_run_in extern cmake_comment_add_subdirectory glog
-
- 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" \
- || die
-
- if use hip; then
- # fix hardcoded path
- sed \
- -e "s#opt/rocm/hip/bin#$(hipconfig -p)/bin#g" \
- -i extern/hipew/src/hipew.c \
- || die
- fi
-
- 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 "/string(REPLACE.*TEST_INSTALL_DIR/{s|\${CMAKE_INSTALL_PREFIX}|${T}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i "build_files/cmake/testing.cmake" \
- || die "REPLACE.*TEST_INSTALL_DIR"
-
- sed -e '1i #include <cstdint>' -i extern/gtest/src/gtest-death-test.cc || die
- else
- cmake_comment_add_subdirectory tests
- fi
-
- rm -rf extern/gflags || die
-
- if use vulkan; then
- # TODO why?
- 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=(
- -DCMAKE_POLICY_DEFAULT_CMP0146="OLD" # DESTINATION Normalization
- -DCMAKE_POLICY_DEFAULT_CMP0177="OLD" # Boost
-
- # we build a host-specific binary
- -DWITH_CPU_CHECK="no"
-
- -DWITH_STRICT_BUILD_OPTIONS="yes"
- -DWITH_LIBS_PRECOMPILED="no"
- -DBUILD_SHARED_LIBS="no" # this over-ridden by cmake.eclass
- -DWITH_STATIC_LIBS=OFF
-
- # Build Options:
- -DWITH_ALEMBIC="$(usex alembic)"
- -DWITH_BOOST="yes"
- -DWITH_BULLET="$(usex bullet)"
- -DWITH_CYCLES="$(usex cycles)"
- -DWITH_DOC_MANPAGE="$(usex man)"
- -DWITH_FFTW3="$(usex fftw)"
- -DWITH_GMP="$(usex gmp)"
- -DWITH_GTESTS="$(usex test)"
- -DWITH_HARFBUZZ="$(usex truetype)"
- -DWITH_HARU="$(usex pdf)"
- -DWITH_HEADLESS="$(usex !X "$(usex !wayland)")"
- -DWITH_INPUT_NDOF="$(usex ndof)"
- -DWITH_INTERNATIONAL="$(usex nls)"
- -DWITH_MATERIALX="no" # TODO: Package MaterialX
- -DWITH_NANOVDB="$(usex nanovdb)"
- -DWITH_OPENCOLLADA="$(usex collada)"
- -DWITH_OPENCOLORIO="$(usex color-management)"
- -DWITH_OPENGL_BACKEND="$(usex opengl)"
- -DWITH_OPENIMAGEDENOISE="$(usex oidn)"
- -DWITH_OPENSUBDIV="$(usex opensubdiv)"
- -DWITH_OPENVDB="$(usex openvdb)"
- -DWITH_OPENVDB_BLOSC="$(usex openvdb)"
- -DWITH_POTRACE="$(usex potrace)"
- -DWITH_PUGIXML="$(usex pugixml)"
- # -DWITH_QUADRIFLOW=ON
- -DWITH_RENDERDOC="$(usex renderdoc)"
- -DWITH_TBB="$(usex tbb)"
- -DWITH_UNITY_BUILD="no"
- -DWITH_USD="no" # TODO: Package USD
- -DWITH_VULKAN_BACKEND="$(usex vulkan)" # experimental
- -DWITH_XR_OPENXR="no"
-
- -DWITH_SYSTEM_BULLET="yes"
- -DWITH_SYSTEM_EIGEN3="yes"
- -DWITH_SYSTEM_FREETYPE="yes"
- -DWITH_SYSTEM_GFLAGS="yes"
- -DWITH_SYSTEM_GLOG="yes"
- -DWITH_SYSTEM_LZO="yes"
-
- # Compiler Options:
- # -DWITH_BUILDINFO="yes"
- -DWITH_OPENMP="$(usex openmp)"
-
- # System Options:
- -DWITH_INSTALL_PORTABLE="no"
- -DWITH_MEM_JEMALLOC="$(usex jemalloc)"
- -DWITH_MEM_VALGRIND="$(usex valgrind)"
-
- # GHOST Options:
- -DWITH_GHOST_WAYLAND="$(usex wayland)"
- -DWITH_GHOST_WAYLAND_DYNLOAD="no"
- -DWITH_GHOST_X11="$(usex X)"
-
- # Image Formats:
- -DWITH_IMAGE_OPENEXR="$(usex openexr)"
- -DWITH_IMAGE_OPENJPEG="$(usex jpeg2k)"
- -DWITH_IMAGE_WEBP="$(usex webp)" # unlisted
-
- # Audio:
- -DWITH_CODEC_FFMPEG="$(usex ffmpeg)"
- -DWITH_CODEC_SNDFILE="$(usex sndfile)"
- -DWITH_JACK="$(usex jack)"
- -DWITH_OPENAL="$(usex openal)"
- -DWITH_PULSEAUDIO="$(usex pulseaudio)"
- -DWITH_SDL="$(usex sdl)"
-
- # Python:
- -DWITH_PYTHON_INSTALL="no"
- -DWITH_PYTHON_INSTALL_NUMPY="no"
- -DWITH_PYTHON_INSTALL_ZSTANDARD="no"
- # -DWITH_PYTHON_MODULE="no"
- -DWITH_PYTHON_SAFETY="OFF" # dev option
- -DWITH_PYTHON_SECURITY="yes"
- -DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
- -DPYTHON_LIBRARY="$(python_get_library_path)"
- -DPYTHON_VERSION="${EPYTHON/python/}"
- -DWITH_DRACO="yes" # TODO: Package Draco # NOTE use bundled for now
-
- # Modifiers:
- -DWITH_MOD_FLUID="$(usex fluid)"
- -DWITH_MOD_OCEANSIM="$(usex fftw)"
-
- # Rendering:
- -DWITH_HYDRA="no" # TODO: Package Hydra
-
- # Rendering (Cycles):
- -DWITH_CYCLES_OSL="$(usex osl)"
- -DWITH_CYCLES_EMBREE="$(usex embree)"
- -DWITH_CYCLES_PATH_GUIDING="$(usex openpgl)"
-
- -DWITH_CYCLES_DEVICE_OPTIX="$(usex optix)"
- -DWITH_CYCLES_DEVICE_CUDA="$(usex cuda)"
- -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda "$(usex cycles-bin-kernels)")"
-
- -DWITH_CYCLES_DEVICE_HIP="$(usex hip)"
- -DWITH_CYCLES_HIP_BINARIES="$(usex hip "$(usex cycles-bin-kernels)")"
- -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra
-
- # -DWITH_CYCLES_STANDALONE="OFF"
- # -DWITH_CYCLES_STANDALONE_GUI="OFF"
-
- -DWITH_BLENDER_THUMBNAILER="yes"
- )
-
- 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* && "${BVC}" == "alpha" ]]; then
- mycmakeargs+=(
- # -DWITH_BUILDINFO="no"
- -DWITH_EXPERIMENTAL_FEATURES="$(usex experimental)"
- )
- else
- mycmakeargs+=(
- -DWITH_EXPERIMENTAL_FEATURES="no"
- )
- fi
-
- if use cuda; then
- # Ease compiling with required gcc similar to cuda_sanitize but for cmake
- if use cycles-bin-kernels; then
- local -x CUDAHOSTCXX="$(cuda_gccdir)"
- local -x CUDAHOSTLD="$(tc-getCXX)"
-
- if [[ -n "${CUDAARCHS}" ]]; then
- mycmakeargs+=(
- -DCYCLES_CUDA_BINARIES_ARCH="$(echo "${CUDAARCHS}" | sed -e 's/^/sm_/g' -e 's/;/;sm_/g')"
- )
- fi
- fi
- fi
-
- if use hip; then
- mycmakeargs+=(
- -DHIP_ROOT_DIR="$(hipconfig -p)"
-
- -DHIP_HIPCC_FLAGS="-fcf-protection=none"
-
- -DCMAKE_HIP_LINK_EXECUTABLE="$(get_llvm_prefix)/bin/clang++"
-
- -DCYCLES_HIP_BINARIES_ARCH="$(get_amdgpu_flags)"
- )
- fi
-
- if use optix; then
- mycmakeargs+=(
- -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${ESYSROOT}/opt/optix"
- -DOPTIX_ROOT_DIR="${ESYSROOT}/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-cxxflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
-
- if tc-is-gcc; then
- # We disable these to respect the user's choice of linker.
- mycmakeargs+=(
- -DWITH_LINKER_GOLD="no"
- )
- 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+=(
- -DCMAKE_INSTALL_PREFIX_WITH_CONFIG="${T}/usr"
- -DCYCLES_TEST_DEVICES="$(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 need 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, or we won't 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)
- local -x BLENDER_SYSTEM_RESOURCES="${T%/}/usr/share/blender/${BV}"
-
- # Sanity check that the script and datafile path is valid.
- # If they are not valid, blender will fallback to the default path which is not what we want.
- [[ -d "${BLENDER_SYSTEM_RESOURCES}" ]] || die "The custom resources path is invalid, fix the ebuild!"
-
- # TODO only picks first card
- addwrite "/dev/dri/card0"
- addwrite "/dev/dri/renderD128"
- addwrite "/dev/udmabuf"
-
- if use cuda; then
- cuda_add_sandbox -w
- addwrite "/proc/self/task"
- addpredict "/dev/char/"
- fi
-
- local -x CMAKE_SKIP_TESTS=(
- draw
- gpu
- script_load_modules
- script_bundled_modules
- script_pyapi_bpy_driver_secure_eval
- blendfile_versioning_5_over_8
- blendfile_versioning_7_over_8
- cycles_motion_blur_cpu
- cycles_volume_cpu
- cycles_motion_blur_cuda
- cycles_volume_cuda
- eevee_next_grease_pencil
- eevee_next_light
- eevee_next_motion_blur
- eevee_next_pointcloud
- eevee_next_render_layer
- eevee_next_volume
- workbench_motion_blur
- workbench_volume
- compositor_multiple_node_setups_realtime
- compositor_distort_realtime
- )
-
- if use wayland; then
- xdg_environment_reset
-
- local compositor exit_code
- local logfile=${T}/weston.log
- weston --xwayland --backend=headless --socket=wayland-5 --idle-time=0 2>"${logfile}" &
- compositor=$!
- export WAYLAND_DISPLAY=wayland-5
- sleep 1 # wait for xwayland to be up
- export DISPLAY=$(grep "xserver listening on display" "${logfile}" | cut -d ' ' -f 5)
-
- cmake_src_test
-
- exit_code=$?
- kill "${compositor}"
-
- elif use X; then
- xdg_environment_reset
- virtx cmake_src_test
- else
- cmake_src_test
- fi
-
- # 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
-
- # X-KDE-RunOnDiscreteGpu is obsolete, so trim it
- sed \
- -e "/X-KDE-RunOnDiscreteGpu.*/d" \
- -i "${ED}/usr/share/applications/blender-${BV}.desktop" || die
-
- 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)
- local -x BLENDER_SYSTEM_RESOURCES="${ED}/usr/share/blender/${BV}"
-
- # Workaround for binary drivers. # TODO
- addpredict /dev/ati
- addpredict /dev/dri
- addpredict /dev/nvidiactl
-
- einfo "Generating Blender C/C++ API docs ..."
- cd "${CMAKE_USE_DIR}/doc/doxygen" || die
- edob doxygen -u Doxyfile
- edob doxygen
-
- docinto "html/API/blender"
- dodoc -r "${CMAKE_USE_DIR}/doc/doxygen/html/"
-
- einfo "Generating (BPY) Blender Python API docs ..."
- cd "${CMAKE_USE_DIR}" || die
- edob "${BUILD_DIR}"/bin/blender --background --python "doc/python_api/sphinx_doc_gen.py" -noaudio
-
- cd "${CMAKE_USE_DIR}/doc/python_api" || die
- sphinx-build sphinx-in BPY_API || die
-
- docinto "html/API/python"
- dodoc -r "${CMAKE_USE_DIR}/doc/python_api/BPY_API/"
- 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 "blender-thumbnailer version rename failed"
- mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die "blender version rename failed"
-}
-
-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 && ! has_version "media-libs/mesa[${LLVM_USEDEP}]"; 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
-
- 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
-
- if [[ -z "${REPLACED_BY_VERSION}" ]]; then
- ewarn
- ewarn "You may want to remove the following directories"
- ewarn "- ~/.config/${PN}/${BV}/cache/"
- ewarn "- ~/.cache/cycles/"
- ewarn "It may contain extra render kernels not tracked by portage"
- ewarn
- fi
-}
diff --git a/media-gfx/blender/blender-4.4.3.ebuild b/media-gfx/blender/blender-4.4.3.ebuild
deleted file mode 100644
index 77d990bd8d27..000000000000
--- a/media-gfx/blender/blender-4.4.3.ebuild
+++ /dev/null
@@ -1,895 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# shellcheck disable=SC2207
-
-# TODO
-# - Package Hydra
-# https://github.com/Ray-Tracing-Systems/HydraCore
-# https://github.com/Ray-Tracing-Systems/HydraAPI
-# - Package USD
-# https://github.com/PixarAnimationStudios/OpenUSD
-# - Package MaterialX
-# https://github.com/AcademySoftwareFoundation/MaterialX
-# - Package Draco
-# https://github.com/google/draco
-# - Package Audaspace
-# https://github.com/neXyon/audaspace
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-# NOTE must match media-libs/osl
-LLVM_COMPAT=( {18..19} )
-LLVM_OPTIONAL=1
-
-ROCM_SKIP_GLOBALS=1
-
-inherit cuda rocm llvm-r1
-inherit eapi9-pipestatus check-reqs flag-o-matic multiprocessing pax-utils python-single-r1 toolchain-funcs virtualx
-inherit cmake xdg-utils
-
-DESCRIPTION="3D Creation/Animation/Publishing System"
-HOMEPAGE="https://www.blender.org"
-
-# NOTE BLENDER_VERSION
-# https://projects.blender.org/blender/blender/src/branch/main/source/blender/blenkernel/BKE_blender_version.h
-BLENDER_BRANCH="$(ver_cut 1-2)"
-
-if [[ "${PV}" == *9999* ]]; then
- EGIT_LFS="yes"
- inherit git-r3
- EGIT_REPO_URI="https://projects.blender.org/blender/blender.git"
- EGIT_SUBMODULES=( '*' '-lib/*' )
-
- if [[ "${PV}" == 9999* ]]; then
- EGIT_BRANCH="main"
- else
- EGIT_BRANCH="blender-v${BLENDER_BRANCH}-release"
- fi
-
-else
- SRC_URI="
- https://download.blender.org/source/${P}.tar.xz
- test? (
- https://download.blender.org/source/blender-test-data-${BLENDER_BRANCH}.0.tar.xz
- )
- "
- KEYWORDS="amd64 ~arm ~arm64"
-fi
-
-# assets is CC0-1.0
-LICENSE="GPL-3+ cycles? ( Apache-2.0 ) CC0-1.0"
-SLOT="${BLENDER_BRANCH}"
-
-# NOTE +openpgl breaks on very old amd64 hardware
-# potentially mirror cpu_flags_x86 + REQUIRED_USE
-IUSE="
- alembic +bullet collada +color-management cuda +cycles +cycles-bin-kernels
- debug doc +embree +ffmpeg +fftw +fluid +gmp gnome hip hiprt jack
- jemalloc jpeg2k man +nanovdb ndof nls +oidn openal +openexr +opengl +openmp +openpgl
- +opensubdiv +openvdb optix osl pipewire +pdf +potrace +pugixml pulseaudio
- renderdoc sdl +sndfile +tbb test +tiff +truetype valgrind vulkan wayland +webp X
-"
-
-if [[ "${PV}" == *9999* ]]; then
- IUSE+="experimental"
-fi
-
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}
- || ( opengl vulkan )
- alembic? ( openexr )
- cuda? ( cycles )
- cycles? ( openexr tiff tbb )
- fluid? ( tbb )
- gnome? ( wayland )
- hip? ( cycles )
- hiprt? ( hip )
- nanovdb? ( openvdb )
- openvdb? ( tbb openexr )
- optix? ( cuda )
- osl? ( cycles pugixml )
- test? (
- color-management
- jpeg2k
- )
-"
-
-# 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-cpp/gflags:=
- dev-cpp/glog:=
- 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:=
- virtual/zlib:=
- virtual/glu
- virtual/libintl
- virtual/opengl[X?]
- alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] )
- bullet? ( sci-physics/bullet:=[double-precision] )
- 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-8:=[encode(+),lame(-),jpeg2k?,opus,theora,vorbis,vpx,x264,xvid] )
- fftw? ( sci-libs/fftw:3.0=[threads] )
- gmp? ( dev-libs/gmp[cxx] )
- gnome? ( gui-libs/libdecor )
- hip? (
- >=dev-util/hip-5.7:= <dev-util/hip-7:=
- hiprt? (
- dev-libs/hiprt:2.5=
- )
- )
- 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 )
- openexr? (
- >=dev-libs/imath-3.1.7:=
- >=media-libs/openexr-3.2.1:0=
- )
- openpgl? ( media-libs/openpgl:= )
- opensubdiv? ( >=media-libs/opensubdiv-3.6.0-r2[opengl,cuda?,openmp?,tbb?] )
- openvdb? (
- >=media-gfx/openvdb-11.0.0:=[nanovdb?]
- dev-libs/c-blosc:=
- )
- optix? ( <dev-libs/optix-9:= )
- 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
- )
- truetype? (
- media-libs/harfbuzz
- )
- renderdoc? (
- media-gfx/renderdoc
- )
- X? (
- x11-libs/libX11
- x11-libs/libXi
- x11-libs/libXxf86vm
- )
-"
-
-DEPEND="${RDEPEND}
- dev-cpp/eigen:=
-"
-
-if [[ "${PV}" == *9999* ]]; then
-DEPEND+="
- test? (
- experimental? (
- wayland? (
- dev-libs/weston
- )
- )
- )
-"
-fi
-
-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
- )
- vulkan? (
- dev-util/spirv-headers
- dev-util/vulkan-headers
- )
- 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.1.1-FindLLVM.patch"
- "${FILESDIR}/${PN}-4.1.1-numpy.patch"
- "${FILESDIR}/${PN}-4.3.2-system-glog.patch"
- "${FILESDIR}/${PN}-4.4.0-optix-compile-flags.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() {
- if [[ -n "${BV}" && -n "${BVC}" ]]; then
- return
- fi
-
- local status
- # Get blender version from blender itself.
- # mirrors build_files/cmake/macros.cmake function(get_blender_version)
- # NOTE maps x0y to x.y
- # TODO this can potentially break for x > 9 and y > 9
- BV="$(grep "define BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION, (PIPESTATUS: ${status})"
- BV="$(printf "%d.%d" "${BV:0: -2}" "${BV: -2}")"
-
- if [[ "${PV}" != 9999* && "${BLENDER_BRANCH}" != "${BV}" ]]; then
- eerror "ebuild (${BLENDER_BRANCH}) and code (${BV}) version mismatch"
- die "blender_get_version"
- fi
-
- BVC="$(grep "define BLENDER_VERSION_CYCLE " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION_CYCLE, (PIPESTATUS: ${status})"
-}
-
-pkg_pretend() {
- blender_check_requirements
-}
-
-pkg_setup() {
- blender_check_requirements
- python-single-r1_pkg_setup
-
- if use osl; then
- llvm-r1_pkg_setup
- fi
-}
-
-src_unpack() {
- if [[ "${PV}" == *9999* ]]; then
- if ! use test; then
- EGIT_SUBMODULES+=( '-tests/*' )
- fi
- git-r3_src_unpack
- else
- default
-
- # TODO
- if use test && [[ ${PV} != ${SLOT}.0 ]] ; then
- mv "blender-${BLENDER_BRANCH}.0/tests/"* "${S}/tests" || die
- fi
- fi
-}
-
-src_prepare() {
- use cuda && cuda_src_prepare
-
- cmake_src_prepare
-
- blender_get_version
-
- # 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 "/CMAKE_INSTALL_PREFIX_WITH_CONFIG/{s|\${CMAKE_INSTALL_PREFIX}|${T}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i CMakeLists.txt \
- || die CMAKE_INSTALL_PREFIX_WITH_CONFIG
-
- # WITH_SYSTEM_GLOG=yes
- cmake_run_in extern cmake_comment_add_subdirectory glog
-
- 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" \
- || die
-
- sed \
- -e "s#\(set(cycles_kernel_runtime_lib_target_path \)\${cycles_kernel_runtime_lib_target_path}\(/lib)\)#\1\${CYCLES_INSTALL_PATH}\2#" \
- -i intern/cycles/kernel/CMakeLists.txt \
- || die
-
- if use hip; then
- # fix hardcoded path
- sed \
- -e "s#opt/rocm/hip/bin#$(hipconfig -p)/bin#g" \
- -i extern/hipew/src/hipew.c \
- || die
- fi
-
- 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 "/string(REPLACE.*TEST_INSTALL_DIR/{s|\${CMAKE_INSTALL_PREFIX}|${T}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i "build_files/cmake/testing.cmake" \
- || die "REPLACE.*TEST_INSTALL_DIR"
-
- # assertEquals was deprecated in Python-3.2 use assertEqual instead
- sed \
- -e 's/assertEquals/assertEqual/g' \
- -i tests/python/bl_animation_action.py \
- || die
-
- sed -e '1i #include <cstdint>' -i extern/gtest/src/gtest-death-test.cc || die
- else
- cmake_comment_add_subdirectory tests
- fi
-
- rm -rf extern/gflags || die
-
- # Use slotted libhiprt64
- sed \
- -e "s|\"libhiprt64.so\"|\"/usr/lib/hiprt/2.5/$(get_libdir)/libhiprt64.so\"|" \
- -i extern/hipew/src/hiprtew.cc || die
-}
-
-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=(
- # we build a host-specific binary
- -DWITH_CPU_CHECK="no"
-
- -DWITH_STRICT_BUILD_OPTIONS="yes"
- -DWITH_LIBS_PRECOMPILED="no"
- -DBUILD_SHARED_LIBS="no" # quadriflow only?
- -DWITH_STATIC_LIBS=OFF
-
- # Build Options:
- -DWITH_ALEMBIC="$(usex alembic)"
- -DWITH_BOOST="yes"
- -DWITH_BULLET="$(usex bullet)"
- -DWITH_CYCLES="$(usex cycles)"
- -DWITH_DOC_MANPAGE="$(usex man)"
- -DWITH_FFTW3="$(usex fftw)"
- -DWITH_GMP="$(usex gmp)"
- -DWITH_GTESTS="$(usex test)"
- -DWITH_HARFBUZZ="$(usex truetype)"
- -DWITH_HARU="$(usex pdf)"
- -DWITH_HEADLESS="$(usex !X "$(usex !wayland)")"
- -DWITH_INPUT_NDOF="$(usex ndof)"
- -DWITH_INTERNATIONAL="$(usex nls)"
- -DWITH_MATERIALX="no" # TODO: Package MaterialX
- -DWITH_NANOVDB="$(usex nanovdb)"
- -DWITH_OPENCOLLADA="$(usex collada)"
- -DWITH_OPENCOLORIO="$(usex color-management)"
- -DWITH_OPENGL_BACKEND="$(usex opengl)"
- -DWITH_OPENIMAGEDENOISE="$(usex oidn)"
- -DWITH_OPENSUBDIV="$(usex opensubdiv)"
- -DWITH_OPENVDB="$(usex openvdb)"
- -DWITH_OPENVDB_BLOSC="$(usex openvdb)"
- -DWITH_POTRACE="$(usex potrace)"
- -DWITH_PUGIXML="$(usex pugixml)"
- # -DWITH_QUADRIFLOW=ON
- -DWITH_RENDERDOC="$(usex renderdoc)"
- -DWITH_TBB="$(usex tbb)"
- -DWITH_UNITY_BUILD="no"
- -DWITH_USD="no" # TODO: Package USD
- -DWITH_VULKAN_BACKEND="$(usex vulkan)" # experimental
- -DWITH_XR_OPENXR="no"
-
- -DWITH_SYSTEM_BULLET="yes"
- -DWITH_SYSTEM_EIGEN3="yes"
- -DWITH_SYSTEM_FREETYPE="yes"
- -DWITH_SYSTEM_GFLAGS="yes"
- -DWITH_SYSTEM_GLOG="yes"
- -DWITH_SYSTEM_LZO="yes"
-
- # Compiler Options:
- # -DWITH_BUILDINFO="yes"
- -DWITH_OPENMP="$(usex openmp)"
-
- # System Options:
- -DWITH_INSTALL_PORTABLE="no"
- -DWITH_MEM_JEMALLOC="$(usex jemalloc)"
- -DWITH_MEM_VALGRIND="$(usex valgrind)"
-
- # GHOST Options:
- -DWITH_GHOST_WAYLAND="$(usex wayland)"
- # -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}"
- -DWITH_GHOST_WAYLAND_DYNLOAD="no"
- -DWITH_GHOST_X11="$(usex X)"
- # -DWITH_GHOST_XDND=ON
- # -DWITH_X11_XF86VMODE=ON
- # -DWITH_X11_XFIXES=ON
- # -DWITH_X11_XINPUT=ON
- # -DWITH_GHOST_WAYLAND_DYNLOAD # visible wayland?
- # -DWITH_GHOST_WAYLAND_LIBDECOR # visible wayland?
-
- # Image Formats:
- # -DWITH_IMAGE_CINEON=ON
- -DWITH_IMAGE_OPENEXR="$(usex openexr)"
- -DWITH_IMAGE_OPENJPEG="$(usex jpeg2k)"
- -DWITH_IMAGE_WEBP="$(usex webp)" # unlisted
-
- # Audio:
- # -DWITH_AUDASPACE=OFF
- # -DWITH_SYSTEM_AUDASPACE=OFF
- -DWITH_CODEC_FFMPEG="$(usex ffmpeg)"
- -DWITH_CODEC_SNDFILE="$(usex sndfile)"
- # -DWITH_COREAUDIO=OFF
- -DWITH_JACK="$(usex jack)"
- # -DWITH_JACK_DYNLOAD=
- -DWITH_OPENAL="$(usex openal)"
- -DWITH_PIPEWIRE="$(usex pipewire)"
- # -DWITH_PIPEWIRE_DYNLOAD=
- -DWITH_PULSEAUDIO="$(usex pulseaudio)"
- # -DWITH_PULSEAUDIO_DYNLOAD=
- -DWITH_SDL="$(usex sdl)"
- # -DWITH_WASAPI=OFF
-
- # Python:
- # -DWITH_PYTHON=ON
- -DWITH_PYTHON_INSTALL="no"
- -DWITH_PYTHON_INSTALL_NUMPY="no"
- -DWITH_PYTHON_INSTALL_ZSTANDARD="no"
- # -DWITH_PYTHON_MODULE="no"
- -DWITH_PYTHON_SAFETY="OFF"
- -DWITH_PYTHON_SECURITY="yes"
- -DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
- -DPYTHON_LIBRARY="$(python_get_library_path)"
- -DPYTHON_VERSION="${EPYTHON/python/}"
- -DWITH_DRACO="yes" # TODO: Package Draco # NOTE use bundled for now
-
- # Modifiers:
- -DWITH_MOD_FLUID="$(usex fluid)"
- # -DWITH_MOD_REMESH=ON
- -DWITH_MOD_OCEANSIM="$(usex fftw)"
-
- # Rendering:
- -DWITH_HYDRA="no" # TODO: Package Hydra
-
- # Rendering (Cycles):
- -DWITH_CYCLES_OSL="$(usex osl)"
- -DWITH_CYCLES_EMBREE="$(usex embree)"
- -DWITH_CYCLES_PATH_GUIDING="$(usex openpgl)"
-
- -DWITH_CYCLES_DEVICE_OPTIX="$(usex optix)"
- -DWITH_CYCLES_DEVICE_CUDA="$(usex cuda)"
- -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda "$(usex cycles-bin-kernels)")"
-
- -DWITH_CYCLES_DEVICE_HIP="$(usex hip)"
- -DWITH_CYCLES_HIP_BINARIES="$(usex hip "$(usex cycles-bin-kernels)")"
- -DWITH_CYCLES_DEVICE_HIPRT="$(usex hip "$(usex hiprt)")"
-
- -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra
-
- # -DWITH_CYCLES_STANDALONE=OFF
- # -DWITH_CYCLES_STANDALONE_GUI=OFF
-
- -DWITH_BLENDER_THUMBNAILER="yes"
- )
-
- 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* && "${BVC}" == "alpha" ]]; then
- mycmakeargs+=(
- # -DWITH_BUILDINFO="no"
- -DWITH_EXPERIMENTAL_FEATURES="$(usex experimental)"
- )
- else
- mycmakeargs+=(
- -DWITH_EXPERIMENTAL_FEATURES="no"
- )
- fi
-
- if use cuda; then
- # Ease compiling with required gcc similar to cuda_sanitize but for cmake
- if use cycles-bin-kernels; then
- local -x CUDAHOSTCXX="$(cuda_gccdir)"
- local -x CUDAHOSTLD="$(tc-getCXX)"
-
- if [[ -n "${CUDAARCHS}" ]]; then
- mycmakeargs+=(
- -DCYCLES_CUDA_BINARIES_ARCH="$(echo "${CUDAARCHS}" | sed -e 's/^/sm_/g' -e 's/;/;sm_/g')"
- )
- fi
- fi
- fi
-
- if use hip; then
- mycmakeargs+=(
- -DHIP_ROOT_DIR="$(hipconfig -p)"
-
- -DHIP_HIPCC_FLAGS="-fcf-protection=none"
-
- -DCMAKE_HIP_LINK_EXECUTABLE="$(get_llvm_prefix)/bin/clang++"
-
- -DCYCLES_HIP_BINARIES_ARCH="$(get_amdgpu_flags)"
- )
-
- if use hiprt; then
- mycmakeargs+=(
- -DHIPRT_ROOT_DIR="${ESYSROOT}/usr/lib/hiprt/2.5"
- -DHIPRT_COMPILER_PARALLEL_JOBS="$(makeopts_jobs)"
- )
- fi
- fi
-
- if use optix; then
- mycmakeargs+=(
- -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${ESYSROOT}/opt/optix"
- -DOPTIX_ROOT_DIR="${ESYSROOT}/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-cxxflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
-
- if tc-is-gcc; then
- # We disable these to respect the user's choice of linker.
- mycmakeargs+=(
- -DWITH_LINKER_GOLD="no"
- )
- 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" )
- use hiprt && CYCLES_TEST_DEVICES+=( "HIP-RT" )
- fi
- mycmakeargs+=(
- -DCMAKE_INSTALL_PREFIX_WITH_CONFIG="${T}/usr"
- -DCYCLES_TEST_DEVICES="$(local IFS=";"; echo "${CYCLES_TEST_DEVICES[*]}")"
- )
-
- # NOTE in lieu of a FEATURE/build_options
- if [[ "${EXPENSIVE_TESTS:-0}" -gt 0 ]]; then
- einfo "running expensive tests EXPENSIVE_TESTS=${EXPENSIVE_TESTS}"
- mycmakeargs+=(
- -DWITH_CYCLES_TEST_OSL="$(usex osl)"
-
- -DWITH_GPU_BACKEND_TESTS="yes"
- -DWITH_GPU_COMPOSITOR_TESTS="yes"
-
- -DWITH_GPU_DRAW_TESTS="yes"
-
- -DWITH_GPU_RENDER_TESTS="no"
- -DWITH_GPU_RENDER_TESTS_HEADED="no"
- -DWITH_GPU_RENDER_TESTS_SILENT="yes"
- -DWITH_GPU_RENDER_TESTS_VULKAN="$(usex vulkan)"
-
- -DWITH_SYSTEM_PYTHON_TESTS="yes"
- -DTEST_SYSTEM_PYTHON_EXE="${PYTHON}"
- )
-
- if [[ "${PV}" == *9999* && "${BVC}" == "alpha" ]] && use experimental; then
- mycmakeargs+=(
- # Enable user-interface tests using a headless display server.
- # Currently this depends on WITH_GHOST_WAYLAND and the weston compositor (Experimental)
- -DWITH_UI_TESTS="$(usex wayland)"
- -DWESTON_BIN="${ESYSROOT}/usr/bin/weston"
- )
- fi
- else
- mycmakeargs+=(
- -DWITH_GPU_RENDER_TESTS="no"
- )
- fi
- fi
-
- cmake_src_configure
-}
-
-src_test() {
- # A lot of tests need 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, or we won't 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)
- local -x BLENDER_SYSTEM_RESOURCES="${T%/}/usr/share/blender/${BV}"
-
- # Sanity check that the script and datafile path is valid.
- # If they are not valid, blender will fallback to the default path which is not what we want.
- [[ -d "${BLENDER_SYSTEM_RESOURCES}" ]] || die "The custom resources path is invalid, fix the ebuild!"
-
- # TODO only picks first card
- addwrite "/dev/dri/card0"
- addwrite "/dev/dri/renderD128"
- addwrite "/dev/udmabuf"
-
- if use cuda; then
- cuda_add_sandbox -w
- addwrite "/proc/self/task"
- addpredict "/dev/char/"
- fi
-
- local -x CMAKE_SKIP_TESTS=(
- "^compositor_cpu_color$"
- "^compositor_cpu_filter$"
- "^cycles_image_colorspace_cpu$"
- "^script_pyapi_bpy_driver_secure_eval$"
- )
-
- if [[ "${RUN_FAILING_TESTS:-0}" -eq 0 ]]; then
- einfo "not running failing tests RUN_FAILING_TESTS=${RUN_FAILING_TESTS}"
- CMAKE_SKIP_TESTS+=(
- "^BLI$"
- "^asset_system$"
- "^cycles$"
- "^cycles_bsdf_cpu$"
- "^cycles_bsdf_cuda$"
- "^cycles_bsdf_optix$"
- "^cycles_displacement_cpu$"
- "^cycles_displacement_cuda$"
- "^cycles_displacement_optix$"
- "^cycles_image_data_types_cpu$"
- "^cycles_image_data_types_cuda$"
- "^cycles_image_data_types_optix$"
- "^cycles_osl_cpu$"
- "^cycles_principled_bsdf_cpu$"
- "^cycles_principled_bsdf_cuda$"
- "^cycles_principled_bsdf_optix$"
- "^cycles_shader_cpu$"
- "^cycles_shader_cuda$"
- "^cycles_shader_optix$"
- "^ffmpeg_libs$" # needs H265
- "^imbuf_save$" # needs oiio with working webp
- "^geo_node_curves_curve_to_points$"
- "^geo_node_geometry_duplicate_elements_curve_points$"
- )
- fi
-
- if ! has_version "media-libs/openusd"; then
- CMAKE_SKIP_TESTS+=(
- # from pxr import Usd # ModuleNotFoundError: No module named 'pxr'
- "^script_bundled_modules$"
- )
- fi
-
- if ! has_version "media-libs/openimageio[python]"; then
- CMAKE_SKIP_TESTS+=(
- # import OpenImageIO as oiio # ModuleNotFoundError: No module named 'OpenImageIO'
- "^compositor_cpu_file_output$"
- )
- fi
-
- # oiio can't find webp due to missing cmake files # 937031
- sed -e "s/ WEBP//g" -i "${BUILD_DIR}/tests/python/CTestTestfile.cmake" || die
-
- # For debugging, print out all information.
- local -x VERBOSE="$(usex debug "true" "false")"
- "${VERBOSE}" && einfo "VERBOSE=${VERBOSE}"
-
- # Show the window in the foreground.
- # local -x USE_WINDOW="true" # non-zero
- [[ -v USE_WINDOW ]] && einfo "USE_WINDOW=${USE_WINDOW}"
-
- # local -x USE_DEBUG="true" # non-zero
- [[ -v USE_DEBUG ]] && einfo "USE_DEBUG=${USE_DEBUG}"
-
- if [[ "${EXPENSIVE_TESTS:-0}" -gt 0 ]]; then
- einfo "running expensive tests EXPENSIVE_TESTS=${EXPENSIVE_TESTS}"
- # if [[ "${PV}" == *9999* && "${BVC}" == "alpha" ]] &&
- # use experimental && use wayland; then
- # # This runs weston
- # xdg_environment_reset
- # fi
-
- xdg_environment_reset
- # WITH_GPU_RENDER_TESTS_HEADED
- if use wayland; then
- local compositor exit_code
- local logfile=${T}/weston.log
- weston --xwayland --backend=headless --socket=wayland-5 --idle-time=0 2>"${logfile}" &
- compositor=$!
- local -x WAYLAND_DISPLAY=wayland-5
- sleep 1 # wait for xwayland to be up
- # TODO use eapi9-pipestatus
- local -x DISPLAY="$(grep "xserver listening on display" "${logfile}" | cut -d ' ' -f 5)"
-
- cmake_src_test
-
- exit_code=$?
- kill "${compositor}"
- elif use X; then
- virtx cmake_src_test
- else
- cmake_src_test
- fi
- else
- cmake_src_test
- fi
-
- # 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)
- local -x BLENDER_SYSTEM_RESOURCES="${ED}/usr/share/blender/${BV}"
-
- # Workaround for binary drivers. # TODO
- 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 "blender-thumbnailer version rename failed"
- mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die "blender version rename failed"
-}
-
-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 && ! has_version "media-libs/mesa[${LLVM_USEDEP}]"; 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
-
- 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
-
- if [[ -z "${REPLACED_BY_VERSION}" ]]; then
- ewarn
- ewarn "You may want to remove the following directories"
- ewarn "- ~/.config/${PN}/${BV}/cache/"
- ewarn "- ~/.cache/cycles/"
- ewarn "It may contain extra render kernels not tracked by portage"
- ewarn
- fi
-}
diff --git a/media-gfx/blender/blender-4.5.5.ebuild b/media-gfx/blender/blender-4.5.5.ebuild
deleted file mode 100644
index 1feb838476d2..000000000000
--- a/media-gfx/blender/blender-4.5.5.ebuild
+++ /dev/null
@@ -1,964 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# shellcheck disable=SC2207
-
-# TODO
-# - Package Hydra
-# https://github.com/Ray-Tracing-Systems/HydraCore
-# https://github.com/Ray-Tracing-Systems/HydraAPI
-# - Package USD
-# https://github.com/PixarAnimationStudios/OpenUSD
-# - Package MaterialX
-# https://github.com/AcademySoftwareFoundation/MaterialX
-# - Package Draco
-# https://github.com/google/draco
-# - Package Audaspace
-# https://github.com/neXyon/audaspace
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-# NOTE must match media-libs/osl
-LLVM_COMPAT=( {18..20} )
-LLVM_OPTIONAL=1
-
-ROCM_SKIP_GLOBALS=1
-
-inherit cuda rocm llvm-r2 edo
-inherit eapi9-pipestatus check-reqs flag-o-matic multiprocessing pax-utils python-single-r1 toolchain-funcs virtualx
-inherit cmake xdg-utils
-
-DESCRIPTION="3D Creation/Animation/Publishing System"
-HOMEPAGE="https://www.blender.org"
-
-# NOTE BLENDER_VERSION
-# https://projects.blender.org/blender/blender/src/branch/main/source/blender/blenkernel/BKE_blender_version.h
-BLENDER_BRANCH="$(ver_cut 1-2)"
-
-if [[ "${PV}" == *9999* ]]; then
- EGIT_LFS="yes"
- inherit git-r3
- EGIT_REPO_URI="https://projects.blender.org/blender/blender.git"
- EGIT_SUBMODULES=( '*' '-lib/*' )
- # using shallow causes long wait times.
- EGIT_LFS_CLONE_TYPE="single"
-
- if [[ "${PV}" == 9999* ]]; then
- EGIT_BRANCH="main"
- else
- EGIT_BRANCH="blender-v${BLENDER_BRANCH}-release"
- fi
-
-else
- SRC_URI="
- https://download.blender.org/source/${P}.tar.xz
- test? (
- https://download.blender.org/source/blender-test-data-${BLENDER_BRANCH}.0-1.tar.xz
- )
- "
- KEYWORDS="amd64 ~arm64"
-fi
-
-# assets is CC0-1.0
-LICENSE="GPL-3+ cycles? ( Apache-2.0 ) CC0-1.0"
-SLOT="${BLENDER_BRANCH}"
-
-# NOTE +openpgl breaks on very old amd64 hardware
-# potentially mirror cpu_flags_x86 + REQUIRED_USE
-IUSE="
- alembic +bullet collada +color-management cuda +cycles +cycles-bin-kernels
- debug doc +embree +ffmpeg +fftw +fluid +gmp gnome hip hiprt jack
- jemalloc jpeg2k man +manifold +nanovdb ndof nls +oidn openal +openexr +opengl +openpgl
- +opensubdiv +openvdb optix osl pipewire +pdf +potrace +pugixml pulseaudio
- renderdoc sdl +sndfile +tbb test +tiff +truetype valgrind vulkan wayland +webp X
-"
-
-if [[ "${PV}" == *9999* ]]; then
- IUSE+="experimental"
-fi
-
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}
- || ( opengl vulkan )
- alembic? ( openexr )
- cuda? ( cycles )
- cycles? ( openexr tiff tbb )
- fluid? ( tbb )
- gnome? ( wayland )
- hip? ( cycles )
- hiprt? ( hip )
- nanovdb? ( openvdb )
- openvdb? ( tbb openexr )
- optix? ( cuda )
- osl? ( cycles pugixml )
- test? (
- color-management
- jpeg2k
- )
-"
-
-# 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-cpp/gflags:=
- dev-cpp/glog:=
- dev-libs/boost:=[nls?]
- dev-libs/lzo:2=
- $(python_gen_cond_dep '
- dev-python/cattrs[${PYTHON_USEDEP}]
- dev-python/cython[${PYTHON_USEDEP}]
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/zstandard[${PYTHON_USEDEP}]
- ')
- media-libs/freetype:=[brotli]
- media-libs/libepoxy:=
- media-libs/libjpeg-turbo:=
- media-libs/libpng:=
- media-libs/libsamplerate
- >=media-libs/openimageio-3.0.6.1:=
- virtual/glu
- virtual/libintl
- virtual/opengl[X?]
- virtual/zlib:=
- alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] )
- bullet? ( sci-physics/bullet:=[double-precision] )
- 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=[threads] )
- gmp? ( dev-libs/gmp:=[cxx] )
- gnome? ( gui-libs/libdecor )
- hip? (
- >=dev-util/hip-5.7:=
- hiprt? (
- dev-libs/hiprt:2.5=
- )
- )
- jack? ( virtual/jack )
- jemalloc? ( dev-libs/jemalloc:= )
- jpeg2k? ( media-libs/openjpeg:2= )
- manifold? ( >=sci-mathematics/manifold-3.1.0:= )
- ndof? (
- app-misc/spacenavd
- dev-libs/libspnav
- )
- nls? ( virtual/libiconv )
- openal? ( media-libs/openal )
- oidn? ( >=media-libs/oidn-2.1.0:= )
- openexr? (
- >=dev-libs/imath-3.1.7:=
- >=media-libs/openexr-3.2.1:0=
- )
- openpgl? ( media-libs/openpgl:= )
- opensubdiv? ( >=media-libs/opensubdiv-3.6.0-r2:=[opengl,cuda?,tbb?] )
- openvdb? (
- >=media-gfx/openvdb-11.0.0:=[nanovdb?]
- dev-libs/c-blosc:=
- )
- optix? (
- >=dev-libs/optix-8:=
- osl? (
- >=media-libs/osl-1.14[clang-cuda]
- )
- )
- osl? (
- >=media-libs/osl-1.14:=[${LLVM_USEDEP}]
- media-libs/mesa[${LLVM_USEDEP}]
- )
- pdf? ( media-libs/libharu:= )
- pipewire? ( >=media-video/pipewire-1.1.0:= )
- 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
- )
- webp? ( media-libs/libwebp:= )
- vulkan? (
- media-libs/shaderc
- dev-util/spirv-tools
- dev-util/glslang
- media-libs/vulkan-loader
- )
- truetype? (
- media-libs/harfbuzz
- )
- renderdoc? (
- media-gfx/renderdoc
- )
- X? (
- x11-libs/libX11
- x11-libs/libXfixes
- x11-libs/libXi
- x11-libs/libXxf86vm
- )
-"
-
-DEPEND="${RDEPEND}
- dev-cpp/eigen:=
- test? (
- $(python_gen_cond_dep '
- media-libs/openimageio[jpeg2k,python,${PYTHON_SINGLE_USEDEP},tools]
- ')
- )
-"
-
-if [[ "${PV}" == *9999* ]]; then
-DEPEND+="
- test? (
- experimental? (
- wayland? (
- dev-libs/weston
- )
- )
- )
-"
-fi
-
-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
- )
- vulkan? (
- dev-util/spirv-headers
- dev-util/vulkan-headers
- )
- 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.1.1-FindLLVM.patch"
- "${FILESDIR}/${PN}-4.1.1-numpy.patch"
- "${FILESDIR}/${PN}-4.3.2-system-glog.patch"
- "${FILESDIR}/${PN}-4.5.0-ffmpeg-8.0.patch"
- "${FILESDIR}/${PN}-4.5.3-cmake-policy-3.10.patch"
- "${FILESDIR}/${PN}-9999-don-t-show-variable-names.patch"
-)
-
-blender_check_requirements() {
- if use doc; then
- CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend
- fi
-}
-
-blender_get_version() {
- if [[ -n "${BV}" && -n "${BVC}" ]]; then
- return
- fi
-
- local status
- # Get blender version from blender itself.
- # mirrors build_files/cmake/macros.cmake function(get_blender_version)
- # NOTE maps x0y to x.y
- # TODO this can potentially break for x > 9 and y > 9
- BV="$(grep "define BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION, (PIPESTATUS: ${status})"
- BV="$(printf "%d.%d" "${BV:0: -2}" "${BV: -2}")"
-
- if [[ "${PV}" != 9999* && "${BLENDER_BRANCH}" != "${BV}" ]]; then
- eerror "ebuild (${BLENDER_BRANCH}) and code (${BV}) version mismatch"
- die "blender_get_version"
- fi
-
- BVC="$(grep "define BLENDER_VERSION_CYCLE " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION_CYCLE, (PIPESTATUS: ${status})"
-}
-
-pkg_pretend() {
- blender_check_requirements
-}
-
-pkg_setup() {
- blender_check_requirements
- python-single-r1_pkg_setup
-
- if use osl; then
- llvm-r2_pkg_setup
- fi
-}
-
-src_unpack() {
- if [[ "${PV}" == *9999* ]]; then
- if ! use test; then
- EGIT_SUBMODULES+=( '-tests/*' )
- fi
- git-r3_src_unpack
- else
- default
-
- # TODO
- if use test && [[ ${PV} != ${SLOT}.0 ]] ; then
- mv "blender-${BLENDER_BRANCH}.0/tests/"* "${S}/tests" || die
- rmdir -p "blender-${BLENDER_BRANCH}.0/tests/" || die
- fi
- fi
-
- # clear cmake_minimum_required
- rm -R "${S}/build_files/build_environment/patches" || die
-}
-
-src_prepare() {
- use cuda && cuda_src_prepare
-
- cmake_src_prepare
-
- blender_get_version
-
- # 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 "/CMAKE_INSTALL_PREFIX_WITH_CONFIG/{s|\${CMAKE_INSTALL_PREFIX}|${T%/}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i CMakeLists.txt \
- || die CMAKE_INSTALL_PREFIX_WITH_CONFIG
-
- # WITH_SYSTEM_GLOG=yes
- cmake_run_in extern cmake_comment_add_subdirectory glog
-
- 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" \
- || die
-
- sed \
- -e "s#\(set(cycles_kernel_runtime_lib_target_path \)\${cycles_kernel_runtime_lib_target_path}\(/lib)\)#\1\${CYCLES_INSTALL_PATH}\2#" \
- -i intern/cycles/kernel/CMakeLists.txt \
- || die
-
- if use hip; then
- # fix hardcoded path
- sed \
- -e "s#opt/rocm/hip/bin#$(hipconfig -p)/bin#g" \
- -i extern/hipew/src/hipew.c \
- || die
- fi
-
- 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 "/string(REPLACE.*TEST_INSTALL_DIR/{s|\${CMAKE_INSTALL_PREFIX}|${T}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i "build_files/cmake/testing.cmake" \
- || die "REPLACE.*TEST_INSTALL_DIR"
-
- # assertEquals was deprecated in Python-3.2 use assertEqual instead
- sed \
- -e 's/assertEquals/assertEqual/g' \
- -i tests/python/bl_animation_action.py \
- || die
-
- sed -e '1i #include <cstdint>' -i extern/gtest/src/gtest-death-test.cc || die
- else
- cmake_comment_add_subdirectory tests
- fi
-
- rm -rf extern/gflags || die
-
- # Use slotted libhiprt64
- sed \
- -e "s|\"libhiprt64.so\"|\"${ESYSROOT}/usr/lib/hiprt/2.5/$(get_libdir)/libhiprt64.so\"|" \
- -i extern/hipew/src/hiprtew.cc || die
-}
-
-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=(
- # we build a host-specific binary
- -DWITH_CPU_CHECK="no"
-
- -DWITH_STRICT_BUILD_OPTIONS="yes"
- -DWITH_LIBS_PRECOMPILED="no"
- -DBUILD_SHARED_LIBS="no" # quadriflow only?
- -DWITH_STATIC_LIBS=OFF
-
- # Build Options:
- -DWITH_ALEMBIC="$(usex alembic)"
- -DWITH_BOOST="yes"
- -DWITH_BULLET="$(usex bullet)"
- -DWITH_CYCLES="$(usex cycles)"
- -DWITH_DOC_MANPAGE="$(usex man)"
- -DWITH_FFTW3="$(usex fftw)"
- -DWITH_GMP="$(usex gmp)"
- -DWITH_GTESTS="$(usex test)"
- -DWITH_HARFBUZZ="$(usex truetype)"
- -DWITH_HARU="$(usex pdf)"
- -DWITH_HEADLESS="$(usex !X "$(usex !wayland)")"
- -DWITH_INPUT_NDOF="$(usex ndof)"
- -DWITH_INTERNATIONAL="$(usex nls)"
- -DWITH_MANIFOLD="$(usex manifold)"
- -DWITH_MATERIALX="no" # TODO: Package MaterialX
- -DWITH_NANOVDB="$(usex nanovdb)"
- -DWITH_OPENCOLLADA="$(usex collada)"
- -DWITH_OPENCOLORIO="$(usex color-management)"
- -DWITH_OPENGL_BACKEND="$(usex opengl)"
- -DWITH_OPENIMAGEDENOISE="$(usex oidn)"
- -DWITH_OPENSUBDIV="$(usex opensubdiv)"
- -DWITH_OPENVDB="$(usex openvdb)"
- -DWITH_OPENVDB_BLOSC="$(usex openvdb)"
- -DWITH_POTRACE="$(usex potrace)"
- -DWITH_PUGIXML="$(usex pugixml)"
- # -DWITH_QUADRIFLOW=ON
- -DWITH_RENDERDOC="$(usex renderdoc)"
- -DWITH_TBB="$(usex tbb)"
- -DWITH_UNITY_BUILD="no"
- -DWITH_USD="no" # TODO: Package USD
- -DWITH_VULKAN_BACKEND="$(usex vulkan)" # experimental
- -DWITH_XR_OPENXR="no"
-
- -DWITH_SYSTEM_BULLET="yes"
- -DWITH_SYSTEM_EIGEN3="yes"
- -DWITH_SYSTEM_FREETYPE="yes"
- -DWITH_SYSTEM_GFLAGS="yes"
- -DWITH_SYSTEM_GLOG="yes"
- -DWITH_SYSTEM_LZO="yes"
-
- # Compiler Options:
- # -DWITH_BUILDINFO="yes"
-
- # System Options:
- -DWITH_INSTALL_PORTABLE="no"
- -DWITH_MEM_JEMALLOC="$(usex jemalloc)"
- -DWITH_MEM_VALGRIND="$(usex valgrind)"
-
- # GHOST Options:
- -DWITH_GHOST_WAYLAND="$(usex wayland)"
- # -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" # only visible with use wayland. see below
- -DWITH_GHOST_WAYLAND_DYNLOAD="no"
- -DWITH_GHOST_X11="$(usex X)"
- # -DWITH_GHOST_XDND=ON
- # -DWITH_X11_XFIXES=ON
- # -DWITH_X11_XINPUT=ON
- # -DWITH_GHOST_WAYLAND_DYNLOAD # visible wayland?
- # -DWITH_GHOST_WAYLAND_LIBDECOR # visible wayland?
-
- # Image Formats:
- # -DWITH_IMAGE_CINEON=ON
- -DWITH_IMAGE_OPENEXR="$(usex openexr)"
- -DWITH_IMAGE_OPENJPEG="$(usex jpeg2k)"
- -DWITH_IMAGE_WEBP="$(usex webp)" # unlisted
-
- # Audio:
- # -DWITH_AUDASPACE=OFF
- # -DWITH_SYSTEM_AUDASPACE=OFF
- -DWITH_CODEC_FFMPEG="$(usex ffmpeg)"
- -DWITH_CODEC_SNDFILE="$(usex sndfile)"
- # -DWITH_COREAUDIO=OFF
- -DWITH_JACK="$(usex jack)"
- # -DWITH_JACK_DYNLOAD=
- -DWITH_OPENAL="$(usex openal)"
- -DWITH_PIPEWIRE="$(usex pipewire)"
- # -DWITH_PIPEWIRE_DYNLOAD=
- -DWITH_PULSEAUDIO="$(usex pulseaudio)"
- # -DWITH_PULSEAUDIO_DYNLOAD=
- -DWITH_SDL="$(usex sdl)"
- # -DWITH_WASAPI=OFF
-
- # Python:
- # -DWITH_PYTHON=ON
- -DWITH_PYTHON_INSTALL="no"
- -DWITH_PYTHON_INSTALL_NUMPY="no"
- -DWITH_PYTHON_INSTALL_ZSTANDARD="no"
- # -DWITH_PYTHON_MODULE="no"
- -DWITH_PYTHON_SECURITY="yes"
- -DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
- -DPYTHON_LIBRARY="$(python_get_library_path)"
- -DPYTHON_VERSION="${EPYTHON/python/}"
- -DWITH_DRACO="yes" # TODO: Package Draco # NOTE use bundled for now
-
- # Modifiers:
- -DWITH_MOD_FLUID="$(usex fluid)"
- -DWITH_MOD_OCEANSIM="$(usex fftw)"
- # -DWITH_MOD_REMESH=ON
-
- # Rendering:
- -DWITH_HYDRA="no" # TODO: Package Hydra
-
- # Rendering (Cycles):
- -DWITH_CYCLES_OSL="$(usex osl)"
- -DWITH_CYCLES_EMBREE="$(usex embree)"
- -DWITH_CYCLES_PATH_GUIDING="$(usex openpgl)"
- -DWITH_CYCLES_LOGGING="ON" # "$(usex debug)"
-
- -DWITH_CYCLES_DEVICE_OPTIX="$(usex optix)"
- -DWITH_CYCLES_DEVICE_CUDA="$(usex cuda)"
- -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda "$(usex cycles-bin-kernels)")"
-
- -DWITH_CYCLES_DEVICE_HIP="$(usex hip)"
- -DWITH_CYCLES_HIP_BINARIES="$(usex hip "$(usex cycles-bin-kernels)")"
- -DWITH_CYCLES_DEVICE_HIPRT="$(usex hip "$(usex hiprt)")"
-
- -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra
-
- # -DWITH_CYCLES_STANDALONE=OFF
- # -DWITH_CYCLES_STANDALONE_GUI=OFF
-
- -DWITH_BLENDER_THUMBNAILER="yes"
-
- -DWITH_ASSERT_ABORT="$(usex debug)"
- -DWITH_ASSERT_RELEASE="no" # "$(usex debug)"
-
- # -DWITH_FREESTYLE=ON
- # -DWITH_IK_ITASC=ON
- # -DWITH_IK_SOLVER=ON
- # -DWITH_INPUT_IME=ON
- # -DWITH_LIBMV=ON
- # -DWITH_LIBMV_SCHUR_SPECIALIZATIONS=ON
- # -DWITH_LZMA=ON
- # -DWITH_LZO=ON
- # -DWITH_UV_SLIM=ON
- -DWITH_NINJA_POOL_JOBS="no"
- # -DPOSTINSTALL_SCRIPT:PATH=""
- # -DPOSTCONFIGURE_SCRIPT:PATH=""
- )
-
- 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* && "${BVC}" == "alpha" ]]; then
- mycmakeargs+=(
- # -DWITH_BUILDINFO="no"
- -DWITH_EXPERIMENTAL_FEATURES="$(usex experimental)"
- # -DWITH_COMPILER_ASAN="yes"
- # -DWITH_STRSIZE_DEBUG="yes"
- # -DWITH_CYCLES_NATIVE_ONLY="yes"
- # -DWITH_LIBMV_SCHUR_SPECIALIZATIONS="no"
- # -DWITH_PYTHON_SAFETY="ON" # dev option
-
- )
- else
- mycmakeargs+=(
- -DWITH_BUILDINFO="yes"
- -DWITH_EXPERIMENTAL_FEATURES="OFF"
- -DWITH_PYTHON_SAFETY="OFF"
- )
- fi
-
- if use cuda; then
- # Ease compiling with required gcc similar to cuda_sanitize but for cmake
- if use cycles-bin-kernels; then
- local -x CUDAHOSTCXX="$(cuda_gccdir)"
- local -x CUDAHOSTLD="$(tc-getCXX)"
-
- if [[ -n "${CUDAARCHS}" ]]; then
- mycmakeargs+=(
- -DCYCLES_CUDA_BINARIES_ARCH="$(echo "${CUDAARCHS}" | sed -e 's/^/sm_/g' -e 's/;/;sm_/g')"
- )
- fi
- fi
- fi
-
- if use hip; then
- mycmakeargs+=(
- -DHIP_ROOT_DIR="$(hipconfig -p)"
-
- -DHIP_HIPCC_FLAGS="-fcf-protection=none"
-
- -DCMAKE_HIP_LINK_EXECUTABLE="$(get_llvm_prefix)/bin/clang++"
-
- -DCYCLES_HIP_BINARIES_ARCH="$(get_amdgpu_flags)"
- )
-
- if use hiprt; then
- mycmakeargs+=(
- -DHIPRT_ROOT_DIR="${ESYSROOT}/usr/lib/hiprt/2.5"
- -DHIPRT_COMPILER_PARALLEL_JOBS="$(makeopts_jobs)"
- )
- fi
- fi
-
- if use optix; then
- mycmakeargs+=(
- -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${ESYSROOT}/opt/optix"
- -DOPTIX_ROOT_DIR="${ESYSROOT}/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
-
- # WITH_ASSERT_RELEASE filters this
- append-cflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
- append-cxxflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
-
- if tc-is-gcc; then
- # We disable these to respect the user's choice of linker.
- mycmakeargs+=(
- -DWITH_LINKER_GOLD="no"
- )
- 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" )
- use hiprt && CYCLES_TEST_DEVICES+=( "HIP-RT" )
- fi
- mycmakeargs+=(
- -DCMAKE_INSTALL_PREFIX_WITH_CONFIG="${T%/}/usr"
- -DCYCLES_TEST_DEVICES="$(local IFS=";"; echo "${CYCLES_TEST_DEVICES[*]}")"
- )
-
- # NOTE in lieu of a FEATURE/build_options
- if [[ "${EXPENSIVE_TESTS:-0}" -gt 0 ]]; then
- einfo "running expensive tests EXPENSIVE_TESTS=${EXPENSIVE_TESTS}"
- mycmakeargs+=(
- -DWITH_CYCLES_TEST_OSL="$(usex osl)"
-
- -DWITH_GPU_BACKEND_TESTS="yes"
- -DWITH_GPU_COMPOSITOR_TESTS="yes"
-
- -DWITH_GPU_DRAW_TESTS="yes"
-
- -DWITH_GPU_RENDER_TESTS="yes"
- -DWITH_GPU_RENDER_TESTS_HEADED="yes"
- # -DWITH_GPU_RENDER_TESTS_SILENT="yes"
- -DWITH_GPU_RENDER_TESTS_VULKAN="$(usex vulkan)"
-
- # Run Python script outside Blender, using system default Python3 interpreter,
- # NOT the one specified in `TEST_PYTHON_EXE`.
- -DWITH_SYSTEM_PYTHON_TESTS="yes"
- -DTEST_SYSTEM_PYTHON_EXE="${PYTHON}"
-
- # -DTEST_PYTHON_EXE="${T%/}/${EPYTHON}/bin/python"
-
- # -DWITH_LINUX_OFFICIAL_RELEASE_TESTS="yes" # Not needed?
- )
-
- if [[ "${PV}" == *9999* && "${BVC}" == "alpha" ]] && use experimental; then
- mycmakeargs+=(
- -DWITH_GPU_MESH_PAINT_TESTS="yes"
- # -DWITH_UI_TESTS="$(usex wayland)"
- -DWITH_UI_TESTS="yes"
- -DWITH_TESTS_EXPERIMENTAL="yes"
-
- # Enable user-interface tests using a headless display server.
- # Currently this depends on WITH_GHOST_WAYLAND and the weston compositor (Experimental)
- -DWITH_UI_TESTS_HEADLESS="$(usex !X "$(usex wayland)")"
- -DWESTON_BIN="${ESYSROOT}/usr/bin/weston"
- )
- fi
- else
- mycmakeargs+=(
- -DWITH_GPU_RENDER_TESTS="no"
- )
- fi
- fi
-
- cmake_src_configure
-}
-
-src_test() {
- # A lot of tests need 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, or we won't 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)
- local -x BLENDER_SYSTEM_RESOURCES="${T%/}/usr/share/blender/${BV}"
-
- # Sanity check that the script and datafile path is valid.
- # If they are not valid, blender will fallback to the default path which is not what we want.
- [[ -d "${BLENDER_SYSTEM_RESOURCES}" ]] || die "The custom resources path is invalid, fix the ebuild!"
-
- # TODO only picks first card
- addwrite "/dev/dri/card0"
- addwrite "/dev/dri/renderD128"
-
- [[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
-
- if use cuda; then
- cuda_add_sandbox -w
- addwrite "/proc/self/task"
- addpredict "/dev/char/"
- fi
-
- local -x CMAKE_SKIP_TESTS=(
- "^script_pyapi_bpy_driver_secure_eval$"
- )
-
- if [[ "${RUN_FAILING_TESTS:-0}" -eq 0 ]]; then
- einfo "not running failing tests RUN_FAILING_TESTS=${RUN_FAILING_TESTS}"
- CMAKE_SKIP_TESTS+=(
- # Needs testfiles update
- "^io_fbx_import$"
- "^cycles_camera_cpu$"
- )
- fi
-
- if ! has_version "media-libs/openusd"; then
- CMAKE_SKIP_TESTS+=(
- # from pxr import Usd # ModuleNotFoundError: No module named 'pxr'
- "^script_bundled_modules$"
- )
- fi
-
- if has_version ">=media-video/ffmpeg-8"; then
- CMAKE_SKIP_TESTS+=(
- # output change TODO
- "^sequencer_render_video_output$"
- )
- fi
-
- # For debugging, print out all information.
- local -x VERBOSE="$(usex debug "true" "false")"
- "${VERBOSE}" && einfo "VERBOSE=${VERBOSE}"
-
- local -x DEBUG="$(usex debug "true" "false")"
- "${DEBUG}" && einfo "DEBUG=${DEBUG}"
-
- # Show the window in the foreground.
- # local -x USE_WINDOW="true" # non-zero
- [[ -v USE_WINDOW ]] && einfo "USE_WINDOW=${USE_WINDOW}"
-
- # local -x USE_DEBUG="true" # non-zero
- [[ -v USE_DEBUG ]] && einfo "USE_DEBUG=${USE_DEBUG}"
-
- # Environment OPENIMAGEIO_CUDA=0 trumps everything else, turns off
- # Cuda functionality. We don't even initialize in this case.
- local -x OPENIMAGEIO_CUDA=0
-
- # Needed if openimageio wasn't build with -DNDEBUG
- local -x OPENIMAGEIO_DEBUG=0
-
- local -x CYCLESTEST_ARGS="-t 0"
-
- if [[ "${EXPENSIVE_TESTS:-0}" -gt 0 ]]; then
- einfo "running expensive tests EXPENSIVE_TESTS=${EXPENSIVE_TESTS}"
- if [[ "${PV}" == *9999* && "${BVC}" == "alpha" ]] &&
- use experimental && use wayland; then
- # This runs weston
- xdg_environment_reset
- fi
-
- if [[ "${USE_WINDOW}" == "true" ]]; then
- xdg_environment_reset
- # WITH_GPU_RENDER_TESTS_HEADED
- if use wayland; then
- local compositor exit_code
- local logfile=${T}/weston.log
- weston --xwayland --backend=headless --width=800 --height=600 --socket=wayland-5 --idle-time=0 2>"${logfile}" &
- compositor=$!
- local -x WAYLAND_DISPLAY=wayland-5
- sleep 1 # wait for xwayland to be up
- # TODO use eapi9-pipestatus
- local -x DISPLAY="$(grep "xserver listening on display" "${logfile}" | cut -d ' ' -f 5)"
-
- cmake_src_test
-
- exit_code=$?
- kill "${compositor}"
- elif use X; then
- virtx cmake_src_test
- fi
- else
- cmake_src_test
- fi
- else
- cmake_src_test
- fi
-
- # 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)
- local -x BLENDER_SYSTEM_RESOURCES="${ED}/usr/share/blender/${BV}"
-
- # Workaround for binary drivers. # TODO
- addpredict /dev/ati
- addpredict /dev/dri
- addpredict /dev/nvidiactl
-
- cd "${CMAKE_USE_DIR}/doc/doxygen" || die
- sed -e "/^NUM_PROC_THREADS/s/1/$(makeopts_jobs)/" -i Doxyfile || die
- edob -m "Generating Blender C/C++ API docs ..." doxygen -u Doxyfile
- edob -m "Building API docs" doxygen
-
- cd "${CMAKE_USE_DIR}" || die
- einfo "Generating (BPY) Blender Python API docs ..."
- edo "${BUILD_DIR}"/bin/blender --background --python "doc/python_api/sphinx_doc_gen.py" -noaudio
-
- edo sphinx-build -j "$(makeopts_jobs)" doc/python_api/sphinx-in doc/python_api/BPY_API
-
- cd "${CMAKE_USE_DIR}" || die
- docinto "html/API/python"
- dodoc -r "doc/python_api/BPY_API/"
-
- docinto "html/API/blender"
- dodoc -r "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 "blender-thumbnailer version rename failed"
- mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die "blender version rename failed"
-}
-
-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 && ! has_version "media-libs/mesa[${LLVM_USEDEP}]"; 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
-
- 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
-
- if [[ -z "${REPLACED_BY_VERSION}" ]]; then
- ewarn
- ewarn "You may want to remove the following directories"
- ewarn "- ~/.config/${PN}/${BV}/cache/"
- ewarn "- ~/.cache/cycles/"
- ewarn "It may contain extra render kernels not tracked by portage"
- ewarn
- fi
-}
-
-pkg_info () {
- debugvars () {
- local var
- for var in "${@}"; do
- [[ -v "${var}" ]] && echo "${var}: ${!var}"
- done
- }
-
- local blender_info_vars=(
- CUDACXX
- CUDAHOSTCXX
- CUDAHOSTLD
- CUDAARCHS
- CUDAFLAGS
- CUDA_PATH
- CUDA_VERBOSE
- NVCCFLAGS
- NVCC_PREPEND_FLAGS
- NVCC_APPPEND_FLAGS
- )
-
- debugvars "${blender_info_vars[@]}"
-}
diff --git a/media-gfx/blender/blender-4.5.9999.ebuild b/media-gfx/blender/blender-4.5.9999.ebuild
deleted file mode 100644
index 4f1799b9e895..000000000000
--- a/media-gfx/blender/blender-4.5.9999.ebuild
+++ /dev/null
@@ -1,963 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# shellcheck disable=SC2207
-
-# TODO
-# - Package Hydra
-# https://github.com/Ray-Tracing-Systems/HydraCore
-# https://github.com/Ray-Tracing-Systems/HydraAPI
-# - Package USD
-# https://github.com/PixarAnimationStudios/OpenUSD
-# - Package MaterialX
-# https://github.com/AcademySoftwareFoundation/MaterialX
-# - Package Draco
-# https://github.com/google/draco
-# - Package Audaspace
-# https://github.com/neXyon/audaspace
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-# NOTE must match media-libs/osl
-LLVM_COMPAT=( {18..20} )
-LLVM_OPTIONAL=1
-
-ROCM_SKIP_GLOBALS=1
-
-inherit cuda rocm llvm-r2 edo
-inherit eapi9-pipestatus check-reqs flag-o-matic multiprocessing pax-utils python-single-r1 toolchain-funcs virtualx
-inherit cmake xdg-utils
-
-DESCRIPTION="3D Creation/Animation/Publishing System"
-HOMEPAGE="https://www.blender.org"
-
-# NOTE BLENDER_VERSION
-# https://projects.blender.org/blender/blender/src/branch/main/source/blender/blenkernel/BKE_blender_version.h
-BLENDER_BRANCH="$(ver_cut 1-2)"
-
-if [[ "${PV}" == *9999* ]]; then
- EGIT_LFS="yes"
- inherit git-r3
- EGIT_REPO_URI="https://projects.blender.org/blender/blender.git"
- EGIT_SUBMODULES=( '*' '-lib/*' )
- # using shallow causes long wait times.
- EGIT_LFS_CLONE_TYPE="single"
-
- if [[ "${PV}" == 9999* ]]; then
- EGIT_BRANCH="main"
- else
- EGIT_BRANCH="blender-v${BLENDER_BRANCH}-release"
- fi
-
-else
- SRC_URI="
- https://download.blender.org/source/${P}.tar.xz
- test? (
- https://download.blender.org/source/blender-test-data-${BLENDER_BRANCH}.0-1.tar.xz
- )
- "
- KEYWORDS="~amd64 ~arm64"
-fi
-
-# assets is CC0-1.0
-LICENSE="GPL-3+ cycles? ( Apache-2.0 ) CC0-1.0"
-SLOT="${BLENDER_BRANCH}"
-
-# NOTE +openpgl breaks on very old amd64 hardware
-# potentially mirror cpu_flags_x86 + REQUIRED_USE
-IUSE="
- alembic +bullet collada +color-management cuda +cycles +cycles-bin-kernels
- debug doc +embree +ffmpeg +fftw +fluid +gmp gnome hip hiprt jack
- jemalloc jpeg2k man +manifold +nanovdb ndof nls +oidn openal +openexr +opengl +openpgl
- +opensubdiv +openvdb optix osl pipewire +pdf +potrace +pugixml pulseaudio
- renderdoc sdl +sndfile +tbb test +tiff +truetype valgrind vulkan wayland +webp X
-"
-
-if [[ "${PV}" == *9999* ]]; then
- IUSE+="experimental"
-fi
-
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}
- || ( opengl vulkan )
- alembic? ( openexr )
- cuda? ( cycles )
- cycles? ( openexr tiff tbb )
- fluid? ( tbb )
- gnome? ( wayland )
- hip? ( cycles )
- hiprt? ( hip )
- nanovdb? ( openvdb )
- openvdb? ( tbb openexr )
- optix? ( cuda )
- osl? ( cycles pugixml )
- test? (
- color-management
- jpeg2k
- )
-"
-
-# 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-cpp/gflags:=
- dev-cpp/glog:=
- dev-libs/boost:=[nls?]
- dev-libs/lzo:2=
- $(python_gen_cond_dep '
- dev-python/cattrs[${PYTHON_USEDEP}]
- dev-python/cython[${PYTHON_USEDEP}]
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/zstandard[${PYTHON_USEDEP}]
- ')
- media-libs/freetype:=[brotli]
- media-libs/libepoxy:=
- media-libs/libjpeg-turbo:=
- media-libs/libpng:=
- media-libs/libsamplerate
- >=media-libs/openimageio-3.0.6.1:=
- virtual/glu
- virtual/libintl
- virtual/opengl[X?]
- virtual/zlib:=
- alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] )
- bullet? ( sci-physics/bullet:=[double-precision] )
- 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=[threads] )
- gmp? ( dev-libs/gmp:=[cxx] )
- gnome? ( gui-libs/libdecor )
- hip? (
- >=dev-util/hip-5.7:=
- hiprt? (
- dev-libs/hiprt:2.5=
- )
- )
- jack? ( virtual/jack )
- jemalloc? ( dev-libs/jemalloc:= )
- jpeg2k? ( media-libs/openjpeg:2= )
- manifold? ( >=sci-mathematics/manifold-3.1.0:= )
- ndof? (
- app-misc/spacenavd
- dev-libs/libspnav
- )
- nls? ( virtual/libiconv )
- openal? ( media-libs/openal )
- oidn? ( >=media-libs/oidn-2.1.0:= )
- openexr? (
- >=dev-libs/imath-3.1.7:=
- >=media-libs/openexr-3.2.1:0=
- )
- openpgl? ( media-libs/openpgl:= )
- opensubdiv? ( >=media-libs/opensubdiv-3.6.0-r2:=[opengl,cuda?,tbb?] )
- openvdb? (
- >=media-gfx/openvdb-11.0.0:=[nanovdb?]
- dev-libs/c-blosc:=
- )
- optix? (
- >=dev-libs/optix-8:=
- osl? (
- >=media-libs/osl-1.14[clang-cuda]
- )
- )
- osl? (
- >=media-libs/osl-1.14:=[${LLVM_USEDEP}]
- media-libs/mesa[${LLVM_USEDEP}]
- )
- pdf? ( media-libs/libharu:= )
- pipewire? ( >=media-video/pipewire-1.1.0:= )
- 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
- )
- webp? ( media-libs/libwebp:= )
- vulkan? (
- media-libs/shaderc
- dev-util/spirv-tools
- dev-util/glslang
- media-libs/vulkan-loader
- )
- truetype? (
- media-libs/harfbuzz
- )
- renderdoc? (
- media-gfx/renderdoc
- )
- X? (
- x11-libs/libX11
- x11-libs/libXfixes
- x11-libs/libXi
- x11-libs/libXxf86vm
- )
-"
-
-DEPEND="${RDEPEND}
- dev-cpp/eigen:=
- test? (
- $(python_gen_cond_dep '
- media-libs/openimageio[jpeg2k,python,${PYTHON_SINGLE_USEDEP},tools]
- ')
- )
-"
-
-if [[ "${PV}" == *9999* ]]; then
-DEPEND+="
- test? (
- experimental? (
- wayland? (
- dev-libs/weston
- )
- )
- )
-"
-fi
-
-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
- )
- vulkan? (
- dev-util/spirv-headers
- dev-util/vulkan-headers
- )
- 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.1.1-FindLLVM.patch"
- "${FILESDIR}/${PN}-4.1.1-numpy.patch"
- "${FILESDIR}/${PN}-4.3.2-system-glog.patch"
- "${FILESDIR}/${PN}-4.5.0-ffmpeg-8.0.patch"
- "${FILESDIR}/${PN}-4.5.3-cmake-policy-3.10.patch"
- "${FILESDIR}/${PN}-9999-don-t-show-variable-names.patch"
-)
-
-blender_check_requirements() {
- if use doc; then
- CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend
- fi
-}
-
-blender_get_version() {
- if [[ -n "${BV}" && -n "${BVC}" ]]; then
- return
- fi
-
- local status
- # Get blender version from blender itself.
- # mirrors build_files/cmake/macros.cmake function(get_blender_version)
- # NOTE maps x0y to x.y
- # TODO this can potentially break for x > 9 and y > 9
- BV="$(grep "define BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION, (PIPESTATUS: ${status})"
- BV="$(printf "%d.%d" "${BV:0: -2}" "${BV: -2}")"
-
- if [[ "${PV}" != 9999* && "${BLENDER_BRANCH}" != "${BV}" ]]; then
- eerror "ebuild (${BLENDER_BRANCH}) and code (${BV}) version mismatch"
- die "blender_get_version"
- fi
-
- BVC="$(grep "define BLENDER_VERSION_CYCLE " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION_CYCLE, (PIPESTATUS: ${status})"
-}
-
-pkg_pretend() {
- blender_check_requirements
-}
-
-pkg_setup() {
- blender_check_requirements
- python-single-r1_pkg_setup
-
- if use osl; then
- llvm-r2_pkg_setup
- fi
-}
-
-src_unpack() {
- if [[ "${PV}" == *9999* ]]; then
- if ! use test; then
- EGIT_SUBMODULES+=( '-tests/*' )
- fi
- git-r3_src_unpack
- else
- default
-
- # TODO
- if use test && [[ ${PV} != ${SLOT}.0 ]] ; then
- mv "blender-${BLENDER_BRANCH}.0/tests/"* "${S}/tests" || die
- rmdir -p "blender-${BLENDER_BRANCH}.0/tests/" || die
- fi
- fi
-
- # clear cmake_minimum_required
- rm -R "${S}/build_files/build_environment/patches" || die
-}
-
-src_prepare() {
- use cuda && cuda_src_prepare
-
- cmake_src_prepare
-
- blender_get_version
-
- # 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 "/CMAKE_INSTALL_PREFIX_WITH_CONFIG/{s|\${CMAKE_INSTALL_PREFIX}|${T%/}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i CMakeLists.txt \
- || die CMAKE_INSTALL_PREFIX_WITH_CONFIG
-
- # WITH_SYSTEM_GLOG=yes
- cmake_run_in extern cmake_comment_add_subdirectory glog
-
- 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" \
- || die
-
- sed \
- -e "s#\(set(cycles_kernel_runtime_lib_target_path \)\${cycles_kernel_runtime_lib_target_path}\(/lib)\)#\1\${CYCLES_INSTALL_PATH}\2#" \
- -i intern/cycles/kernel/CMakeLists.txt \
- || die
-
- if use hip; then
- # fix hardcoded path
- sed \
- -e "s#opt/rocm/hip/bin#$(hipconfig -p)/bin#g" \
- -i extern/hipew/src/hipew.c \
- || die
- fi
-
- 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 "/string(REPLACE.*TEST_INSTALL_DIR/{s|\${CMAKE_INSTALL_PREFIX}|${T}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i "build_files/cmake/testing.cmake" \
- || die "REPLACE.*TEST_INSTALL_DIR"
-
- # assertEquals was deprecated in Python-3.2 use assertEqual instead
- sed \
- -e 's/assertEquals/assertEqual/g' \
- -i tests/python/bl_animation_action.py \
- || die
-
- sed -e '1i #include <cstdint>' -i extern/gtest/src/gtest-death-test.cc || die
- else
- cmake_comment_add_subdirectory tests
- fi
-
- rm -rf extern/gflags || die
-
- # Use slotted libhiprt64
- sed \
- -e "s|\"libhiprt64.so\"|\"${ESYSROOT}/usr/lib/hiprt/2.5/$(get_libdir)/libhiprt64.so\"|" \
- -i extern/hipew/src/hiprtew.cc || die
-}
-
-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=(
- # we build a host-specific binary
- -DWITH_CPU_CHECK="no"
-
- -DWITH_STRICT_BUILD_OPTIONS="yes"
- -DWITH_LIBS_PRECOMPILED="no"
- -DBUILD_SHARED_LIBS="no" # quadriflow only?
- -DWITH_STATIC_LIBS=OFF
-
- # Build Options:
- -DWITH_ALEMBIC="$(usex alembic)"
- -DWITH_BOOST="yes"
- -DWITH_BULLET="$(usex bullet)"
- -DWITH_CYCLES="$(usex cycles)"
- -DWITH_DOC_MANPAGE="$(usex man)"
- -DWITH_FFTW3="$(usex fftw)"
- -DWITH_GMP="$(usex gmp)"
- -DWITH_GTESTS="$(usex test)"
- -DWITH_HARFBUZZ="$(usex truetype)"
- -DWITH_HARU="$(usex pdf)"
- -DWITH_HEADLESS="$(usex !X "$(usex !wayland)")"
- -DWITH_INPUT_NDOF="$(usex ndof)"
- -DWITH_INTERNATIONAL="$(usex nls)"
- -DWITH_MANIFOLD="$(usex manifold)"
- -DWITH_MATERIALX="no" # TODO: Package MaterialX
- -DWITH_NANOVDB="$(usex nanovdb)"
- -DWITH_OPENCOLLADA="$(usex collada)"
- -DWITH_OPENCOLORIO="$(usex color-management)"
- -DWITH_OPENGL_BACKEND="$(usex opengl)"
- -DWITH_OPENIMAGEDENOISE="$(usex oidn)"
- -DWITH_OPENSUBDIV="$(usex opensubdiv)"
- -DWITH_OPENVDB="$(usex openvdb)"
- -DWITH_OPENVDB_BLOSC="$(usex openvdb)"
- -DWITH_POTRACE="$(usex potrace)"
- -DWITH_PUGIXML="$(usex pugixml)"
- # -DWITH_QUADRIFLOW=ON
- -DWITH_RENDERDOC="$(usex renderdoc)"
- -DWITH_TBB="$(usex tbb)"
- -DWITH_UNITY_BUILD="no"
- -DWITH_USD="no" # TODO: Package USD
- -DWITH_VULKAN_BACKEND="$(usex vulkan)" # experimental
- -DWITH_XR_OPENXR="no"
-
- -DWITH_SYSTEM_BULLET="yes"
- -DWITH_SYSTEM_EIGEN3="yes"
- -DWITH_SYSTEM_FREETYPE="yes"
- -DWITH_SYSTEM_GFLAGS="yes"
- -DWITH_SYSTEM_GLOG="yes"
- -DWITH_SYSTEM_LZO="yes"
-
- # Compiler Options:
- # -DWITH_BUILDINFO="yes"
-
- # System Options:
- -DWITH_INSTALL_PORTABLE="no"
- -DWITH_MEM_JEMALLOC="$(usex jemalloc)"
- -DWITH_MEM_VALGRIND="$(usex valgrind)"
-
- # GHOST Options:
- -DWITH_GHOST_WAYLAND="$(usex wayland)"
- # -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" # only visible with use wayland. see below
- -DWITH_GHOST_WAYLAND_DYNLOAD="no"
- -DWITH_GHOST_X11="$(usex X)"
- # -DWITH_GHOST_XDND=ON
- # -DWITH_X11_XFIXES=ON
- # -DWITH_X11_XINPUT=ON
- # -DWITH_GHOST_WAYLAND_DYNLOAD # visible wayland?
- # -DWITH_GHOST_WAYLAND_LIBDECOR # visible wayland?
-
- # Image Formats:
- # -DWITH_IMAGE_CINEON=ON
- -DWITH_IMAGE_OPENEXR="$(usex openexr)"
- -DWITH_IMAGE_OPENJPEG="$(usex jpeg2k)"
- -DWITH_IMAGE_WEBP="$(usex webp)" # unlisted
-
- # Audio:
- # -DWITH_AUDASPACE=OFF
- # -DWITH_SYSTEM_AUDASPACE=OFF
- -DWITH_CODEC_FFMPEG="$(usex ffmpeg)"
- -DWITH_CODEC_SNDFILE="$(usex sndfile)"
- # -DWITH_COREAUDIO=OFF
- -DWITH_JACK="$(usex jack)"
- # -DWITH_JACK_DYNLOAD=
- -DWITH_OPENAL="$(usex openal)"
- -DWITH_PIPEWIRE="$(usex pipewire)"
- # -DWITH_PIPEWIRE_DYNLOAD=
- -DWITH_PULSEAUDIO="$(usex pulseaudio)"
- # -DWITH_PULSEAUDIO_DYNLOAD=
- -DWITH_SDL="$(usex sdl)"
- # -DWITH_WASAPI=OFF
-
- # Python:
- # -DWITH_PYTHON=ON
- -DWITH_PYTHON_INSTALL="no"
- -DWITH_PYTHON_INSTALL_NUMPY="no"
- -DWITH_PYTHON_INSTALL_ZSTANDARD="no"
- # -DWITH_PYTHON_MODULE="no"
- -DWITH_PYTHON_SECURITY="yes"
- -DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
- -DPYTHON_LIBRARY="$(python_get_library_path)"
- -DPYTHON_VERSION="${EPYTHON/python/}"
- -DWITH_DRACO="yes" # TODO: Package Draco # NOTE use bundled for now
-
- # Modifiers:
- -DWITH_MOD_FLUID="$(usex fluid)"
- -DWITH_MOD_OCEANSIM="$(usex fftw)"
- # -DWITH_MOD_REMESH=ON
-
- # Rendering:
- -DWITH_HYDRA="no" # TODO: Package Hydra
-
- # Rendering (Cycles):
- -DWITH_CYCLES_OSL="$(usex osl)"
- -DWITH_CYCLES_EMBREE="$(usex embree)"
- -DWITH_CYCLES_PATH_GUIDING="$(usex openpgl)"
- -DWITH_CYCLES_LOGGING="ON" # "$(usex debug)"
-
- -DWITH_CYCLES_DEVICE_OPTIX="$(usex optix)"
- -DWITH_CYCLES_DEVICE_CUDA="$(usex cuda)"
- -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda "$(usex cycles-bin-kernels)")"
-
- -DWITH_CYCLES_DEVICE_HIP="$(usex hip)"
- -DWITH_CYCLES_HIP_BINARIES="$(usex hip "$(usex cycles-bin-kernels)")"
- -DWITH_CYCLES_DEVICE_HIPRT="$(usex hip "$(usex hiprt)")"
-
- -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra
-
- # -DWITH_CYCLES_STANDALONE=OFF
- # -DWITH_CYCLES_STANDALONE_GUI=OFF
-
- -DWITH_BLENDER_THUMBNAILER="yes"
-
- -DWITH_ASSERT_ABORT="$(usex debug)"
- -DWITH_ASSERT_RELEASE="no" # "$(usex debug)"
-
- # -DWITH_FREESTYLE=ON
- # -DWITH_IK_ITASC=ON
- # -DWITH_IK_SOLVER=ON
- # -DWITH_INPUT_IME=ON
- # -DWITH_LIBMV=ON
- # -DWITH_LIBMV_SCHUR_SPECIALIZATIONS=ON
- # -DWITH_LZMA=ON
- # -DWITH_LZO=ON
- # -DWITH_UV_SLIM=ON
- -DWITH_NINJA_POOL_JOBS="no"
- # -DPOSTINSTALL_SCRIPT:PATH=""
- # -DPOSTCONFIGURE_SCRIPT:PATH=""
- )
-
- 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* && "${BVC}" == "alpha" ]]; then
- mycmakeargs+=(
- # -DWITH_BUILDINFO="no"
- -DWITH_EXPERIMENTAL_FEATURES="$(usex experimental)"
- # -DWITH_COMPILER_ASAN="yes"
- # -DWITH_STRSIZE_DEBUG="yes"
- # -DWITH_CYCLES_NATIVE_ONLY="yes"
- # -DWITH_LIBMV_SCHUR_SPECIALIZATIONS="no"
- # -DWITH_PYTHON_SAFETY="ON" # dev option
-
- )
- else
- mycmakeargs+=(
- -DWITH_BUILDINFO="yes"
- -DWITH_EXPERIMENTAL_FEATURES="OFF"
- -DWITH_PYTHON_SAFETY="OFF"
- )
- fi
-
- if use cuda; then
- # Ease compiling with required gcc similar to cuda_sanitize but for cmake
- if use cycles-bin-kernels; then
- local -x CUDAHOSTCXX="$(cuda_gccdir)"
- local -x CUDAHOSTLD="$(tc-getCXX)"
-
- if [[ -n "${CUDAARCHS}" ]]; then
- mycmakeargs+=(
- -DCYCLES_CUDA_BINARIES_ARCH="$(echo "${CUDAARCHS}" | sed -e 's/^/sm_/g' -e 's/;/;sm_/g')"
- )
- fi
- fi
- fi
-
- if use hip; then
- mycmakeargs+=(
- -DHIP_ROOT_DIR="$(hipconfig -p)"
-
- -DHIP_HIPCC_FLAGS="-fcf-protection=none"
-
- -DCMAKE_HIP_LINK_EXECUTABLE="$(get_llvm_prefix)/bin/clang++"
-
- -DCYCLES_HIP_BINARIES_ARCH="$(get_amdgpu_flags)"
- )
-
- if use hiprt; then
- mycmakeargs+=(
- -DHIPRT_ROOT_DIR="${ESYSROOT}/usr/lib/hiprt/2.5"
- -DHIPRT_COMPILER_PARALLEL_JOBS="$(makeopts_jobs)"
- )
- fi
- fi
-
- if use optix; then
- mycmakeargs+=(
- -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${ESYSROOT}/opt/optix"
- -DOPTIX_ROOT_DIR="${ESYSROOT}/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
-
- # WITH_ASSERT_RELEASE filters this
- append-cflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
- append-cxxflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
-
- if tc-is-gcc; then
- # We disable these to respect the user's choice of linker.
- mycmakeargs+=(
- -DWITH_LINKER_GOLD="no"
- )
- 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" )
- use hiprt && CYCLES_TEST_DEVICES+=( "HIP-RT" )
- fi
- mycmakeargs+=(
- -DCMAKE_INSTALL_PREFIX_WITH_CONFIG="${T%/}/usr"
- -DCYCLES_TEST_DEVICES="$(local IFS=";"; echo "${CYCLES_TEST_DEVICES[*]}")"
- )
-
- # NOTE in lieu of a FEATURE/build_options
- if [[ "${EXPENSIVE_TESTS:-0}" -gt 0 ]]; then
- einfo "running expensive tests EXPENSIVE_TESTS=${EXPENSIVE_TESTS}"
- mycmakeargs+=(
- -DWITH_CYCLES_TEST_OSL="$(usex osl)"
-
- -DWITH_GPU_BACKEND_TESTS="yes"
- -DWITH_GPU_COMPOSITOR_TESTS="yes"
-
- -DWITH_GPU_DRAW_TESTS="yes"
-
- -DWITH_GPU_RENDER_TESTS="yes"
- -DWITH_GPU_RENDER_TESTS_HEADED="yes"
- # -DWITH_GPU_RENDER_TESTS_SILENT="yes"
- -DWITH_GPU_RENDER_TESTS_VULKAN="$(usex vulkan)"
-
- # Run Python script outside Blender, using system default Python3 interpreter,
- # NOT the one specified in `TEST_PYTHON_EXE`.
- -DWITH_SYSTEM_PYTHON_TESTS="yes"
- -DTEST_SYSTEM_PYTHON_EXE="${PYTHON}"
-
- # -DTEST_PYTHON_EXE="${T%/}/${EPYTHON}/bin/python"
-
- # -DWITH_LINUX_OFFICIAL_RELEASE_TESTS="yes" # Not needed?
- )
-
- if [[ "${PV}" == *9999* && "${BVC}" == "alpha" ]] && use experimental; then
- mycmakeargs+=(
- -DWITH_GPU_MESH_PAINT_TESTS="yes"
- # -DWITH_UI_TESTS="$(usex wayland)"
- -DWITH_UI_TESTS="yes"
- -DWITH_TESTS_EXPERIMENTAL="yes"
-
- # Enable user-interface tests using a headless display server.
- # Currently this depends on WITH_GHOST_WAYLAND and the weston compositor (Experimental)
- -DWITH_UI_TESTS_HEADLESS="$(usex !X "$(usex wayland)")"
- -DWESTON_BIN="${ESYSROOT}/usr/bin/weston"
- )
- fi
- else
- mycmakeargs+=(
- -DWITH_GPU_RENDER_TESTS="no"
- )
- fi
- fi
-
- cmake_src_configure
-}
-
-src_test() {
- # A lot of tests need 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, or we won't 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)
- local -x BLENDER_SYSTEM_RESOURCES="${T%/}/usr/share/blender/${BV}"
-
- # Sanity check that the script and datafile path is valid.
- # If they are not valid, blender will fallback to the default path which is not what we want.
- [[ -d "${BLENDER_SYSTEM_RESOURCES}" ]] || die "The custom resources path is invalid, fix the ebuild!"
-
- # TODO only picks first card
- addwrite "/dev/dri/card0"
- addwrite "/dev/dri/renderD128"
-
- [[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
-
- if use cuda; then
- cuda_add_sandbox -w
- addwrite "/proc/self/task"
- addpredict "/dev/char/"
- fi
-
- local -x CMAKE_SKIP_TESTS=(
- "^script_pyapi_bpy_driver_secure_eval$"
- )
-
- if [[ "${RUN_FAILING_TESTS:-0}" -eq 0 ]]; then
- einfo "not running failing tests RUN_FAILING_TESTS=${RUN_FAILING_TESTS}"
- CMAKE_SKIP_TESTS+=(
- # Does try to import from weird paths
- "^io_fbx_import$"
- )
- fi
-
- if ! has_version "media-libs/openusd"; then
- CMAKE_SKIP_TESTS+=(
- # from pxr import Usd # ModuleNotFoundError: No module named 'pxr'
- "^script_bundled_modules$"
- )
- fi
-
- if has_version ">=media-video/ffmpeg-8"; then
- CMAKE_SKIP_TESTS+=(
- # output change TODO
- "^sequencer_render_video_output$"
- )
- fi
-
- # For debugging, print out all information.
- local -x VERBOSE="$(usex debug "true" "false")"
- "${VERBOSE}" && einfo "VERBOSE=${VERBOSE}"
-
- local -x DEBUG="$(usex debug "true" "false")"
- "${DEBUG}" && einfo "DEBUG=${DEBUG}"
-
- # Show the window in the foreground.
- # local -x USE_WINDOW="true" # non-zero
- [[ -v USE_WINDOW ]] && einfo "USE_WINDOW=${USE_WINDOW}"
-
- # local -x USE_DEBUG="true" # non-zero
- [[ -v USE_DEBUG ]] && einfo "USE_DEBUG=${USE_DEBUG}"
-
- # Environment OPENIMAGEIO_CUDA=0 trumps everything else, turns off
- # Cuda functionality. We don't even initialize in this case.
- local -x OPENIMAGEIO_CUDA=0
-
- # Needed if openimageio wasn't build with -DNDEBUG
- local -x OPENIMAGEIO_DEBUG=0
-
- local -x CYCLESTEST_ARGS="-t 0"
-
- if [[ "${EXPENSIVE_TESTS:-0}" -gt 0 ]]; then
- einfo "running expensive tests EXPENSIVE_TESTS=${EXPENSIVE_TESTS}"
- if [[ "${PV}" == *9999* && "${BVC}" == "alpha" ]] &&
- use experimental && use wayland; then
- # This runs weston
- xdg_environment_reset
- fi
-
- if [[ "${USE_WINDOW}" == "true" ]]; then
- xdg_environment_reset
- # WITH_GPU_RENDER_TESTS_HEADED
- if use wayland; then
- local compositor exit_code
- local logfile=${T}/weston.log
- weston --xwayland --backend=headless --width=800 --height=600 --socket=wayland-5 --idle-time=0 2>"${logfile}" &
- compositor=$!
- local -x WAYLAND_DISPLAY=wayland-5
- sleep 1 # wait for xwayland to be up
- # TODO use eapi9-pipestatus
- local -x DISPLAY="$(grep "xserver listening on display" "${logfile}" | cut -d ' ' -f 5)"
-
- cmake_src_test
-
- exit_code=$?
- kill "${compositor}"
- elif use X; then
- virtx cmake_src_test
- fi
- else
- cmake_src_test
- fi
- else
- cmake_src_test
- fi
-
- # 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)
- local -x BLENDER_SYSTEM_RESOURCES="${ED}/usr/share/blender/${BV}"
-
- # Workaround for binary drivers. # TODO
- addpredict /dev/ati
- addpredict /dev/dri
- addpredict /dev/nvidiactl
-
- cd "${CMAKE_USE_DIR}/doc/doxygen" || die
- sed -e "/^NUM_PROC_THREADS/s/1/$(makeopts_jobs)/" -i Doxyfile || die
- edob -m "Generating Blender C/C++ API docs ..." doxygen -u Doxyfile
- edob -m "Building API docs" doxygen
-
- cd "${CMAKE_USE_DIR}" || die
- einfo "Generating (BPY) Blender Python API docs ..."
- edo "${BUILD_DIR}"/bin/blender --background --python "doc/python_api/sphinx_doc_gen.py" -noaudio
-
- edo sphinx-build -j "$(makeopts_jobs)" doc/python_api/sphinx-in doc/python_api/BPY_API
-
- cd "${CMAKE_USE_DIR}" || die
- docinto "html/API/python"
- dodoc -r "doc/python_api/BPY_API/"
-
- docinto "html/API/blender"
- dodoc -r "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 "blender-thumbnailer version rename failed"
- mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die "blender version rename failed"
-}
-
-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 && ! has_version "media-libs/mesa[${LLVM_USEDEP}]"; 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
-
- 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
-
- if [[ -z "${REPLACED_BY_VERSION}" ]]; then
- ewarn
- ewarn "You may want to remove the following directories"
- ewarn "- ~/.config/${PN}/${BV}/cache/"
- ewarn "- ~/.cache/cycles/"
- ewarn "It may contain extra render kernels not tracked by portage"
- ewarn
- fi
-}
-
-pkg_info () {
- debugvars () {
- local var
- for var in "${@}"; do
- [[ -v "${var}" ]] && echo "${var}: ${!var}"
- done
- }
-
- local blender_info_vars=(
- CUDACXX
- CUDAHOSTCXX
- CUDAHOSTLD
- CUDAARCHS
- CUDAFLAGS
- CUDA_PATH
- CUDA_VERBOSE
- NVCCFLAGS
- NVCC_PREPEND_FLAGS
- NVCC_APPPEND_FLAGS
- )
-
- debugvars "${blender_info_vars[@]}"
-}
diff --git a/media-gfx/blender/blender-5.0.9999.ebuild b/media-gfx/blender/blender-5.0.9999.ebuild
deleted file mode 100644
index 975e45a22bbe..000000000000
--- a/media-gfx/blender/blender-5.0.9999.ebuild
+++ /dev/null
@@ -1,948 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# shellcheck disable=SC2207
-
-# TODO
-# - Package Hydra
-# https://github.com/Ray-Tracing-Systems/HydraCore
-# https://github.com/Ray-Tracing-Systems/HydraAPI
-# - Package USD
-# https://github.com/PixarAnimationStudios/OpenUSD
-# - Package MaterialX
-# https://github.com/AcademySoftwareFoundation/MaterialX
-# - Package Draco
-# https://github.com/google/draco
-# - Package Audaspace
-# https://github.com/neXyon/audaspace
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-# NOTE must match media-libs/osl
-LLVM_COMPAT=( {20..20} )
-LLVM_OPTIONAL=1
-
-ROCM_SKIP_GLOBALS=1
-
-inherit cuda rocm llvm-r2 edo
-inherit eapi9-pipestatus check-reqs flag-o-matic multiprocessing pax-utils python-single-r1 toolchain-funcs virtualx
-inherit cmake xdg-utils
-
-DESCRIPTION="3D Creation/Animation/Publishing System"
-HOMEPAGE="https://www.blender.org"
-
-# NOTE BLENDER_VERSION
-# https://projects.blender.org/blender/blender/src/branch/main/source/blender/blenkernel/BKE_blender_version.h
-BLENDER_BRANCH="$(ver_cut 1-2)"
-
-if [[ "${PV}" == *9999* ]]; then
- EGIT_LFS="yes"
- inherit git-r3
- EGIT_REPO_URI="https://projects.blender.org/blender/blender.git"
- EGIT_SUBMODULES=( '*' '-lib/*' )
- # using shallow causes long wait times.
- EGIT_LFS_CLONE_TYPE="single"
-
- if [[ "${PV}" == 9999* ]]; then
- EGIT_BRANCH="main"
- else
- EGIT_BRANCH="blender-v${BLENDER_BRANCH}-release"
- fi
-
-else
- SRC_URI="
- https://download.blender.org/source/${P}.tar.xz
- test? (
- https://download.blender.org/source/blender-test-data-${BLENDER_BRANCH}.0.tar.xz
- )
- "
- KEYWORDS="~amd64 ~arm64"
-fi
-
-# assets is CC0-1.0
-LICENSE="GPL-3+ cycles? ( Apache-2.0 ) CC0-1.0"
-SLOT="${BLENDER_BRANCH}"
-
-# NOTE +openpgl breaks on very old amd64 hardware
-# potentially mirror cpu_flags_x86 + REQUIRED_USE
-IUSE="
- alembic +bullet +color-management cuda +cycles +cycles-bin-kernels
- debug doc +embree +ffmpeg +fftw +fluid +gmp gnome hip hiprt jack
- jemalloc jpeg2k man +manifold +nanovdb ndof nls +oidn openal +openexr +opengl +openpgl
- +opensubdiv +openvdb optix osl pipewire +pdf +potrace +pugixml pulseaudio
- renderdoc +rubberband sdl +sndfile +tbb test +tiff +truetype valgrind vulkan wayland +webp X
-"
-
-if [[ "${PV}" == *9999* ]]; then
- IUSE+="experimental"
-fi
-
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}
- || ( opengl vulkan )
- alembic? ( openexr )
- cuda? ( cycles )
- cycles? ( openexr tiff tbb )
- fluid? ( tbb )
- gnome? ( wayland )
- hip? ( cycles )
- hiprt? ( hip )
- nanovdb? ( openvdb )
- openvdb? ( tbb openexr )
- optix? ( cuda )
- osl? ( cycles pugixml )
- test? (
- color-management
- jpeg2k
- )
-"
-
-# 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-cpp/gflags:=
- dev-cpp/glog:=
- dev-libs/boost:=[nls?]
- $(python_gen_cond_dep '
- dev-python/cattrs[${PYTHON_USEDEP}]
- dev-python/cython[${PYTHON_USEDEP}]
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/zstandard[${PYTHON_USEDEP}]
- ')
- >=media-libs/freetype-2.13.3:=[brotli]
- media-libs/libepoxy:=
- media-libs/libjpeg-turbo:=
- >=media-libs/libpng-1.6.50:=
- media-libs/libsamplerate
- >=media-libs/openimageio-3.0.9.1:=
- virtual/glu
- virtual/libintl
- virtual/opengl[X?]
- virtual/zlib:=
- alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] )
- bullet? ( sci-physics/bullet:=[double-precision] )
- color-management? ( >=media-libs/opencolorio-2.4.2:= )
- 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=[threads] )
- gmp? ( dev-libs/gmp:=[cxx] )
- gnome? ( gui-libs/libdecor )
- hip? (
- >=dev-util/hip-6.0:=
- hiprt? (
- dev-libs/hiprt:2.5=
- )
- )
- jack? ( virtual/jack )
- jemalloc? ( dev-libs/jemalloc:= )
- jpeg2k? ( >=media-libs/openjpeg-2.5.3:2= )
- manifold? ( >=sci-mathematics/manifold-3.2.1:= )
- ndof? (
- app-misc/spacenavd
- dev-libs/libspnav
- )
- nls? ( virtual/libiconv )
- openal? ( media-libs/openal )
- oidn? ( >=media-libs/oidn-2.1.0:= )
- openexr? (
- >=dev-libs/imath-3.1.7:=
- >=media-libs/openexr-3.3.5:0=
- )
- openpgl? ( media-libs/openpgl:= )
- opensubdiv? ( >=media-libs/opensubdiv-3.6.0-r2:=[opengl,cuda?,tbb?] )
- openvdb? (
- >=media-gfx/openvdb-11.0.0:=[nanovdb?]
- dev-libs/c-blosc:=
- )
- optix? (
- >=dev-libs/optix-8:=
- osl? (
- >=media-libs/osl-1.14[clang-cuda]
- )
- )
- osl? (
- >=media-libs/osl-1.14.7.0:=[${LLVM_USEDEP}]
- media-libs/mesa[${LLVM_USEDEP}]
- )
- pipewire? ( >=media-video/pipewire-1.1.0:= )
- pdf? ( >=media-libs/libharu-2.4.5:= )
- potrace? ( media-gfx/potrace )
- pugixml? ( dev-libs/pugixml )
- pulseaudio? ( media-libs/libpulse )
- rubberband? ( >=media-libs/rubberband-4.0.0:= )
- 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.24.0
- >=dev-libs/wayland-protocols-1.15
- >=x11-libs/libxkbcommon-0.2.0
- dev-util/wayland-scanner
- media-libs/mesa[wayland]
- sys-apps/dbus
- )
- webp? ( media-libs/libwebp:= )
- vulkan? (
- media-libs/shaderc
- dev-util/spirv-tools
- dev-util/glslang
- media-libs/vulkan-loader
- )
- truetype? (
- media-libs/harfbuzz
- )
- renderdoc? (
- media-gfx/renderdoc
- )
- X? (
- x11-libs/libX11
- x11-libs/libXfixes
- x11-libs/libXi
- x11-libs/libXxf86vm
- )
-"
-
-DEPEND="${RDEPEND}
- dev-cpp/eigen:=
- test? (
- $(python_gen_cond_dep '
- media-libs/openimageio[jpeg2k,python,${PYTHON_SINGLE_USEDEP},tools]
- ')
- )
-"
-
-if [[ "${PV}" == *9999* ]]; then
-DEPEND+="
- test? (
- experimental? (
- wayland? (
- dev-libs/weston
- )
- )
- )
-"
-fi
-
-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
- )
- vulkan? (
- dev-util/spirv-headers
- dev-util/vulkan-headers
- )
- nls? ( sys-devel/gettext )
- wayland? (
- dev-util/wayland-scanner
- )
- X? (
- x11-base/xorg-proto
- )
-"
-
-PATCHES=(
- "${FILESDIR}/${PN}-5.0.0-FindClang.patch"
- "${FILESDIR}/${PN}-4.1.1-FindLLVM.patch"
- "${FILESDIR}/${PN}-4.1.1-numpy.patch"
- "${FILESDIR}/${PN}-4.3.2-system-glog.patch"
- "${FILESDIR}/${PN}-5.0.0-osd-omp-link.patch"
-)
-
-blender_check_requirements() {
- if use doc; then
- CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend
- fi
-}
-
-blender_get_version() {
- if [[ -n "${BV}" && -n "${BVC}" ]]; then
- return
- fi
-
- local status
- # Get blender version from blender itself.
- # mirrors build_files/cmake/macros.cmake function(get_blender_version)
- # NOTE maps x0y to x.y
- # TODO this can potentially break for x > 9 and y > 9
- BV="$(grep "define BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION, (PIPESTATUS: ${status})"
- BV="$(printf "%d.%d" "${BV:0: -2}" "${BV: -2}")"
-
- if [[ "${PV}" != 9999* && "${BLENDER_BRANCH}" != "${BV}" ]]; then
- eerror "ebuild (${BLENDER_BRANCH}) and code (${BV}) version mismatch"
- die "blender_get_version"
- fi
-
- BVC="$(grep "define BLENDER_VERSION_CYCLE " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION_CYCLE, (PIPESTATUS: ${status})"
-}
-
-pkg_pretend() {
- blender_check_requirements
-}
-
-pkg_setup() {
- blender_check_requirements
- python-single-r1_pkg_setup
-
- if use osl; then
- llvm-r2_pkg_setup
- fi
-}
-
-src_unpack() {
- if [[ "${PV}" == *9999* ]]; then
- if ! use test; then
- EGIT_SUBMODULES+=( '-tests/*' )
- fi
- git-r3_src_unpack
- else
- default
-
- # TODO
- if use test && [[ ${PV} != ${SLOT}.0 ]] ; then
- mv "blender-${BLENDER_BRANCH}.0/tests/"* "${S}/tests" || die
- rmdir -p "blender-${BLENDER_BRANCH}.0/tests/" || die
- fi
- fi
-
- # clear cmake_minimum_required
- rm -R "${S}/build_files/build_environment/patches" || die
-}
-
-src_prepare() {
- use cuda && cuda_src_prepare
-
- cmake_src_prepare
-
- blender_get_version
-
- # 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 "/CMAKE_INSTALL_PREFIX_WITH_CONFIG/{s|\${CMAKE_INSTALL_PREFIX}|${T%/}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i CMakeLists.txt \
- || die CMAKE_INSTALL_PREFIX_WITH_CONFIG
-
- # WITH_SYSTEM_GLOG=yes
- cmake_run_in extern cmake_comment_add_subdirectory glog
-
- 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" \
- || die
-
- sed \
- -e "s#\(set(cycles_kernel_runtime_lib_target_path \)\${cycles_kernel_runtime_lib_target_path}\(/lib)\)#\1\${CYCLES_INSTALL_PATH}\2#" \
- -i intern/cycles/kernel/CMakeLists.txt \
- || die
-
- if use hip; then
- # fix hardcoded path
- sed \
- -e "s#opt/rocm/hip/bin#$(hipconfig -p)/bin#g" \
- -i extern/hipew/src/hipew.c \
- || die
- fi
-
- 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 "/string(REPLACE.*TEST_INSTALL_DIR/{s|\${CMAKE_INSTALL_PREFIX}|${T}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i "build_files/cmake/testing.cmake" \
- || die "REPLACE.*TEST_INSTALL_DIR"
-
- sed -e '1i #include <cstdint>' -i extern/gtest/src/gtest-death-test.cc || die
- else
- cmake_comment_add_subdirectory tests
- fi
-
- rm -rf extern/gflags || die
-
- # Use slotted libhiprt64
- sed \
- -e "s|\"libhiprt64.so\"|\"${ESYSROOT}/usr/lib/hiprt/2.5/$(get_libdir)/libhiprt64.so\"|" \
- -i extern/hipew/src/hiprtew.cc || die
-}
-
-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=(
- # we build a host-specific binary
- -DWITH_CPU_CHECK="no"
-
- -DWITH_STRICT_BUILD_OPTIONS="yes"
- -DWITH_LIBS_PRECOMPILED="no"
- -DBUILD_SHARED_LIBS="no" # quadriflow only?
- -DWITH_STATIC_LIBS=OFF
-
- # Build Options:
- -DWITH_ALEMBIC="$(usex alembic)"
- -DWITH_BOOST="yes"
- -DWITH_BULLET="$(usex bullet)"
- -DWITH_CYCLES="$(usex cycles)"
- -DWITH_DOC_MANPAGE="$(usex man)"
- -DWITH_FFTW3="$(usex fftw)"
- -DWITH_GMP="$(usex gmp)"
- -DWITH_GTESTS="$(usex test)"
- -DWITH_HARFBUZZ="$(usex truetype)"
- -DWITH_HARU="$(usex pdf)"
- -DWITH_HEADLESS="$(usex !X "$(usex !wayland)")"
- -DWITH_INPUT_NDOF="$(usex ndof)"
- -DWITH_INTERNATIONAL="$(usex nls)"
- -DWITH_MANIFOLD="$(usex manifold)"
- -DWITH_MATERIALX="no" # TODO: Package MaterialX
- -DWITH_NANOVDB="$(usex nanovdb)"
- -DWITH_OPENCOLORIO="$(usex color-management)"
- -DWITH_OPENGL_BACKEND="$(usex opengl)"
- -DWITH_OPENIMAGEDENOISE="$(usex oidn)"
- -DWITH_OPENSUBDIV="$(usex opensubdiv)"
- -DWITH_OPENVDB="$(usex openvdb)"
- -DWITH_OPENVDB_BLOSC="$(usex openvdb)"
- -DWITH_POTRACE="$(usex potrace)"
- -DWITH_PUGIXML="$(usex pugixml)"
- # -DWITH_QUADRIFLOW=ON
- -DWITH_RENDERDOC="$(usex renderdoc)"
- -DWITH_TBB="$(usex tbb)"
- -DWITH_UNITY_BUILD="no"
- -DWITH_USD="no" # TODO: Package USD
- -DWITH_VULKAN_BACKEND="$(usex vulkan)"
- -DWITH_XR_OPENXR="no"
-
- -DWITH_SYSTEM_BULLET="yes"
- -DWITH_SYSTEM_EIGEN3="yes"
- -DWITH_SYSTEM_FREETYPE="yes"
- -DWITH_SYSTEM_GFLAGS="yes"
- -DWITH_SYSTEM_GLOG="yes"
-
- # Compiler Options:
- # -DWITH_BUILDINFO="yes"
-
- # System Options:
- -DWITH_INSTALL_PORTABLE="no"
- -DWITH_MEM_JEMALLOC="$(usex jemalloc)"
- -DWITH_MEM_VALGRIND="$(usex valgrind)"
-
- # GHOST Options:
- -DWITH_GHOST_WAYLAND="$(usex wayland)"
- # -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" # only visible with use wayland. see below
- -DWITH_GHOST_WAYLAND_DYNLOAD="no"
- -DWITH_GHOST_X11="$(usex X)"
- # -DWITH_GHOST_XDND=ON
- # -DWITH_X11_XFIXES=ON
- # -DWITH_X11_XINPUT=ON
- # -DWITH_GHOST_WAYLAND_DYNLOAD # visible wayland?
- # -DWITH_GHOST_WAYLAND_LIBDECOR # visible wayland?
-
- # Image Formats:
- # -DWITH_IMAGE_CINEON=ON
- -DWITH_IMAGE_OPENEXR="$(usex openexr)"
- -DWITH_IMAGE_OPENJPEG="$(usex jpeg2k)"
- -DWITH_IMAGE_WEBP="$(usex webp)" # unlisted
-
- # Audio:
- # -DWITH_AUDASPACE=OFF
- # -DWITH_SYSTEM_AUDASPACE=OFF
- -DWITH_CODEC_FFMPEG="$(usex ffmpeg)"
- -DWITH_CODEC_SNDFILE="$(usex sndfile)"
- # -DWITH_COREAUDIO=OFF
- -DWITH_JACK="$(usex jack)"
- # -DWITH_JACK_DYNLOAD=
- -DWITH_OPENAL="$(usex openal)"
- -DWITH_PIPEWIRE="$(usex pipewire)"
- # -DWITH_PIPEWIRE_DYNLOAD=
- -DWITH_PULSEAUDIO="$(usex pulseaudio)"
- # -DWITH_PULSEAUDIO_DYNLOAD=
- -DWITH_SDL="$(usex sdl)"
- # -DWITH_WASAPI=OFF
-
- # Python:
- # -DWITH_PYTHON=ON
- -DWITH_PYTHON_INSTALL="no"
- -DWITH_PYTHON_INSTALL_NUMPY="no"
- -DWITH_PYTHON_INSTALL_ZSTANDARD="no"
- # -DWITH_PYTHON_MODULE="no"
- -DWITH_PYTHON_SECURITY="yes"
- -DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
- -DPYTHON_LIBRARY="$(python_get_library_path)"
- -DPYTHON_VERSION="${EPYTHON/python/}"
- -DWITH_DRACO="yes" # TODO: Package Draco # NOTE use bundled for now
-
- # Modifiers:
- -DWITH_MOD_FLUID="$(usex fluid)"
- -DWITH_MOD_OCEANSIM="$(usex fftw)"
- # -DWITH_MOD_REMESH=ON
-
- # Rendering:
- -DWITH_HYDRA="no" # TODO: Package Hydra
-
- # Rendering (Cycles):
- -DWITH_CYCLES_OSL="$(usex osl)"
- -DWITH_CYCLES_EMBREE="$(usex embree)"
- -DWITH_CYCLES_PATH_GUIDING="$(usex openpgl)"
-
- -DWITH_CYCLES_DEVICE_OPTIX="$(usex optix)"
- -DWITH_CYCLES_DEVICE_CUDA="$(usex cuda)"
- -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda "$(usex cycles-bin-kernels)")"
-
- -DWITH_CYCLES_DEVICE_HIP="$(usex hip)"
- -DWITH_CYCLES_HIP_BINARIES="$(usex hip "$(usex cycles-bin-kernels)")"
- -DWITH_CYCLES_DEVICE_HIPRT="$(usex hip "$(usex hiprt)")"
-
- -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra
-
- # -DWITH_CYCLES_STANDALONE=OFF
- # -DWITH_CYCLES_STANDALONE_GUI=OFF
-
- -DWITH_BLENDER_THUMBNAILER="yes"
-
- -DWITH_ASSERT_ABORT="$(usex debug)"
- -DWITH_ASSERT_RELEASE="no" # "$(usex debug)"
-
- # -DWITH_FREESTYLE=ON
- # -DWITH_IK_ITASC=ON
- # -DWITH_IK_SOLVER=ON
- # -DWITH_INPUT_IME=ON
- # -DWITH_LIBMV=ON
- # -DWITH_LIBMV_SCHUR_SPECIALIZATIONS=ON
- # -DWITH_UV_SLIM=ON
- -DWITH_NINJA_POOL_JOBS="yes"
- -DWITH_RUBBERBAND="$(usex rubberband)"
- # -DPOSTINSTALL_SCRIPT:PATH=""
- # -DPOSTCONFIGURE_SCRIPT:PATH=""
- )
-
- 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* && "${BVC}" == "alpha" ]]; then
- mycmakeargs+=(
- # -DWITH_BUILDINFO="no"
- -DWITH_EXPERIMENTAL_FEATURES="$(usex experimental)"
- # -DWITH_COMPILER_ASAN="yes"
- # -DWITH_STRSIZE_DEBUG="yes"
- # -DWITH_CYCLES_NATIVE_ONLY="yes"
- # -DWITH_LIBMV_SCHUR_SPECIALIZATIONS="no"
- # -DWITH_PYTHON_SAFETY="ON" # dev option
-
- )
- else
- mycmakeargs+=(
- -DWITH_BUILDINFO="yes"
- -DWITH_EXPERIMENTAL_FEATURES="OFF"
- -DWITH_PYTHON_SAFETY="OFF"
- )
- fi
-
- if use cuda; then
- # Ease compiling with required gcc similar to cuda_sanitize but for cmake
- if use cycles-bin-kernels; then
- local -x CUDAHOSTCXX="$(cuda_gccdir)"
- local -x CUDAHOSTLD="$(tc-getCXX)"
-
- if [[ -n "${CUDAARCHS}" ]]; then
- mycmakeargs+=(
- -DCYCLES_CUDA_BINARIES_ARCH="$(echo "${CUDAARCHS}" | sed -e 's/^/sm_/g' -e 's/;/;sm_/g')"
- )
- fi
- fi
- fi
-
- if use hip; then
- mycmakeargs+=(
- -DHIP_ROOT_DIR="$(hipconfig -p)"
- -DCYCLES_HIP_BINARIES_ARCH="$(get_amdgpu_flags)"
- )
-
- if use hiprt; then
- mycmakeargs+=(
- -DHIPRT_ROOT_DIR="${ESYSROOT}/usr/lib/hiprt/2.5"
- -DHIPRT_COMPILER_PARALLEL_JOBS="$(makeopts_jobs)"
- )
- fi
- fi
-
- if use optix; then
- mycmakeargs+=(
- -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${ESYSROOT}/opt/optix"
- -DOPTIX_ROOT_DIR="${ESYSROOT}/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
-
- # WITH_ASSERT_RELEASE filters this
- append-cflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
- append-cxxflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
-
- if tc-is-gcc; then
- # We disable these to respect the user's choice of linker.
- mycmakeargs+=(
- -DWITH_LINKER_GOLD="no"
- )
- fi
-
- if use osl; then
- mycmakeargs+=(
- -DWITH_CLANG="yes"
- -DWITH_LLVM="yes"
- -DLLVM_ROOT="$(get_llvm_prefix)"
- -DClang_ROOT="$(get_llvm_prefix)"
- )
- 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" )
- use hiprt && CYCLES_TEST_DEVICES+=( "HIP-RT" )
- fi
- mycmakeargs+=(
- -DCMAKE_INSTALL_PREFIX_WITH_CONFIG="${T%/}/usr"
- -DCYCLES_TEST_DEVICES="$(local IFS=";"; echo "${CYCLES_TEST_DEVICES[*]}")"
- )
-
- # NOTE in lieu of a FEATURE/build_options
- if [[ "${EXPENSIVE_TESTS:-0}" -gt 0 ]]; then
- einfo "running expensive tests EXPENSIVE_TESTS=${EXPENSIVE_TESTS}"
- mycmakeargs+=(
- -DWITH_CYCLES_TEST_OSL="$(usex osl)"
-
- -DWITH_GPU_BACKEND_TESTS="yes"
- -DWITH_GPU_COMPOSITOR_TESTS="yes"
-
- -DWITH_GPU_DRAW_TESTS="yes"
-
- -DWITH_GPU_RENDER_TESTS="yes"
- -DWITH_GPU_RENDER_TESTS_HEADED="yes"
- # -DWITH_GPU_RENDER_TESTS_SILENT="yes"
- -DWITH_GPU_RENDER_TESTS_VULKAN="$(usex vulkan)"
-
- # Run Python script outside Blender, using system default Python3 interpreter,
- # NOT the one specified in `TEST_PYTHON_EXE`.
- -DWITH_SYSTEM_PYTHON_TESTS="yes"
- -DTEST_SYSTEM_PYTHON_EXE="${PYTHON}"
-
- # -DTEST_PYTHON_EXE="${T%/}/${EPYTHON}/bin/python"
-
- # -DWITH_LINUX_OFFICIAL_RELEASE_TESTS="yes" # Not needed?
- )
-
- if [[ "${PV}" == *9999* && "${BVC}" == "alpha" ]] && use experimental; then
- mycmakeargs+=(
- -DWITH_GPU_MESH_PAINT_TESTS="yes"
- # -DWITH_UI_TESTS="$(usex wayland)"
- -DWITH_UI_TESTS="yes"
- -DWITH_TESTS_EXPERIMENTAL="yes"
-
- # Enable user-interface tests using a headless display server.
- # Currently this depends on WITH_GHOST_WAYLAND and the weston compositor (Experimental)
- -DWITH_UI_TESTS_HEADLESS="$(usex !X "$(usex wayland)")"
- -DWESTON_BIN="${ESYSROOT}/usr/bin/weston"
- )
- fi
- else
- mycmakeargs+=(
- -DWITH_GPU_RENDER_TESTS="no"
- )
- fi
- fi
-
- cmake_src_configure
-}
-
-src_test() {
- # A lot of tests need 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, or we won't 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)
- local -x BLENDER_SYSTEM_RESOURCES="${T%/}/usr/share/blender/${BV}"
-
- # Sanity check that the script and datafile path is valid.
- # If they are not valid, blender will fallback to the default path which is not what we want.
- [[ -d "${BLENDER_SYSTEM_RESOURCES}" ]] || die "The custom resources path is invalid, fix the ebuild!"
-
- # TODO only picks first card
- addwrite "/dev/dri/card0"
- addwrite "/dev/dri/renderD128"
-
- [[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
-
- if use cuda; then
- cuda_add_sandbox -w
- addwrite "/proc/self/task"
- addpredict "/dev/char/"
- fi
-
- local -x CMAKE_SKIP_TESTS=(
- "^script_pyapi_bpy_driver_secure_eval$"
- )
-
- if [[ "${RUN_FAILING_TESTS:-0}" -eq 0 ]]; then
- einfo "not running failing tests RUN_FAILING_TESTS=${RUN_FAILING_TESTS}"
- CMAKE_SKIP_TESTS+=(
- # Does try to import from weird paths
- "^io_fbx_import$"
- )
- fi
-
- if ! has_version "media-libs/openusd"; then
- CMAKE_SKIP_TESTS+=(
- # from pxr import Usd # ModuleNotFoundError: No module named 'pxr'
- "^script_bundled_modules$"
- )
- fi
-
- if has_version ">=media-video/ffmpeg-8"; then
- CMAKE_SKIP_TESTS+=(
- # output change TODO
- "^sequencer_render_video_output$"
- )
- fi
-
- # For debugging, print out all information.
- local -x VERBOSE="$(usex debug "true" "false")"
- "${VERBOSE}" && einfo "VERBOSE=${VERBOSE}"
-
- local -x DEBUG="$(usex debug "true" "false")"
- "${DEBUG}" && einfo "DEBUG=${DEBUG}"
-
- # Show the window in the foreground.
- # local -x USE_WINDOW="true" # non-zero
- [[ -v USE_WINDOW ]] && einfo "USE_WINDOW=${USE_WINDOW}"
-
- # local -x USE_DEBUG="true" # non-zero
- [[ -v USE_DEBUG ]] && einfo "USE_DEBUG=${USE_DEBUG}"
-
- # Environment OPENIMAGEIO_CUDA=0 trumps everything else, turns off
- # Cuda functionality. We don't even initialize in this case.
- local -x OPENIMAGEIO_CUDA=0
-
- # Needed if openimageio wasn't build with -DNDEBUG
- local -x OPENIMAGEIO_DEBUG=0
-
- local -x CYCLESTEST_ARGS="-t 0"
-
- if [[ "${EXPENSIVE_TESTS:-0}" -gt 0 ]]; then
- einfo "running expensive tests EXPENSIVE_TESTS=${EXPENSIVE_TESTS}"
- if [[ "${PV}" == *9999* && "${BVC}" == "alpha" ]] &&
- use experimental && use wayland; then
- # This runs weston
- xdg_environment_reset
- fi
-
- if [[ "${USE_WINDOW}" == "true" ]]; then
- xdg_environment_reset
- # WITH_GPU_RENDER_TESTS_HEADED
- if use wayland; then
- local compositor exit_code
- local logfile=${T}/weston.log
- weston --xwayland --backend=headless --width=800 --height=600 --socket=wayland-5 --idle-time=0 2>"${logfile}" &
- compositor=$!
- local -x WAYLAND_DISPLAY=wayland-5
- sleep 1 # wait for xwayland to be up
- # TODO use eapi9-pipestatus
- local -x DISPLAY="$(grep "xserver listening on display" "${logfile}" | cut -d ' ' -f 5)"
-
- cmake_src_test
-
- exit_code=$?
- kill "${compositor}"
- elif use X; then
- virtx cmake_src_test
- fi
- else
- cmake_src_test
- fi
- else
- cmake_src_test
- fi
-
- # 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)
- local -x BLENDER_SYSTEM_RESOURCES="${ED}/usr/share/blender/${BV}"
-
- # Workaround for binary drivers. # TODO
- addpredict /dev/ati
- addpredict /dev/dri
- addpredict /dev/nvidiactl
-
- cd "${CMAKE_USE_DIR}/doc/doxygen" || die
- sed -e "/^NUM_PROC_THREADS/s/1/$(makeopts_jobs)/" -i Doxyfile || die
- edob -m "Generating Blender C/C++ API docs ..." doxygen -u Doxyfile
- edob -m "Building API docs" doxygen
-
- cd "${CMAKE_USE_DIR}" || die
- einfo "Generating (BPY) Blender Python API docs ..."
- edo "${BUILD_DIR}"/bin/blender --background --python "doc/python_api/sphinx_doc_gen.py" -noaudio
-
- edo sphinx-build -j "$(makeopts_jobs)" doc/python_api/sphinx-in doc/python_api/BPY_API
-
- cd "${CMAKE_USE_DIR}" || die
- docinto "html/API/python"
- dodoc -r "doc/python_api/BPY_API/"
-
- docinto "html/API/blender"
- dodoc -r "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 "blender-thumbnailer version rename failed"
- mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die "blender version rename failed"
-}
-
-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 && ! has_version "media-libs/mesa[${LLVM_USEDEP}]"; 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
-
- 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
-
- if [[ -z "${REPLACED_BY_VERSION}" ]]; then
- ewarn
- ewarn "You may want to remove the following directories"
- ewarn "- ~/.config/${PN}/${BV}/cache/"
- ewarn "- ~/.cache/cycles/"
- ewarn "It may contain extra render kernels not tracked by portage"
- ewarn
- fi
-}
-
-pkg_info () {
- debugvars () {
- local var
- for var in "${@}"; do
- [[ -v "${var}" ]] && echo "${var}: ${!var}"
- done
- }
-
- local blender_info_vars=(
- CUDACXX
- CUDAHOSTCXX
- CUDAHOSTLD
- CUDAARCHS
- CUDAFLAGS
- CUDA_PATH
- CUDA_VERBOSE
- NVCCFLAGS
- NVCC_PREPEND_FLAGS
- NVCC_APPPEND_FLAGS
- )
-
- debugvars "${blender_info_vars[@]}"
-}
diff --git a/media-gfx/blender/blender-5.0.0.ebuild b/media-gfx/blender/blender-5.2.1.ebuild
index 975e45a22bbe..3aed680a5876 100644
--- a/media-gfx/blender/blender-5.0.0.ebuild
+++ b/media-gfx/blender/blender-5.2.1.ebuild
@@ -20,7 +20,7 @@ EAPI=8
PYTHON_COMPAT=( python3_{13..14} )
# NOTE must match media-libs/osl
-LLVM_COMPAT=( {20..20} )
+LLVM_COMPAT=( 22 )
LLVM_OPTIONAL=1
ROCM_SKIP_GLOBALS=1
@@ -53,8 +53,10 @@ if [[ "${PV}" == *9999* ]]; then
else
SRC_URI="
https://download.blender.org/source/${P}.tar.xz
+ https://ftp.nluug.nl/pub/graphics/blender/source/${P}.tar.xz
test? (
https://download.blender.org/source/blender-test-data-${BLENDER_BRANCH}.0.tar.xz
+ https://ftp.nluug.nl/pub/graphics/blender/source/blender-test-data-${BLENDER_BRANCH}.0.tar.xz
)
"
KEYWORDS="~amd64 ~arm64"
@@ -67,9 +69,9 @@ SLOT="${BLENDER_BRANCH}"
# NOTE +openpgl breaks on very old amd64 hardware
# potentially mirror cpu_flags_x86 + REQUIRED_USE
IUSE="
- alembic +bullet +color-management cuda +cycles +cycles-bin-kernels
- debug doc +embree +ffmpeg +fftw +fluid +gmp gnome hip hiprt jack
- jemalloc jpeg2k man +manifold +nanovdb ndof nls +oidn openal +openexr +opengl +openpgl
+ alembic +bullet cuda +cycles +cycles-bin-kernels
+ debug doc +embree +ffmpeg +fftw +fluid +gmp hip hiprt jack
+ jpeg2k man +manifold +nanovdb ndof nls +oidn openal +opengl +openpgl
+opensubdiv +openvdb optix osl pipewire +pdf +potrace +pugixml pulseaudio
renderdoc +rubberband sdl +sndfile +tbb test +tiff +truetype valgrind vulkan wayland +webp X
"
@@ -82,19 +84,16 @@ RESTRICT="!test? ( test )"
REQUIRED_USE="${PYTHON_REQUIRED_USE}
|| ( opengl vulkan )
- alembic? ( openexr )
cuda? ( cycles )
- cycles? ( openexr tiff tbb )
+ cycles? ( tiff tbb )
fluid? ( tbb )
- gnome? ( wayland )
hip? ( cycles )
hiprt? ( hip )
nanovdb? ( openvdb )
- openvdb? ( tbb openexr )
+ openvdb? ( tbb )
optix? ( cuda )
osl? ( cycles pugixml )
test? (
- color-management
jpeg2k
)
"
@@ -106,7 +105,8 @@ RDEPEND="${PYTHON_DEPS}
app-arch/zstd
dev-cpp/gflags:=
dev-cpp/glog:=
- dev-libs/boost:=[nls?]
+ >=dev-libs/libfmt-12.1.0:=
+ sci-libs/ceres-solver:=
$(python_gen_cond_dep '
dev-python/cattrs[${PYTHON_USEDEP}]
dev-python/cython[${PYTHON_USEDEP}]
@@ -119,20 +119,19 @@ RDEPEND="${PYTHON_DEPS}
media-libs/libjpeg-turbo:=
>=media-libs/libpng-1.6.50:=
media-libs/libsamplerate
- >=media-libs/openimageio-3.0.9.1:=
+ >=media-libs/openimageio-3.1.7.0:=
virtual/glu
virtual/libintl
virtual/opengl[X?]
virtual/zlib:=
alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] )
bullet? ( sci-physics/bullet:=[double-precision] )
- color-management? ( >=media-libs/opencolorio-2.4.2:= )
+ >=media-libs/opencolorio-2.5.2:=
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=[threads] )
gmp? ( dev-libs/gmp:=[cxx] )
- gnome? ( gui-libs/libdecor )
hip? (
>=dev-util/hip-6.0:=
hiprt? (
@@ -140,7 +139,6 @@ RDEPEND="${PYTHON_DEPS}
)
)
jack? ( virtual/jack )
- jemalloc? ( dev-libs/jemalloc:= )
jpeg2k? ( >=media-libs/openjpeg-2.5.3:2= )
manifold? ( >=sci-mathematics/manifold-3.2.1:= )
ndof? (
@@ -150,14 +148,13 @@ RDEPEND="${PYTHON_DEPS}
nls? ( virtual/libiconv )
openal? ( media-libs/openal )
oidn? ( >=media-libs/oidn-2.1.0:= )
- openexr? (
- >=dev-libs/imath-3.1.7:=
- >=media-libs/openexr-3.3.5:0=
- )
+ >=dev-libs/imath-3.1.7:=
+ >=media-libs/openexr-3.3.5:0=
openpgl? ( media-libs/openpgl:= )
opensubdiv? ( >=media-libs/opensubdiv-3.6.0-r2:=[opengl,cuda?,tbb?] )
openvdb? (
- >=media-gfx/openvdb-11.0.0:=[nanovdb?]
+ >=media-gfx/openvdb-12.0.1:=[nanovdb?]
+ nanovdb? ( >=media-gfx/openvdb-12.0.1-r1 )
dev-libs/c-blosc:=
)
optix? (
@@ -167,7 +164,7 @@ RDEPEND="${PYTHON_DEPS}
)
)
osl? (
- >=media-libs/osl-1.14.7.0:=[${LLVM_USEDEP}]
+ >=media-libs/osl-1.15.6.0:=[python,${LLVM_USEDEP},${PYTHON_SINGLE_USEDEP}]
media-libs/mesa[${LLVM_USEDEP}]
)
pipewire? ( >=media-video/pipewire-1.1.0:= )
@@ -176,7 +173,7 @@ RDEPEND="${PYTHON_DEPS}
pugixml? ( dev-libs/pugixml )
pulseaudio? ( media-libs/libpulse )
rubberband? ( >=media-libs/rubberband-4.0.0:= )
- sdl? ( media-libs/libsdl2[sound,joystick] )
+ sdl? ( media-libs/libsdl3 )
sndfile? ( media-libs/libsndfile )
tbb? ( dev-cpp/tbb:= )
tiff? ( media-libs/tiff:= )
@@ -211,7 +208,7 @@ RDEPEND="${PYTHON_DEPS}
"
DEPEND="${RDEPEND}
- dev-cpp/eigen:=
+ >=dev-cpp/eigen-3.4:3=
test? (
$(python_gen_cond_dep '
media-libs/openimageio[jpeg2k,python,${PYTHON_SINGLE_USEDEP},tools]
@@ -256,11 +253,11 @@ BDEPEND="
"
PATCHES=(
- "${FILESDIR}/${PN}-5.0.0-FindClang.patch"
+ "${FILESDIR}/${PN}-5.2.1-osl-python-types.patch"
+ "${FILESDIR}/${PN}-5.2.1-eigen-3.4.patch"
+ "${FILESDIR}/${PN}-5.2.1-FindClang.patch"
"${FILESDIR}/${PN}-4.1.1-FindLLVM.patch"
- "${FILESDIR}/${PN}-4.1.1-numpy.patch"
- "${FILESDIR}/${PN}-4.3.2-system-glog.patch"
- "${FILESDIR}/${PN}-5.0.0-osd-omp-link.patch"
+ "${FILESDIR}/${PN}-5.2.1-osd-omp-link.patch"
)
blender_check_requirements() {
@@ -354,11 +351,11 @@ src_prepare() {
# WITH_SYSTEM_GLOG=yes
cmake_run_in extern cmake_comment_add_subdirectory glog
- mv \
+ cp \
"release/freedesktop/icons/scalable/apps/blender.svg" \
"release/freedesktop/icons/scalable/apps/blender-${BV}.svg" \
|| die
- mv \
+ cp \
"release/freedesktop/icons/symbolic/apps/blender-symbolic.svg" \
"release/freedesktop/icons/symbolic/apps/blender-${BV}-symbolic.svg" \
|| die
@@ -399,10 +396,6 @@ src_prepare() {
rm -rf extern/gflags || die
- # Use slotted libhiprt64
- sed \
- -e "s|\"libhiprt64.so\"|\"${ESYSROOT}/usr/lib/hiprt/2.5/$(get_libdir)/libhiprt64.so\"|" \
- -i extern/hipew/src/hiprtew.cc || die
}
src_configure() {
@@ -428,7 +421,6 @@ src_configure() {
# Build Options:
-DWITH_ALEMBIC="$(usex alembic)"
- -DWITH_BOOST="yes"
-DWITH_BULLET="$(usex bullet)"
-DWITH_CYCLES="$(usex cycles)"
-DWITH_DOC_MANPAGE="$(usex man)"
@@ -443,7 +435,6 @@ src_configure() {
-DWITH_MANIFOLD="$(usex manifold)"
-DWITH_MATERIALX="no" # TODO: Package MaterialX
-DWITH_NANOVDB="$(usex nanovdb)"
- -DWITH_OPENCOLORIO="$(usex color-management)"
-DWITH_OPENGL_BACKEND="$(usex opengl)"
-DWITH_OPENIMAGEDENOISE="$(usex oidn)"
-DWITH_OPENSUBDIV="$(usex opensubdiv)"
@@ -460,7 +451,6 @@ src_configure() {
-DWITH_XR_OPENXR="no"
-DWITH_SYSTEM_BULLET="yes"
- -DWITH_SYSTEM_EIGEN3="yes"
-DWITH_SYSTEM_FREETYPE="yes"
-DWITH_SYSTEM_GFLAGS="yes"
-DWITH_SYSTEM_GLOG="yes"
@@ -470,7 +460,6 @@ src_configure() {
# System Options:
-DWITH_INSTALL_PORTABLE="no"
- -DWITH_MEM_JEMALLOC="$(usex jemalloc)"
-DWITH_MEM_VALGRIND="$(usex valgrind)"
# GHOST Options:
@@ -482,11 +471,9 @@ src_configure() {
# -DWITH_X11_XFIXES=ON
# -DWITH_X11_XINPUT=ON
# -DWITH_GHOST_WAYLAND_DYNLOAD # visible wayland?
- # -DWITH_GHOST_WAYLAND_LIBDECOR # visible wayland?
# Image Formats:
# -DWITH_IMAGE_CINEON=ON
- -DWITH_IMAGE_OPENEXR="$(usex openexr)"
-DWITH_IMAGE_OPENJPEG="$(usex jpeg2k)"
-DWITH_IMAGE_WEBP="$(usex webp)" # unlisted
@@ -516,7 +503,8 @@ src_configure() {
-DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
-DPYTHON_LIBRARY="$(python_get_library_path)"
-DPYTHON_VERSION="${EPYTHON/python/}"
- -DWITH_DRACO="yes" # TODO: Package Draco # NOTE use bundled for now
+ -DWITH_DRACO="no" # No longer bundled; package Draco separately.
+ -DWITH_MESHOPTIMIZER="no" # Package meshoptimizer separately.
# Modifiers:
-DWITH_MOD_FLUID="$(usex fluid)"
@@ -627,7 +615,6 @@ src_configure() {
if use wayland; then
mycmakeargs+=(
-DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}"
- -DWITH_GHOST_WAYLAND_LIBDECOR="$(usex gnome)"
)
fi
@@ -638,12 +625,6 @@ src_configure() {
append-cflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
append-cxxflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
- if tc-is-gcc; then
- # We disable these to respect the user's choice of linker.
- mycmakeargs+=(
- -DWITH_LINKER_GOLD="no"
- )
- fi
if use osl; then
mycmakeargs+=(
@@ -680,7 +661,6 @@ src_configure() {
-DWITH_GPU_RENDER_TESTS="yes"
-DWITH_GPU_RENDER_TESTS_HEADED="yes"
- # -DWITH_GPU_RENDER_TESTS_SILENT="yes"
-DWITH_GPU_RENDER_TESTS_VULKAN="$(usex vulkan)"
# Run Python script outside Blender, using system default Python3 interpreter,
diff --git a/media-gfx/blender/blender-9999.ebuild b/media-gfx/blender/blender-9999.ebuild
deleted file mode 100644
index 8e47369dbe61..000000000000
--- a/media-gfx/blender/blender-9999.ebuild
+++ /dev/null
@@ -1,942 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# shellcheck disable=SC2207
-
-# TODO
-# - Package Hydra
-# https://github.com/Ray-Tracing-Systems/HydraCore
-# https://github.com/Ray-Tracing-Systems/HydraAPI
-# - Package USD
-# https://github.com/PixarAnimationStudios/OpenUSD
-# - Package MaterialX
-# https://github.com/AcademySoftwareFoundation/MaterialX
-# - Package Draco
-# https://github.com/google/draco
-# - Package Audaspace
-# https://github.com/neXyon/audaspace
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-# NOTE must match media-libs/osl
-LLVM_COMPAT=( {20..20} )
-LLVM_OPTIONAL=1
-
-ROCM_SKIP_GLOBALS=1
-
-inherit cuda rocm llvm-r2 edo
-inherit eapi9-pipestatus check-reqs flag-o-matic multiprocessing pax-utils python-single-r1 toolchain-funcs virtualx
-inherit cmake xdg-utils
-
-DESCRIPTION="3D Creation/Animation/Publishing System"
-HOMEPAGE="https://www.blender.org"
-
-# NOTE BLENDER_VERSION
-# https://projects.blender.org/blender/blender/src/branch/main/source/blender/blenkernel/BKE_blender_version.h
-BLENDER_BRANCH="$(ver_cut 1-2)"
-
-if [[ "${PV}" == *9999* ]]; then
- EGIT_LFS="yes"
- inherit git-r3
- EGIT_REPO_URI="https://projects.blender.org/blender/blender.git"
- EGIT_SUBMODULES=( '*' '-lib/*' )
- # using shallow causes long wait times.
- EGIT_LFS_CLONE_TYPE="single"
-
- if [[ "${PV}" == 9999* ]]; then
- EGIT_BRANCH="main"
- else
- EGIT_BRANCH="blender-v${BLENDER_BRANCH}-release"
- fi
-
-else
- SRC_URI="
- https://download.blender.org/source/${P}.tar.xz
- test? (
- https://download.blender.org/source/blender-test-data-${BLENDER_BRANCH}.0.tar.xz
- )
- "
- KEYWORDS="~amd64 ~arm64"
-fi
-
-# assets is CC0-1.0
-LICENSE="GPL-3+ cycles? ( Apache-2.0 ) CC0-1.0"
-SLOT="${BLENDER_BRANCH}"
-
-# NOTE +openpgl breaks on very old amd64 hardware
-# potentially mirror cpu_flags_x86 + REQUIRED_USE
-IUSE="
- alembic +bullet +color-management cuda +cycles +cycles-bin-kernels
- debug doc +embree +ffmpeg +fftw +fluid +gmp gnome hip hiprt jack
- jemalloc jpeg2k man +manifold +nanovdb ndof nls +oidn openal +openexr +opengl +openpgl
- +opensubdiv +openvdb optix osl pipewire +pdf +potrace +pugixml pulseaudio
- renderdoc +rubberband sdl +sndfile +tbb test +tiff +truetype valgrind vulkan wayland +webp X
-"
-
-if [[ "${PV}" == *9999* ]]; then
- IUSE+="experimental"
-fi
-
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}
- || ( opengl vulkan )
- alembic? ( openexr )
- cuda? ( cycles )
- cycles? ( openexr tiff tbb )
- fluid? ( tbb )
- gnome? ( wayland )
- hip? ( cycles )
- hiprt? ( hip )
- nanovdb? ( openvdb )
- openvdb? ( tbb openexr )
- optix? ( cuda )
- osl? ( cycles pugixml )
- test? (
- color-management
- jpeg2k
- )
-"
-
-# 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-cpp/gflags:=
- dev-cpp/glog:=
- dev-libs/boost:=[nls?]
- $(python_gen_cond_dep '
- dev-python/cattrs[${PYTHON_USEDEP}]
- dev-python/cython[${PYTHON_USEDEP}]
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/zstandard[${PYTHON_USEDEP}]
- ')
- >=media-libs/freetype-2.13.3:=[brotli]
- media-libs/libepoxy:=
- media-libs/libjpeg-turbo:=
- >=media-libs/libpng-1.6.50:=
- media-libs/libsamplerate
- >=media-libs/openimageio-3.0.9.1:=[python,${PYTHON_SINGLE_USEDEP}]
- virtual/glu
- virtual/libintl
- virtual/opengl[X?]
- virtual/zlib:=
- alembic? ( >=media-gfx/alembic-1.8.3-r2[boost(+),hdf(+)] )
- bullet? ( sci-physics/bullet:=[double-precision] )
- color-management? ( >=media-libs/opencolorio-2.4.2:= )
- 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=[threads] )
- gmp? ( dev-libs/gmp:=[cxx] )
- hip? (
- >=dev-util/hip-6.0:=
- hiprt? (
- dev-libs/hiprt:2.5=
- )
- )
- jack? ( virtual/jack )
- jemalloc? ( dev-libs/jemalloc:= )
- jpeg2k? ( >=media-libs/openjpeg-2.5.3:2= )
- manifold? ( >=sci-mathematics/manifold-3.2.1:= )
- ndof? (
- app-misc/spacenavd
- dev-libs/libspnav
- )
- nls? ( virtual/libiconv )
- openal? ( media-libs/openal )
- oidn? ( >=media-libs/oidn-2.1.0:= )
- openexr? (
- >=dev-libs/imath-3.1.7:=
- >=media-libs/openexr-3.3.5:0=
- )
- openpgl? ( media-libs/openpgl:= )
- opensubdiv? ( >=media-libs/opensubdiv-3.6.0-r2:=[opengl,cuda?,tbb?] )
- openvdb? (
- >=media-gfx/openvdb-11.0.0:=[nanovdb?]
- dev-libs/c-blosc:=
- )
- optix? (
- >=dev-libs/optix-8:=
- osl? (
- >=media-libs/osl-1.14[clang-cuda]
- )
- )
- osl? (
- >=media-libs/osl-1.14.7.0:=[${LLVM_USEDEP}]
- media-libs/mesa[${LLVM_USEDEP}]
- )
- pipewire? ( >=media-video/pipewire-1.1.0:= )
- pdf? ( >=media-libs/libharu-2.4.5:= )
- potrace? ( media-gfx/potrace )
- pugixml? ( dev-libs/pugixml )
- pulseaudio? ( media-libs/libpulse )
- rubberband? ( >=media-libs/rubberband-4.0.0:= )
- 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.24.0
- >=dev-libs/wayland-protocols-1.15
- >=x11-libs/libxkbcommon-0.2.0
- dev-util/wayland-scanner
- media-libs/mesa[wayland]
- sys-apps/dbus
- )
- webp? ( media-libs/libwebp:= )
- vulkan? (
- media-libs/shaderc
- dev-util/spirv-tools
- dev-util/glslang
- media-libs/vulkan-loader
- )
- truetype? (
- media-libs/harfbuzz
- )
- renderdoc? (
- media-gfx/renderdoc
- )
- X? (
- x11-libs/libX11
- x11-libs/libXfixes
- x11-libs/libXi
- x11-libs/libXxf86vm
- )
-"
-
-DEPEND="${RDEPEND}
- dev-cpp/eigen:=
- test? (
- $(python_gen_cond_dep '
- media-libs/openimageio[jpeg2k,tools]
- ')
- )
-"
-
-if [[ "${PV}" == *9999* ]]; then
-DEPEND+="
- test? (
- experimental? (
- wayland? (
- dev-libs/weston
- )
- )
- )
-"
-fi
-
-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
- )
- vulkan? (
- dev-util/spirv-headers
- dev-util/vulkan-headers
- )
- nls? ( sys-devel/gettext )
- wayland? (
- dev-util/wayland-scanner
- )
- X? (
- x11-base/xorg-proto
- )
-"
-
-PATCHES=(
- "${FILESDIR}/${PN}-5.0.0-FindClang.patch"
- "${FILESDIR}/${PN}-4.1.1-FindLLVM.patch"
- "${FILESDIR}/${PN}-4.1.1-numpy.patch"
- "${FILESDIR}/${PN}-4.3.2-system-glog.patch"
- "${FILESDIR}/${PN}-5.0.0-osd-omp-link.patch"
-)
-
-blender_check_requirements() {
- if use doc; then
- CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend
- fi
-}
-
-blender_get_version() {
- if [[ -n "${BV}" && -n "${BVC}" ]]; then
- return
- fi
-
- local status
- # Get blender version from blender itself.
- # mirrors build_files/cmake/macros.cmake function(get_blender_version)
- # NOTE maps x0y to x.y
- # TODO this can potentially break for x > 9 and y > 9
- BV="$(grep "define BLENDER_VERSION " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION, (PIPESTATUS: ${status})"
- BV="$(printf "%d.%d" "${BV:0: -2}" "${BV: -2}")"
-
- if [[ "${PV}" != 9999* && "${BLENDER_BRANCH}" != "${BV}" ]]; then
- eerror "ebuild (${BLENDER_BRANCH}) and code (${BV}) version mismatch"
- die "blender_get_version"
- fi
-
- BVC="$(grep "define BLENDER_VERSION_CYCLE " source/blender/blenkernel/BKE_blender_version.h | cut -d ' ' -f 3)"
- status="$(pipestatus -v)" || die "fails to detect BLENDER_VERSION_CYCLE, (PIPESTATUS: ${status})"
-}
-
-pkg_pretend() {
- blender_check_requirements
-}
-
-pkg_setup() {
- blender_check_requirements
- python-single-r1_pkg_setup
-
- if use osl; then
- llvm-r2_pkg_setup
- fi
-}
-
-src_unpack() {
- if [[ "${PV}" == *9999* ]]; then
- if ! use test; then
- EGIT_SUBMODULES+=( '-tests/*' )
- fi
- git-r3_src_unpack
- else
- default
-
- # TODO
- if use test && [[ ${PV} != ${SLOT}.0 ]] ; then
- mv "blender-${BLENDER_BRANCH}.0/tests/"* "${S}/tests" || die
- rmdir -p "blender-${BLENDER_BRANCH}.0/tests/" || die
- fi
- fi
-
- # clear cmake_minimum_required
- rm -R "${S}/build_files/build_environment/patches" || die
-}
-
-src_prepare() {
- use cuda && cuda_src_prepare
-
- cmake_src_prepare
-
- blender_get_version
-
- # 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 "/CMAKE_INSTALL_PREFIX_WITH_CONFIG/{s|\${CMAKE_INSTALL_PREFIX}|${T%/}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i CMakeLists.txt \
- || die CMAKE_INSTALL_PREFIX_WITH_CONFIG
-
- # WITH_SYSTEM_GLOG=yes
- cmake_run_in extern cmake_comment_add_subdirectory glog
-
- 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" \
- || die
-
- sed \
- -e "s#\(set(cycles_kernel_runtime_lib_target_path \)\${cycles_kernel_runtime_lib_target_path}\(/lib)\)#\1\${CYCLES_INSTALL_PATH}\2#" \
- -i intern/cycles/kernel/CMakeLists.txt \
- || die
-
- if use hip; then
- # fix hardcoded path
- sed \
- -e "s#opt/rocm/hip/bin#$(hipconfig -p)/bin#g" \
- -i extern/hipew/src/hipew.c \
- || die
- fi
-
- 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 "/string(REPLACE.*TEST_INSTALL_DIR/{s|\${CMAKE_INSTALL_PREFIX}|${T}\${CMAKE_INSTALL_PREFIX}|g}" \
- -i "build_files/cmake/testing.cmake" \
- || die "REPLACE.*TEST_INSTALL_DIR"
-
- sed -e '1i #include <cstdint>' -i extern/gtest/src/gtest-death-test.cc || die
- else
- cmake_comment_add_subdirectory tests
- fi
-
- rm -rf extern/gflags || die
-
- # Use slotted libhiprt64
- sed \
- -e "s|\"libhiprt64.so\"|\"${ESYSROOT}/usr/lib/hiprt/2.5/$(get_libdir)/libhiprt64.so\"|" \
- -i extern/hipew/src/hiprtew.cc || die
-}
-
-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=(
- # we build a host-specific binary
- -DWITH_CPU_CHECK="no"
-
- -DWITH_STRICT_BUILD_OPTIONS="yes"
- -DWITH_LIBS_PRECOMPILED="no"
- -DBUILD_SHARED_LIBS="no" # quadriflow only?
- -DWITH_STATIC_LIBS=OFF
-
- # Build Options:
- -DWITH_ALEMBIC="$(usex alembic)"
- -DWITH_BOOST="yes"
- -DWITH_BULLET="$(usex bullet)"
- -DWITH_CYCLES="$(usex cycles)"
- -DWITH_DOC_MANPAGE="$(usex man)"
- -DWITH_FFTW3="$(usex fftw)"
- -DWITH_GMP="$(usex gmp)"
- -DWITH_GTESTS="$(usex test)"
- -DWITH_HARFBUZZ="$(usex truetype)"
- -DWITH_HARU="$(usex pdf)"
- -DWITH_HEADLESS="$(usex !X "$(usex !wayland)")"
- -DWITH_INPUT_NDOF="$(usex ndof)"
- -DWITH_INTERNATIONAL="$(usex nls)"
- -DWITH_MANIFOLD="$(usex manifold)"
- -DWITH_MATERIALX="no" # TODO: Package MaterialX
- -DWITH_NANOVDB="$(usex nanovdb)"
- -DWITH_OPENCOLORIO="$(usex color-management)"
- -DWITH_OPENGL_BACKEND="$(usex opengl)"
- -DWITH_OPENIMAGEDENOISE="$(usex oidn)"
- -DWITH_OPENSUBDIV="$(usex opensubdiv)"
- -DWITH_OPENVDB="$(usex openvdb)"
- -DWITH_OPENVDB_BLOSC="$(usex openvdb)"
- -DWITH_POTRACE="$(usex potrace)"
- -DWITH_PUGIXML="$(usex pugixml)"
- # -DWITH_QUADRIFLOW=ON
- -DWITH_RENDERDOC="$(usex renderdoc)"
- -DWITH_TBB="$(usex tbb)"
- -DWITH_UNITY_BUILD="no"
- -DWITH_USD="no" # TODO: Package USD
- -DWITH_VULKAN_BACKEND="$(usex vulkan)"
- -DWITH_XR_OPENXR="no"
-
- -DWITH_SYSTEM_BULLET="yes"
- -DWITH_SYSTEM_EIGEN3="yes"
- -DWITH_SYSTEM_FREETYPE="yes"
- -DWITH_SYSTEM_GFLAGS="yes"
- -DWITH_SYSTEM_GLOG="yes"
-
- # Compiler Options:
- # -DWITH_BUILDINFO="yes"
- -DWITH_COMPILER_SIMD="no" # This makes it so Blender doesn't append their own -march flags
-
- # System Options:
- -DWITH_INSTALL_PORTABLE="no"
- -DWITH_MEM_JEMALLOC="$(usex jemalloc)"
- -DWITH_MEM_VALGRIND="$(usex valgrind)"
-
- # GHOST Options:
- -DWITH_GHOST_WAYLAND="$(usex wayland)"
- # -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}" # only visible with use wayland. see below
- -DWITH_GHOST_WAYLAND_DYNLOAD="no"
- -DWITH_GHOST_X11="$(usex X)"
- # -DWITH_GHOST_XDND=ON
- # -DWITH_X11_XFIXES=ON
- # -DWITH_X11_XINPUT=ON
- # -DWITH_GHOST_WAYLAND_DYNLOAD # visible wayland?
- # -DWITH_GHOST_WAYLAND_LIBDECOR # visible wayland?
-
- # Image Formats:
- # -DWITH_IMAGE_CINEON=ON
- -DWITH_IMAGE_OPENEXR="$(usex openexr)"
- -DWITH_IMAGE_OPENJPEG="$(usex jpeg2k)"
- -DWITH_IMAGE_WEBP="$(usex webp)" # unlisted
-
- # Audio:
- # -DWITH_AUDASPACE=OFF
- # -DWITH_SYSTEM_AUDASPACE=OFF
- -DWITH_CODEC_FFMPEG="$(usex ffmpeg)"
- -DWITH_CODEC_SNDFILE="$(usex sndfile)"
- # -DWITH_COREAUDIO=OFF
- -DWITH_JACK="$(usex jack)"
- # -DWITH_JACK_DYNLOAD=
- -DWITH_OPENAL="$(usex openal)"
- -DWITH_PIPEWIRE="$(usex pipewire)"
- # -DWITH_PIPEWIRE_DYNLOAD=
- -DWITH_PULSEAUDIO="$(usex pulseaudio)"
- # -DWITH_PULSEAUDIO_DYNLOAD=
- -DWITH_SDL="$(usex sdl)"
- # -DWITH_WASAPI=OFF
-
- # Python:
- # -DWITH_PYTHON=ON
- -DWITH_PYTHON_INSTALL="no"
- -DWITH_PYTHON_INSTALL_NUMPY="no"
- -DWITH_PYTHON_INSTALL_ZSTANDARD="no"
- # -DWITH_PYTHON_MODULE="no"
- -DWITH_PYTHON_SECURITY="yes"
- -DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
- -DPYTHON_LIBRARY="$(python_get_library_path)"
- -DPYTHON_VERSION="${EPYTHON/python/}"
- -DWITH_DRACO="yes" # TODO: Package Draco # NOTE use bundled for now
-
- # Modifiers:
- -DWITH_MOD_FLUID="$(usex fluid)"
- -DWITH_MOD_OCEANSIM="$(usex fftw)"
- # -DWITH_MOD_REMESH=ON
-
- # Rendering:
- -DWITH_HYDRA="no" # TODO: Package Hydra
-
- # Rendering (Cycles):
- -DWITH_CYCLES_OSL="$(usex osl)"
- -DWITH_CYCLES_EMBREE="$(usex embree)"
- -DWITH_CYCLES_PATH_GUIDING="$(usex openpgl)"
- -DWITH_CYCLES_LOGGING="ON" # "$(usex debug)"
-
- -DWITH_CYCLES_DEVICE_OPTIX="$(usex optix)"
- -DWITH_CYCLES_DEVICE_CUDA="$(usex cuda)"
- -DWITH_CYCLES_CUDA_BINARIES="$(usex cuda "$(usex cycles-bin-kernels)")"
-
- -DWITH_CYCLES_DEVICE_HIP="$(usex hip)"
- -DWITH_CYCLES_HIP_BINARIES="$(usex hip "$(usex cycles-bin-kernels)")"
- -DWITH_CYCLES_DEVICE_HIPRT="$(usex hip "$(usex hiprt)")"
-
- -DWITH_CYCLES_HYDRA_RENDER_DELEGATE="no" # TODO: package Hydra
-
- # -DWITH_CYCLES_STANDALONE=OFF
- # -DWITH_CYCLES_STANDALONE_GUI=OFF
-
- -DWITH_BLENDER_THUMBNAILER="yes"
-
- -DWITH_ASSERT_ABORT="$(usex debug)"
- -DWITH_ASSERT_RELEASE="no" # "$(usex debug)"
-
- # -DWITH_FREESTYLE=ON
- # -DWITH_IK_ITASC=ON
- # -DWITH_IK_SOLVER=ON
- # -DWITH_INPUT_IME=ON
- # -DWITH_LIBMV=ON
- # -DWITH_LIBMV_SCHUR_SPECIALIZATIONS=ON
- # -DWITH_UV_SLIM=ON
- -DWITH_NINJA_POOL_JOBS="yes"
- -DWITH_RUBBERBAND="$(usex rubberband)"
- # -DPOSTINSTALL_SCRIPT:PATH=""
- # -DPOSTCONFIGURE_SCRIPT:PATH=""
- )
-
- 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* && "${BVC}" == "alpha" ]]; then
- mycmakeargs+=(
- # -DWITH_BUILDINFO="no"
- -DWITH_EXPERIMENTAL_FEATURES="$(usex experimental)"
- # -DWITH_COMPILER_ASAN="yes"
- # -DWITH_STRSIZE_DEBUG="yes"
- # -DWITH_CYCLES_NATIVE_ONLY="yes"
- # -DWITH_LIBMV_SCHUR_SPECIALIZATIONS="no"
- # -DWITH_PYTHON_SAFETY="ON" # dev option
-
- )
- else
- mycmakeargs+=(
- -DWITH_BUILDINFO="yes"
- -DWITH_EXPERIMENTAL_FEATURES="OFF"
- -DWITH_PYTHON_SAFETY="OFF"
- )
- fi
-
- if use cuda; then
- # Ease compiling with required gcc similar to cuda_sanitize but for cmake
- if use cycles-bin-kernels; then
- local -x CUDAHOSTCXX="$(cuda_gccdir)"
- local -x CUDAHOSTLD="$(tc-getCXX)"
-
- if [[ -n "${CUDAARCHS}" ]]; then
- mycmakeargs+=(
- -DCYCLES_CUDA_BINARIES_ARCH="$(echo "${CUDAARCHS}" | sed -e 's/^/sm_/g' -e 's/;/;sm_/g')"
- )
- fi
- fi
- fi
-
- if use hip; then
- mycmakeargs+=(
- -DHIP_ROOT_DIR="$(hipconfig -p)"
- -DCYCLES_HIP_BINARIES_ARCH="$(get_amdgpu_flags)"
- )
-
- if use hiprt; then
- mycmakeargs+=(
- -DHIPRT_ROOT_DIR="${ESYSROOT}/usr/lib/hiprt/2.5"
- -DHIP_HIPCC_FLAGS="-fcf-protection=none"
- -DHIPRT_COMPILER_PARALLEL_JOBS="$(makeopts_jobs)"
- )
- fi
- fi
-
- if use optix; then
- mycmakeargs+=(
- -DCYCLES_RUNTIME_OPTIX_ROOT_DIR="${ESYSROOT}/opt/optix"
- -DOPTIX_ROOT_DIR="${ESYSROOT}/opt/optix"
- )
- fi
-
- if use wayland; then
- mycmakeargs+=(
- -DWITH_GHOST_WAYLAND_APP_ID="blender-${BV}"
- -DWITH_GHOST_CSD="$(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
-
- # WITH_ASSERT_RELEASE filters this
- append-cflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
- append-cxxflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
-
- if tc-is-gcc; then
- # We disable these to respect the user's choice of linker.
- mycmakeargs+=(
- -DWITH_LINKER_GOLD="no"
- )
- fi
-
- if use osl; then
- mycmakeargs+=(
- -DWITH_CLANG="yes"
- -DWITH_LLVM="yes"
- -DLLVM_ROOT="$(get_llvm_prefix)"
- -DClang_ROOT="$(get_llvm_prefix)"
- )
- 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" )
- use hiprt && CYCLES_TEST_DEVICES+=( "HIP-RT" )
- fi
- mycmakeargs+=(
- -DCMAKE_INSTALL_PREFIX_WITH_CONFIG="${T%/}/usr"
- -DCYCLES_TEST_DEVICES="$(local IFS=";"; echo "${CYCLES_TEST_DEVICES[*]}")"
- )
-
- # NOTE in lieu of a FEATURE/build_options
- if [[ "${EXPENSIVE_TESTS:-0}" -gt 0 ]]; then
- einfo "running expensive tests EXPENSIVE_TESTS=${EXPENSIVE_TESTS}"
- mycmakeargs+=(
- -DWITH_CYCLES_TEST_OSL="$(usex osl)"
-
- -DWITH_GPU_BACKEND_TESTS="yes"
- -DWITH_GPU_COMPOSITOR_TESTS="yes"
-
- -DWITH_GPU_DRAW_TESTS="yes"
-
- -DWITH_GPU_RENDER_TESTS="yes"
- -DWITH_GPU_RENDER_TESTS_HEADED="yes"
- # -DWITH_GPU_RENDER_TESTS_SILENT="yes"
- -DWITH_GPU_RENDER_TESTS_VULKAN="$(usex vulkan)"
-
- # Run Python script outside Blender, using system default Python3 interpreter,
- # NOT the one specified in `TEST_PYTHON_EXE`.
- -DWITH_SYSTEM_PYTHON_TESTS="yes"
- -DTEST_SYSTEM_PYTHON_EXE="${PYTHON}"
-
- # -DTEST_PYTHON_EXE="${T%/}/${EPYTHON}/bin/python"
-
- # -DWITH_LINUX_OFFICIAL_RELEASE_TESTS="yes" # Not needed?
- )
-
- if [[ "${PV}" == *9999* && "${BVC}" == "alpha" ]] && use experimental; then
- mycmakeargs+=(
- -DWITH_GPU_MESH_PAINT_TESTS="yes"
- # -DWITH_UI_TESTS="$(usex wayland)"
- -DWITH_UI_TESTS="yes"
- -DWITH_TESTS_EXPERIMENTAL="yes"
-
- # Enable user-interface tests using a headless display server.
- # Currently this depends on WITH_GHOST_WAYLAND and the weston compositor (Experimental)
- -DWITH_UI_TESTS_HEADLESS="$(usex !X "$(usex wayland)")"
- -DWESTON_BIN="${ESYSROOT}/usr/bin/weston"
- )
- fi
- else
- mycmakeargs+=(
- -DWITH_GPU_RENDER_TESTS="no"
- )
- fi
- fi
-
- cmake_src_configure
-}
-
-src_test() {
- # A lot of tests need 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, or we won't 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)
- local -x BLENDER_SYSTEM_RESOURCES="${T%/}/usr/share/blender/${BV}"
-
- # Sanity check that the script and datafile path is valid.
- # If they are not valid, blender will fallback to the default path which is not what we want.
- [[ -d "${BLENDER_SYSTEM_RESOURCES}" ]] || die "The custom resources path is invalid, fix the ebuild!"
-
- # TODO only picks first card
- addwrite "/dev/dri/card0"
- addwrite "/dev/dri/renderD128"
-
- [[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
-
- if use cuda; then
- cuda_add_sandbox -w
- addwrite "/proc/self/task"
- addpredict "/dev/char/"
- fi
-
- local -x CMAKE_SKIP_TESTS=(
- "^script_pyapi_bpy_driver_secure_eval$"
- )
-
- if ! has_version "media-libs/openusd"; then
- CMAKE_SKIP_TESTS+=(
- # from pxr import Usd # ModuleNotFoundError: No module named 'pxr'
- "^script_bundled_modules$"
- )
- fi
-
- if has_version ">=media-video/ffmpeg-8"; then
- CMAKE_SKIP_TESTS+=(
- # output change TODO
- "^sequencer_render_video_output$"
- )
- fi
-
- # For debugging, print out all information.
- local -x VERBOSE="$(usex debug "true" "false")"
- "${VERBOSE}" && einfo "VERBOSE=${VERBOSE}"
-
- local -x DEBUG="$(usex debug "true" "false")"
- "${DEBUG}" && einfo "DEBUG=${DEBUG}"
-
- # Show the window in the foreground.
- # local -x USE_WINDOW="true" # non-zero
- [[ -v USE_WINDOW ]] && einfo "USE_WINDOW=${USE_WINDOW}"
-
- # local -x USE_DEBUG="true" # non-zero
- [[ -v USE_DEBUG ]] && einfo "USE_DEBUG=${USE_DEBUG}"
-
- # Environment OPENIMAGEIO_CUDA=0 trumps everything else, turns off
- # Cuda functionality. We don't even initialize in this case.
- local -x OPENIMAGEIO_CUDA=0
-
- # Needed if openimageio wasn't build with -DNDEBUG
- local -x OPENIMAGEIO_DEBUG=0
-
- local -x CYCLESTEST_ARGS="-t 0"
-
- if [[ "${EXPENSIVE_TESTS:-0}" -gt 0 ]]; then
- einfo "running expensive tests EXPENSIVE_TESTS=${EXPENSIVE_TESTS}"
- if [[ "${PV}" == *9999* && "${BVC}" == "alpha" ]] &&
- use experimental && use wayland; then
- # This runs weston
- xdg_environment_reset
- fi
-
- if [[ "${USE_WINDOW}" == "true" ]]; then
- xdg_environment_reset
- # WITH_GPU_RENDER_TESTS_HEADED
- if use wayland; then
- local compositor exit_code
- local logfile=${T}/weston.log
- weston --xwayland --backend=headless --width=800 --height=600 --socket=wayland-5 --idle-time=0 2>"${logfile}" &
- compositor=$!
- local -x WAYLAND_DISPLAY=wayland-5
- sleep 1 # wait for xwayland to be up
- # TODO use eapi9-pipestatus
- local -x DISPLAY="$(grep "xserver listening on display" "${logfile}" | cut -d ' ' -f 5)"
-
- cmake_src_test
-
- exit_code=$?
- kill "${compositor}"
- elif use X; then
- virtx cmake_src_test
- fi
- else
- cmake_src_test
- fi
- else
- cmake_src_test
- fi
-
- # 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)
- local -x BLENDER_SYSTEM_RESOURCES="${ED}/usr/share/blender/${BV}"
-
- # Workaround for binary drivers. # TODO
- addpredict /dev/ati
- addpredict /dev/dri
- addpredict /dev/nvidiactl
-
- cd "${CMAKE_USE_DIR}/doc/doxygen" || die
- sed -e "/^NUM_PROC_THREADS/s/1/$(makeopts_jobs)/" -i Doxyfile || die
- edob -m "Generating Blender C/C++ API docs ..." doxygen -u Doxyfile
- edob -m "Building API docs" doxygen
-
- cd "${CMAKE_USE_DIR}" || die
- einfo "Generating (BPY) Blender Python API docs ..."
- edo "${BUILD_DIR}"/bin/blender --background --python "doc/python_api/sphinx_doc_gen.py" -noaudio
-
- edo sphinx-build -j "$(makeopts_jobs)" doc/python_api/sphinx-in doc/python_api/BPY_API
-
- cd "${CMAKE_USE_DIR}" || die
- docinto "html/API/python"
- dodoc -r "doc/python_api/BPY_API/"
-
- docinto "html/API/blender"
- dodoc -r "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 "blender-thumbnailer version rename failed"
- mv "${ED}/usr/bin/blender" "${ED}/usr/bin/blender-${BV}" || die "blender version rename failed"
-}
-
-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 && ! has_version "media-libs/mesa[${LLVM_USEDEP}]"; 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
-
- 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
-
- if [[ -z "${REPLACED_BY_VERSION}" ]]; then
- ewarn
- ewarn "You may want to remove the following directories"
- ewarn "- ~/.config/${PN}/${BV}/cache/"
- ewarn "- ~/.cache/cycles/"
- ewarn "It may contain extra render kernels not tracked by portage"
- ewarn
- fi
-}
-
-pkg_info () {
- debugvars () {
- local var
- for var in "${@}"; do
- [[ -v "${var}" ]] && echo "${var}: ${!var}"
- done
- }
-
- local blender_info_vars=(
- CUDACXX
- CUDAHOSTCXX
- CUDAHOSTLD
- CUDAARCHS
- CUDAFLAGS
- CUDA_PATH
- CUDA_VERBOSE
- NVCCFLAGS
- NVCC_PREPEND_FLAGS
- NVCC_APPPEND_FLAGS
- )
-
- debugvars "${blender_info_vars[@]}"
-}
diff --git a/media-gfx/blender/files/blender-4.0.2-CUDA_NVCC_FLAGS.patch b/media-gfx/blender/files/blender-4.0.2-CUDA_NVCC_FLAGS.patch
deleted file mode 100644
index f476756424e0..000000000000
--- a/media-gfx/blender/files/blender-4.0.2-CUDA_NVCC_FLAGS.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-From: Paul Zander <negril.nx+gentoo@gmail.com>
-insert CUDA_NVCC_FLAGS into the custom nvcc call so we can use CUDAHOSTCXX, e.g. a different gcc version for cuda code
-diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt
-index 604ccb8..160ee20 100644
---- a/intern/cycles/kernel/CMakeLists.txt
-+++ b/intern/cycles/kernel/CMakeLists.txt
-@@ -752,6 +752,7 @@ if(WITH_CYCLES_DEVICE_OPTIX AND WITH_CYCLES_CUDA_BINARIES)
- -I "${CMAKE_CURRENT_SOURCE_DIR}/device/cuda"
- --use_fast_math
- -Wno-deprecated-gpu-targets
-+ ${CUDA_NVCC_FLAGS}
- -o ${output})
-
- if(WITH_NANOVDB)
diff --git a/media-gfx/blender/files/blender-4.0.2-FindClang.patch b/media-gfx/blender/files/blender-4.0.2-FindClang.patch
deleted file mode 100644
index 2c7a404c3bc6..000000000000
--- a/media-gfx/blender/files/blender-4.0.2-FindClang.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-From: Paul Zander <negril.nx+gentoo@gmail.com>
-look for the merged clang library so we can find clang
-diff --git a/build_files/cmake/Modules/FindClang.cmake b/build_files/cmake/Modules/FindClang.cmake
-index 1957c63..5620b84 100644
---- a/build_files/cmake/Modules/FindClang.cmake
-+++ b/build_files/cmake/Modules/FindClang.cmake
-@@ -85,6 +85,7 @@ set(_CLANG_FIND_COMPONENTS
- clangAST
- clangLex
- clangBasic
-+ clang-cpp
- )
-
- set(_CLANG_LIBRARIES)
diff --git a/media-gfx/blender/files/blender-4.1.1-numpy.patch b/media-gfx/blender/files/blender-4.1.1-numpy.patch
deleted file mode 100644
index bd76da8b5959..000000000000
--- a/media-gfx/blender/files/blender-4.1.1-numpy.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From: Paul Zander <negril.nx+gentoo@gmail.com>
-Date: Fri, 23 Aug 2024 13:19:21 +0200
-Subject: [PATCH] fix numpy lookup
-
-use cmake config for find_package()
-
-Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com>
-
---- a/build_files/cmake/platform/platform_unix.cmake
-+++ b/build_files/cmake/platform/platform_unix.cmake
-@@ -463,13 +463,13 @@ if(WITH_BOOST)
- endif()
- list(APPEND __boost_packages system)
- set(Boost_NO_WARN_NEW_VERSIONS ON)
-- find_package(Boost 1.48 COMPONENTS ${__boost_packages})
-+ find_package(Boost 1.48 CONFIG COMPONENTS ${__boost_packages})
- if(NOT Boost_FOUND)
- # try to find non-multithreaded if -mt not found, this flag
- # doesn't matter for us, it has nothing to do with thread
- # safety, but keep it to not disturb build setups
- set(Boost_USE_MULTITHREADED OFF)
-- find_package(Boost 1.48 COMPONENTS ${__boost_packages})
-+ find_package(Boost 1.48 CONFIG COMPONENTS ${__boost_packages})
- endif()
- unset(__boost_packages)
- if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
diff --git a/media-gfx/blender/files/blender-4.3.2-ffmpeg7.patch b/media-gfx/blender/files/blender-4.3.2-ffmpeg7.patch
deleted file mode 100644
index c16c18124dd0..000000000000
--- a/media-gfx/blender/files/blender-4.3.2-ffmpeg7.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-https://bugs.gentoo.org/951199
-
-Backport of [1] plus a chunk from [2] for another anim_movie.cc issue.
-
-[1] https://projects.blender.org/blender/blender/commit/b1ca2f09dba5c4a6d21806ab913a2374bf7b3b8f
-[2] https://projects.blender.org/blender/blender/pulls/121947
---- a/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
-+++ b/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
-@@ -28,7 +28,12 @@
- AUD_NAMESPACE_BEGIN
-
-+/* FFmpeg < 4.0 */
- #if LIBAVCODEC_VERSION_MAJOR < 58
- #define FFMPEG_OLD_CODE
- #endif
-+/* FFmpeg < 5.0 */
-+#if LIBAVCODEC_VERSION_MAJOR < 59
-+#define FFMPEG_OLD_CH_LAYOUT
-+#endif
-
- SampleFormat FFMPEGReader::convertSampleFormat(AVSampleFormat format)
-@@ -113,5 +118,11 @@
- break;
-
-- int data_size = av_samples_get_buffer_size(nullptr, m_codecCtx->channels, m_frame->nb_samples, m_codecCtx->sample_fmt, 1);
-+ #ifdef FFMPEG_OLD_CH_LAYOUT
-+ int channels = m_codecCtx->channels;
-+ #else
-+ int channels = m_codecCtx->ch_layout.nb_channels;
-+ #endif
-+
-+ int data_size = av_samples_get_buffer_size(nullptr, channels, m_frame->nb_samples, m_codecCtx->sample_fmt, 1);
-
- if(buf_size - buf_pos < data_size)
-@@ -123,10 +134,10 @@
- if(m_tointerleave)
- {
-- int single_size = data_size / m_codecCtx->channels / m_frame->nb_samples;
-- for(int channel = 0; channel < m_codecCtx->channels; channel++)
-+ int single_size = data_size / channels / m_frame->nb_samples;
-+ for(int channel = 0; channel < channels; channel++)
- {
- for(int i = 0; i < m_frame->nb_samples; i++)
- {
-- std::memcpy(((data_t*)buffer.getBuffer()) + buf_pos + ((m_codecCtx->channels * i) + channel) * single_size,
-+ std::memcpy(((data_t*)buffer.getBuffer()) + buf_pos + ((channels * i) + channel) * single_size,
- m_frame->data[channel] + i * single_size, single_size);
- }
-@@ -208,5 +219,10 @@
- AUD_THROW(FileException, "File couldn't be read, ffmpeg codec couldn't be opened.");
-
-- m_specs.channels = (Channels) m_codecCtx->channels;
-+ #ifdef FFMPEG_OLD_CH_LAYOUT
-+ int channels = m_codecCtx->channels;
-+ #else
-+ int channels = m_codecCtx->ch_layout.nb_channels;
-+ #endif
-+ m_specs.channels = (Channels) channels;
- m_tointerleave = av_sample_fmt_is_planar(m_codecCtx->sample_fmt);
-
-@@ -346,5 +362,10 @@
- info.specs.format = convertSampleFormat(m_formatCtx->streams[i]->codec->sample_fmt);
- #else
-- info.specs.channels = Channels(m_formatCtx->streams[i]->codecpar->channels);
-+ #ifdef FFMPEG_OLD_CH_LAYOUT
-+ int channels = m_formatCtx->streams[i]->codecpar->channels;
-+ #else
-+ int channels = m_formatCtx->streams[i]->codecpar->ch_layout.nb_channels;
-+ #endif
-+ info.specs.channels = Channels(channels);
- info.specs.rate = m_formatCtx->streams[i]->codecpar->sample_rate;
- info.specs.format = convertSampleFormat(AVSampleFormat(m_formatCtx->streams[i]->codecpar->format));
---- a/extern/audaspace/plugins/ffmpeg/FFMPEGWriter.cpp
-+++ b/extern/audaspace/plugins/ffmpeg/FFMPEGWriter.cpp
-@@ -31,7 +31,12 @@
- AUD_NAMESPACE_BEGIN
-
-+/* FFmpeg < 4.0 */
- #if LIBAVCODEC_VERSION_MAJOR < 58
- #define FFMPEG_OLD_CODE
- #endif
-+/* FFmpeg < 5.0 */
-+#if LIBAVCODEC_VERSION_MAJOR < 59
-+#define FFMPEG_OLD_CH_LAYOUT
-+#endif
-
- void FFMPEGWriter::encode()
-@@ -78,6 +83,11 @@
- m_frame->nb_samples = m_input_samples;
- m_frame->format = m_codecCtx->sample_fmt;
-+#ifdef FFMPEG_OLD_CH_LAYOUT
- m_frame->channel_layout = m_codecCtx->channel_layout;
- m_frame->channels = m_specs.channels;
-+#else
-+ if(av_channel_layout_copy(&m_frame->ch_layout, &m_codecCtx->ch_layout) < 0)
-+ AUD_THROW(FileException, "File couldn't be written, couldn't copy audio channel layout.");
-+#endif
-
- if(avcodec_fill_audio_frame(m_frame, m_specs.channels, m_codecCtx->sample_fmt, reinterpret_cast<data_t*>(data), m_input_buffer.getSize(), 0) < 0)
-@@ -406,6 +416,11 @@
- m_codecCtx->codec_type = AVMEDIA_TYPE_AUDIO;
- m_codecCtx->bit_rate = bitrate;
-+#ifdef FFMPEG_OLD_CH_LAYOUT
- m_codecCtx->channel_layout = channel_layout;
- m_codecCtx->channels = m_specs.channels;
-+#else
-+ av_channel_layout_uninit(&m_codecCtx->ch_layout);
-+ av_channel_layout_from_mask(&m_codecCtx->ch_layout, channel_layout);
-+#endif
- m_stream->time_base.num = m_codecCtx->time_base.num = 1;
- m_stream->time_base.den = m_codecCtx->time_base.den = m_codecCtx->sample_rate;
---- a/intern/ffmpeg/ffmpeg_compat.h
-+++ b/intern/ffmpeg/ffmpeg_compat.h
-@@ -41,4 +41,11 @@
- #endif
-
-+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(58, 29, 100)
-+/* In ffmpeg 6.1 usage of the "key_frame" variable from "AVFrame" has been deprecated.
-+ * used the new method to query for the "AV_FRAME_FLAG_KEY" flag instead.
-+ */
-+# define FFMPEG_OLD_KEY_FRAME_QUERY_METHOD
-+#endif
-+
- #if (LIBAVFORMAT_VERSION_MAJOR < 59)
- /* For versions older than ffmpeg 5.0, use the old channel layout variables.
---- a/source/blender/imbuf/intern/anim_movie.cc
-+++ b/source/blender/imbuf/intern/anim_movie.cc
-@@ -657,5 +657,9 @@
- anim->cur_pts = av_get_pts_from_frame(anim->pFrame);
-
-+# ifdef FFMPEG_OLD_KEY_FRAME_QUERY_METHOD
- if (anim->pFrame->key_frame) {
-+# else
-+ if (anim->pFrame->flags & AV_FRAME_FLAG_KEY) {
-+# endif
- anim->cur_key_frame_pts = anim->cur_pts;
- }
-@@ -1036,9 +1040,8 @@
- AVFormatContext *format_ctx = anim->pFormatCtx;
-
-- if (format_ctx->iformat->read_seek2 || format_ctx->iformat->read_seek) {
-- ret = av_seek_frame(anim->pFormatCtx, anim->videoStream, seek_pos, AVSEEK_FLAG_BACKWARD);
-- }
-- else {
-- ret = ffmpeg_generic_seek_workaround(anim, &seek_pos, pts_to_search);
-+ int ret = av_seek_frame(anim->pFormatCtx, anim->videoStream, seek_pos, AVSEEK_FLAG_BACKWARD);
-+
-+ if (ret < 0) {
-+ ret = ffmpeg_generic_seek_workaround(anim, &seek_pos, pts_to_search);\
- av_log(anim->pFormatCtx,
- AV_LOG_DEBUG,
diff --git a/media-gfx/blender/files/blender-4.3.2-openvdb-12.patch b/media-gfx/blender/files/blender-4.3.2-openvdb-12.patch
deleted file mode 100644
index 02cca15f7c94..000000000000
--- a/media-gfx/blender/files/blender-4.3.2-openvdb-12.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-https://projects.blender.org/blender/blender/pulls/131833
-From 91412f2a28db69ac2a73c1bc646e350063d8ddd5 Mon Sep 17 00:00:00 2001
-From: Brecht Van Lommel <brecht@blender.org>
-Date: Fri, 13 Dec 2024 04:29:29 +0100
-Subject: [PATCH] Cycles: Support building with OpenVDB 12
-
----
- intern/cycles/scene/image_vdb.cpp | 20 +++++++++++++++-----
- intern/cycles/scene/image_vdb.h | 8 +++++++-
- 2 files changed, 22 insertions(+), 6 deletions(-)
-
-diff --git a/intern/cycles/scene/image_vdb.cpp b/intern/cycles/scene/image_vdb.cpp
-index d94a7973adc..42964fac81d 100644
---- a/intern/cycles/scene/image_vdb.cpp
-+++ b/intern/cycles/scene/image_vdb.cpp
-@@ -55,23 +55,33 @@ struct ToNanoOp {
- try {
- # if NANOVDB_MAJOR_VERSION_NUMBER > 32 || \
- (NANOVDB_MAJOR_VERSION_NUMBER == 32 && NANOVDB_MINOR_VERSION_NUMBER >= 6)
-+# if NANOVDB_MAJOR_VERSION_NUMBER > 32 || \
-+ (NANOVDB_MAJOR_VERSION_NUMBER == 32 && NANOVDB_MINOR_VERSION_NUMBER >= 7)
-+ /* OpenVDB 12. */
-+ using nanovdb::tools::createNanoGrid;
-+ using nanovdb::tools::StatsMode;
-+# else
- /* OpenVDB 11. */
-+ using nanovdb::createNanoGrid;
-+ using nanovdb::StatsMode;
-+# endif
-+
- if constexpr (std::is_same_v<FloatGridType, openvdb::FloatGrid>) {
- openvdb::FloatGrid floatgrid(*openvdb::gridConstPtrCast<GridType>(grid));
- if (precision == 0) {
-- nanogrid = nanovdb::createNanoGrid<openvdb::FloatGrid, nanovdb::FpN>(floatgrid);
-+ nanogrid = createNanoGrid<openvdb::FloatGrid, nanovdb::FpN>(floatgrid);
- }
- else if (precision == 16) {
-- nanogrid = nanovdb::createNanoGrid<openvdb::FloatGrid, nanovdb::Fp16>(floatgrid);
-+ nanogrid = createNanoGrid<openvdb::FloatGrid, nanovdb::Fp16>(floatgrid);
- }
- else {
-- nanogrid = nanovdb::createNanoGrid<openvdb::FloatGrid, float>(floatgrid);
-+ nanogrid = createNanoGrid<openvdb::FloatGrid, float>(floatgrid);
- }
- }
- else if constexpr (std::is_same_v<FloatGridType, openvdb::Vec3fGrid>) {
- openvdb::Vec3fGrid floatgrid(*openvdb::gridConstPtrCast<GridType>(grid));
-- nanogrid = nanovdb::createNanoGrid<openvdb::Vec3fGrid, nanovdb::Vec3f>(
-- floatgrid, nanovdb::StatsMode::Disable);
-+ nanogrid = createNanoGrid<openvdb::Vec3fGrid, nanovdb::Vec3f>(floatgrid,
-+ StatsMode::Disable);
- }
- # else
- /* OpenVDB 10. */
-diff --git a/intern/cycles/scene/image_vdb.h b/intern/cycles/scene/image_vdb.h
-index 49853cf3753..e0af9b87db1 100644
---- a/intern/cycles/scene/image_vdb.h
-+++ b/intern/cycles/scene/image_vdb.h
-@@ -9,7 +9,13 @@
- # include <openvdb/openvdb.h>
- #endif
- #ifdef WITH_NANOVDB
--# include <nanovdb/util/GridHandle.h>
-+# include <nanovdb/NanoVDB.h>
-+# if NANOVDB_MAJOR_VERSION_NUMBER > 32 || \
-+ (NANOVDB_MAJOR_VERSION_NUMBER == 32 && NANOVDB_MINOR_VERSION_NUMBER >= 7)
-+# include <nanovdb/GridHandle.h>
-+# else
-+# include <nanovdb/util/GridHandle.h>
-+# endif
- #endif
-
- #include "scene/image.h"
---
-2.45.2
-
diff --git a/media-gfx/blender/files/blender-4.3.2-optix-8.1.0.patch b/media-gfx/blender/files/blender-4.3.2-optix-8.1.0.patch
deleted file mode 100644
index 092c30db2bc5..000000000000
--- a/media-gfx/blender/files/blender-4.3.2-optix-8.1.0.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 7ce8dbf5f82af7c80890d18b27e1d9df6009d5b4 Mon Sep 17 00:00:00 2001
-From: Patrick Mours <pmours@nvidia.com>
-Date: Mon, 18 Nov 2024 13:16:41 +0100
-Subject: [PATCH] Change OptiX function table name for OptiX 8.1 support
-
----
- intern/cycles/device/optix/device.cpp | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/intern/cycles/device/optix/device.cpp b/intern/cycles/device/optix/device.cpp
-index 60a1dbfe4e3..c8608ab5d75 100644
---- a/intern/cycles/device/optix/device.cpp
-+++ b/intern/cycles/device/optix/device.cpp
-@@ -21,12 +21,16 @@
- # include <optix_function_table_definition.h>
- #endif
-
-+#ifndef OPTIX_FUNCTION_TABLE_SYMBOL
-+# define OPTIX_FUNCTION_TABLE_SYMBOL g_optixFunctionTable
-+#endif
-+
- CCL_NAMESPACE_BEGIN
-
- bool device_optix_init()
- {
- #ifdef WITH_OPTIX
-- if (g_optixFunctionTable.optixDeviceContextCreate != NULL) {
-+ if (OPTIX_FUNCTION_TABLE_SYMBOL.optixDeviceContextCreate != NULL) {
- /* Already initialized function table. */
- return true;
- }
---
-2.47.2
-
diff --git a/media-gfx/blender/files/blender-4.3.2-system-glog.patch b/media-gfx/blender/files/blender-4.3.2-system-glog.patch
deleted file mode 100644
index 9bf54f0e7bd5..000000000000
--- a/media-gfx/blender/files/blender-4.3.2-system-glog.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 6284e504b144619411ac41092d53fc8541c84cdb Mon Sep 17 00:00:00 2001
-From: Paul Zander <negril.nx@gmail.com>
-Date: Tue, 15 Apr 2025 13:48:00 +0200
-Subject: [PATCH] system glog
-
-Signed-off-by: Paul Zander <negril.nx@gmail.com>
-
-diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt
-index 418d2255a75..6b5cd31f9b7 100644
---- a/extern/CMakeLists.txt
-+++ b/extern/CMakeLists.txt
-@@ -77,7 +77,9 @@ if(WITH_LIBMV OR WITH_GTESTS OR (WITH_CYCLES AND WITH_CYCLES_LOGGING))
- if(NOT WITH_SYSTEM_GFLAGS)
- add_subdirectory(gflags)
- endif()
-- add_subdirectory(glog)
-+ if(NOT WITH_SYSTEM_GLOG)
-+ add_subdirectory(glog)
-+ endif()
- endif()
-
- if(WITH_GTESTS)
-diff --git a/intern/libmv/CMakeLists.txt b/intern/libmv/CMakeLists.txt
-index 965d0028020..825c2141f5a 100644
---- a/intern/libmv/CMakeLists.txt
-+++ b/intern/libmv/CMakeLists.txt
-@@ -34,6 +34,8 @@ if(WITH_LIBMV)
- ${GLOG_INCLUDE_DIRS}
- ../guardedalloc
- )
-+
-+ list(REMOVE_DUPLICATES INC)
-
- list(APPEND INC_SYS
- ${EIGEN3_INCLUDE_DIRS}
-diff --git a/tests/gtests/testing/CMakeLists.txt b/tests/gtests/testing/CMakeLists.txt
-index ff7f6905836..d46b1d65174 100644
---- a/tests/gtests/testing/CMakeLists.txt
-+++ b/tests/gtests/testing/CMakeLists.txt
-@@ -13,6 +13,8 @@ set(INC
- ${GFLAGS_INCLUDE_DIRS}
- ../../../extern/gtest/include
- )
-+
-+list(REMOVE_DUPLICATES INC)
-
- set(INC_SYS
- )
---
-2.49.0
-
-From 0547b825d9ab0b7c89a41eb4000f0d2892c17d85 Mon Sep 17 00:00:00 2001
-From: Paul Zander <negril.nx@gmail.com>
-Date: Tue, 29 Apr 2025 18:22:53 +0200
-Subject: [PATCH] fix-system-glog
-
-Signed-off-by: Paul Zander <negril.nx@gmail.com>
-
-diff --git a/intern/cycles/util/CMakeLists.txt b/intern/cycles/util/CMakeLists.txt
-index fe28dfd66ce..03c17167269 100644
---- a/intern/cycles/util/CMakeLists.txt
-+++ b/intern/cycles/util/CMakeLists.txt
-@@ -130,6 +130,13 @@ if(CXX_HAS_AVX2)
- set_source_files_properties(transform_avx2.cpp PROPERTIES COMPILE_FLAGS "${CYCLES_AVX2_FLAGS}")
- endif()
-
-+if(WITH_CYCLES_LOGGING)
-+ list(APPEND LIB
-+ ${GLOG_LIBRARIES}
-+ ${GFLAGS_LIBRARIES}
-+ )
-+endif()
-+
- include_directories(${INC})
- include_directories(SYSTEM ${INC_SYS})
-
---
-2.49.0
-
diff --git a/media-gfx/blender/files/blender-4.4.0-optix-compile-flags.patch b/media-gfx/blender/files/blender-4.4.0-optix-compile-flags.patch
deleted file mode 100644
index 4fd1c20839cc..000000000000
--- a/media-gfx/blender/files/blender-4.4.0-optix-compile-flags.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 6e8072c20d37f2ba4b0eaded448d21ffa6f073a1 Mon Sep 17 00:00:00 2001
-From: Paul Zander <negril.nx@gmail.com>
-Date: Mon, 21 Apr 2025 17:49:59 +0200
-Subject: [PATCH] optix compile flags
-
-Copy CUDA_HOST_COMPILER logic from cuda to optix
-
-pass CUDA_NVCC_FLAGS into the custom nvcc call for optix, as for
-WITH_CYCLES_CUDA_BINARIES
-
-Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com>
-Signed-off-by: Paul Zander <negril.nx@gmail.com>
-
-diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt
-index 6144de7be33..a59d6dd2b7e 100644
---- a/intern/cycles/kernel/CMakeLists.txt
-+++ b/intern/cycles/kernel/CMakeLists.txt
-@@ -943,6 +943,11 @@ if(WITH_CYCLES_DEVICE_OPTIX AND WITH_CYCLES_CUDA_BINARIES)
- -Wno-deprecated-gpu-targets
- -o ${output})
-
-+ if(CUDA_HOST_COMPILER)
-+ set(cuda_flags ${cuda_flags}
-+ -ccbin="${CUDA_HOST_COMPILER}")
-+ endif()
-+
- if(WITH_NANOVDB)
- set(cuda_flags ${cuda_flags}
- -D WITH_NANOVDB)
-@@ -970,6 +975,7 @@ if(WITH_CYCLES_DEVICE_OPTIX AND WITH_CYCLES_CUDA_BINARIES)
- ${CUDA_NVCC_EXECUTABLE}
- --ptx
- -arch=sm_50
-+ ${CUDA_NVCC_FLAGS}
- ${cuda_flags}
- ${input}
- WORKING_DIRECTORY
---
-2.49.0
-
diff --git a/media-gfx/blender/files/blender-4.5.0-ffmpeg-8.0.patch b/media-gfx/blender/files/blender-4.5.0-ffmpeg-8.0.patch
deleted file mode 100644
index 89c8689d51c0..000000000000
--- a/media-gfx/blender/files/blender-4.5.0-ffmpeg-8.0.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff --git a/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp b/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
-index efe36df4204..2a4dcd45f07 100644
---- a/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
-+++ b/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
-@@ -285,9 +285,11 @@ FFMPEGReader::FFMPEGReader(std::shared_ptr<Buffer> buffer, int stream) :
- m_membuffer(buffer),
- m_membufferpos(0)
- {
-- m_membuf = reinterpret_cast<data_t*>(av_malloc(AV_INPUT_BUFFER_MIN_SIZE + AV_INPUT_BUFFER_PADDING_SIZE));
-+ // Default buffer size (aligns with the x86 page size), taken from FFmpeg's "doc/examples/avio_read_callback.c" example
-+ size_t avio_ctx_buffer_size = 4096;
-+ m_membuf = reinterpret_cast<data_t*>(av_malloc(avio_ctx_buffer_size));
-
-- m_aviocontext = avio_alloc_context(m_membuf, AV_INPUT_BUFFER_MIN_SIZE, 0, this, read_packet, nullptr, seek_packet);
-+ m_aviocontext = avio_alloc_context(m_membuf, avio_ctx_buffer_size, 0, this, read_packet, nullptr, seek_packet);
-
- if(!m_aviocontext)
- {
-diff --git a/source/blender/imbuf/movie/intern/movie_write_audio.cc b/source/blender/imbuf/movie/intern/movie_write_audio.cc
-index 16d01359a60..2af40944c2e 100644
---- a/source/blender/imbuf/movie/intern/movie_write_audio.cc
-+++ b/source/blender/imbuf/movie/intern/movie_write_audio.cc
-@@ -334,12 +334,11 @@ AVStream *alloc_audio_stream(MovieWriter *context,
- c->time_base.num = 1;
- c->time_base.den = c->sample_rate;
-
-- if (c->frame_size == 0) {
-- /* Used to be if ((c->codec_id >= CODEC_ID_PCM_S16LE) && (c->codec_id <= CODEC_ID_PCM_DVD))
-- * not sure if that is needed anymore, so let's try out if there are any
-- * complaints regarding some FFMPEG versions users might have. */
-- context->audio_input_samples = AV_INPUT_BUFFER_MIN_SIZE * 8 / c->bits_per_coded_sample /
-- audio_channels;
-+ if (c->codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE) {
-+ /* If the audio format has a variable frame size, default to 10000.
-+ * This logic is taken from the FFmpeg "doc/examples/mux.c" example
-+ */
-+ context->audio_input_samples = 10000;
- }
- else {
- context->audio_input_samples = c->frame_size;
diff --git a/media-gfx/blender/files/blender-4.5.3-cmake-policy-3.10.patch b/media-gfx/blender/files/blender-4.5.3-cmake-policy-3.10.patch
deleted file mode 100644
index f23f96e38ad4..000000000000
--- a/media-gfx/blender/files/blender-4.5.3-cmake-policy-3.10.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 16b2913ada2929608b6a1ad4b75a9be036cf506e Mon Sep 17 00:00:00 2001
-From: Paul Zander <negril.nx+gentoo@gmail.com>
-Date: Thu, 30 Oct 2025 12:05:29 +0100
-Subject: [PATCH 1/3] build_files: allow cmake policy 3.10
-
-Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com>
-
-diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
-index af93de4..94fbca8 100644
---- a/build_files/build_environment/CMakeLists.txt
-+++ b/build_files/build_environment/CMakeLists.txt
-@@ -14,7 +14,7 @@
- #
- ##################################################################################################
-
--cmake_minimum_required(VERSION 3.5)
-+cmake_minimum_required(VERSION 3.5...3.10)
- project("BlenderDependencies")
- if(POLICY CMP0135)
- cmake_policy(SET CMP0135 NEW) # CMake 3.24+ Set the date/time for extracted files to time of extraction
---
-2.51.2
-
-
-From 756762326790f95bff3fb1f9c92805be92029fcb Mon Sep 17 00:00:00 2001
-From: Paul Zander <negril.nx+gentoo@gmail.com>
-Date: Thu, 30 Oct 2025 12:05:49 +0100
-Subject: [PATCH 2/3] extern/quadriflow/lemon: allow cmake policy 3.10
-
-Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com>
-
-diff --git a/extern/quadriflow/3rd/lemon-1.3.1/CMakeLists.txt b/extern/quadriflow/3rd/lemon-1.3.1/CMakeLists.txt
-index a56dbc5..459aff4 100644
---- a/extern/quadriflow/3rd/lemon-1.3.1/CMakeLists.txt
-+++ b/extern/quadriflow/3rd/lemon-1.3.1/CMakeLists.txt
-@@ -1,4 +1,4 @@
--CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
-+CMAKE_MINIMUM_REQUIRED(VERSION 3.1...3.10)
-
- SET(PROJECT_NAME "LEMON")
- PROJECT(${PROJECT_NAME})
---
-2.51.2
-
-
-From 6512020264db7523123aa26dabba621783484815 Mon Sep 17 00:00:00 2001
-From: Paul Zander <negril.nx+gentoo@gmail.com>
-Date: Thu, 30 Oct 2025 12:05:56 +0100
-Subject: [PATCH 3/3] intern/ghost: allow cmake policy 3.10
-
-Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com>
-
-diff --git a/intern/ghost/test/CMakeLists.txt b/intern/ghost/test/CMakeLists.txt
-index 60fab05..ff95da2 100644
---- a/intern/ghost/test/CMakeLists.txt
-+++ b/intern/ghost/test/CMakeLists.txt
-@@ -15,7 +15,7 @@ cmake_policy(SET CMP0010 NEW)
- # Input directories must have `CMakeLists.txt`.
- cmake_policy(SET CMP0014 NEW)
-
--cmake_minimum_required(VERSION 3.5)
-+cmake_minimum_required(VERSION 3.5...3.10)
-
- project(GhostMultiTest)
-
---
-2.51.2
-
diff --git a/media-gfx/blender/files/blender-5.0.0-osd-omp-link.patch b/media-gfx/blender/files/blender-5.0.0-osd-omp-link.patch
deleted file mode 100644
index 8620b9d8ab49..000000000000
--- a/media-gfx/blender/files/blender-5.0.0-osd-omp-link.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-OpenSubdiv's CPU backend may be built with OpenMP (and built by default).
-Unfortunately, OSD does not fill OpenMP in INTERFACE_LINK_LIBRARIES,
-causing __kmpc_fork_call link failures when built with Clang.
---- a/build_files/cmake/Modules/FindOpenSubdiv.cmake
-+++ b/build_files/cmake/Modules/FindOpenSubdiv.cmake
-@@ -56,6 +56,11 @@ foreach(COMPONENT ${_opensubdiv_FIND_COMPONENTS})
- list(APPEND _opensubdiv_LIBRARIES "${OPENSUBDIV_${UPPERCOMPONENT}_LIBRARY}")
- endforeach()
-
-+find_package(OpenMP QUIET)
-+if(OpenMP_CXX_FOUND)
-+ list(APPEND _opensubdiv_LIBRARIES OpenMP::OpenMP_CXX)
-+endif()
-+
- macro(OPENSUBDIV_CHECK_CONTROLLER
- controller_include_file
- variable_name)
diff --git a/media-gfx/blender/files/blender-5.0.0-FindClang.patch b/media-gfx/blender/files/blender-5.2.1-FindClang.patch
index b6e74c8e54dd..601611b8150e 100644
--- a/media-gfx/blender/files/blender-5.0.0-FindClang.patch
+++ b/media-gfx/blender/files/blender-5.2.1-FindClang.patch
@@ -1,7 +1,7 @@
-look for the merged clang library so we can find clang
+Use Gentoo shared Clang libraries instead of individual static archives.
--- a/build_files/cmake/Modules/FindClang.cmake
+++ b/build_files/cmake/Modules/FindClang.cmake
-@@ -54,37 +54,8 @@ find_path(CLANG_INCLUDE_DIR
+@@ -54,37 +54,8 @@
set(_clang_FIND_COMPONENTS
@@ -40,4 +40,4 @@ look for the merged clang library so we can find clang
+ clang-cpp
)
- set(_clang_LIBRARIES)
+ set(_clang_LIBRARIES "")
diff --git a/media-gfx/blender/files/blender-5.2.1-eigen-3.4.patch b/media-gfx/blender/files/blender-5.2.1-eigen-3.4.patch
new file mode 100644
index 000000000000..d227bc33f646
--- /dev/null
+++ b/media-gfx/blender/files/blender-5.2.1-eigen-3.4.patch
@@ -0,0 +1,67 @@
+Use runtime SVD computation options for compatibility with system Eigen 3.4.
+The requested full/thin U and V options are unchanged.
+
+--- a/intern/libmv/libmv/multiview/euclidean_resection.cc
++++ b/intern/libmv/libmv/multiview/euclidean_resection.cc
+@@ -107,7 +107,7 @@
+
+ // Find the unit quaternion q that maximizes qNq. It is the eigenvector
+ // corresponding to the lagest eigenvalue.
+- Vec4 q = N.jacobiSvd<Eigen::ComputeFullU>().matrixU().col(0);
++ Vec4 q = N.jacobiSvd(Eigen::ComputeFullU).matrixU().col(0);
+
+ // Retrieve the 3x3 rotation matrix.
+ Vec4 qq = q.array() * q.array();
+@@ -246,7 +246,7 @@
+ }
+
+ int num_lambda = num_points + 1; // Dimension of the null space of M.
+- Mat V = M.jacobiSvd<Eigen::ComputeFullV>().matrixV().block(
++ Mat V = M.jacobiSvd(Eigen::ComputeFullV).matrixV().block(
+ 0, num_m_rows, num_m_columns, num_lambda);
+
+ // TODO(vess): The number of constraint equations in K (num_k_rows) must be
+@@ -303,7 +303,7 @@
+ }
+ }
+ Vec L_sq =
+- K.jacobiSvd<Eigen::ComputeFullV>().matrixV().col(num_k_columns - 1);
++ K.jacobiSvd(Eigen::ComputeFullV).matrixV().col(num_k_columns - 1);
+
+ // Pivot on the largest element for numerical stability. Afterwards recover
+ // the sign of the lambda solution.
+--- a/intern/libmv/libmv/tracking/track_region.cc
++++ b/intern/libmv/libmv/tracking/track_region.cc
+@@ -940,7 +940,7 @@
+ }
+
+ // TODO(keir): Check solution quality.
+- Vec4 a = Q1.jacobiSvd<Eigen::ComputeThinU | Eigen::ComputeThinV>().solve(Q2);
++ Vec4 a = Q1.jacobiSvd(Eigen::ComputeThinU | Eigen::ComputeThinV).solve(Q2);
+ parameters[2] = a[0];
+ parameters[3] = a[1];
+ parameters[4] = a[2];
+--- a/intern/dualcon/intern/octree.cpp
++++ b/intern/dualcon/intern/octree.cpp
+@@ -2184,7 +2184,7 @@
+ static void pseudoInverse(const Eigen::Matrix3f &a, Eigen::Matrix3f &result, float tolerance)
+ {
+ const int Options = Eigen::ComputeFullU | Eigen::ComputeFullV;
+- Eigen::JacobiSVD<Eigen::Matrix3f, Options> svd = a.jacobiSvd<Options>();
++ Eigen::JacobiSVD<Eigen::Matrix3f> svd = a.jacobiSvd(Options);
+
+ result = svd.matrixV() *
+ Eigen::Vector3f((svd.singularValues().array().abs() > tolerance)
+--- a/intern/slim/intern/slim.cpp
++++ b/intern/slim/intern/slim.cpp
+@@ -208,8 +208,8 @@
+ Eigen::PlainObjectBase<DerivedV> &V)
+ {
+ using namespace std;
+- Eigen::JacobiSVD<DerivedA, Eigen::ComputeFullU | Eigen::ComputeFullV> svd;
+- svd.compute(A);
++ Eigen::JacobiSVD<DerivedA> svd;
++ svd.compute(A, Eigen::ComputeFullU | Eigen::ComputeFullV);
+ U = svd.matrixU();
+ V = svd.matrixV();
+ S = svd.singularValues();
diff --git a/media-gfx/blender/files/blender-5.2.1-osd-omp-link.patch b/media-gfx/blender/files/blender-5.2.1-osd-omp-link.patch
new file mode 100644
index 000000000000..4dcf19b89ddc
--- /dev/null
+++ b/media-gfx/blender/files/blender-5.2.1-osd-omp-link.patch
@@ -0,0 +1,15 @@
+Link the OpenMP runtime used by system OpenSubdiv.
+--- a/build_files/cmake/Modules/FindOpenSubdiv.cmake
++++ b/build_files/cmake/Modules/FindOpenSubdiv.cmake
+@@ -56,6 +56,11 @@
+ list(APPEND _opensubdiv_LIBRARIES "${OPENSUBDIV_${UPPERCOMPONENT}_LIBRARY}")
+ endforeach()
+
++find_package(OpenMP QUIET)
++if(OpenMP_CXX_FOUND)
++ list(APPEND _opensubdiv_LIBRARIES OpenMP::OpenMP_CXX)
++endif()
++
+ # Return values:
+ # - `${variable_name}`: `TRUE` if the controller include file exists.
+ function(OPENSUBDIV_CHECK_CONTROLLER
diff --git a/media-gfx/blender/files/blender-5.2.1-osl-python-types.patch b/media-gfx/blender/files/blender-5.2.1-osl-python-types.patch
new file mode 100644
index 000000000000..d027fe9d8f9b
--- /dev/null
+++ b/media-gfx/blender/files/blender-5.2.1-osl-python-types.patch
@@ -0,0 +1,20 @@
+--- a/intern/cycles/blender/addon/osl.py
++++ b/intern/cycles/blender/addon/osl.py
+@@ -271,6 +271,8 @@
+ def update_script_node(node, report):
+ """compile and update shader script node"""
+ import os
++ # Register the TypeDesc bindings used by the system oslquery module.
++ import OpenImageIO
+ import oslquery
+
+ oso_file_remove = False
+@@ -326,6 +328,8 @@
+ def update_custom_camera_shader(cam, report):
+ """compile and update custom camera shader"""
+ import os
++ # Register the TypeDesc bindings used by the system oslquery module.
++ import OpenImageIO
+ import oslquery
+
+ oso_file_remove = False
diff --git a/media-gfx/blender/files/blender-9999-don-t-show-variable-names.patch b/media-gfx/blender/files/blender-9999-don-t-show-variable-names.patch
deleted file mode 100644
index 98ee4403c8e8..000000000000
--- a/media-gfx/blender/files/blender-9999-don-t-show-variable-names.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From b15763a8a1dca3e8feb7852e14c5cb84f9aacca5 Mon Sep 17 00:00:00 2001
-From: Paul Zander <negril.nx@gmail.com>
-Date: Sun, 17 Aug 2025 17:43:48 +0200
-Subject: [PATCH] don't show variable names
-
-Signed-off-by: Paul Zander <negril.nx@gmail.com>
-
-diff --git a/source/blender/nodes/composite/nodes/node_composite_pixelate.cc b/source/blender/nodes/composite/nodes/node_composite_pixelate.cc
-index 1315312c612..e2cdbabcc31 100644
---- a/source/blender/nodes/composite/nodes/node_composite_pixelate.cc
-+++ b/source/blender/nodes/composite/nodes/node_composite_pixelate.cc
-@@ -99,8 +99,8 @@ class PixelateOperation : public NodeOperation {
- }
- }
-
-- int2 size = end - start;
-- int count = size.x * size.y;
-+ int2 pixel = end - start;
-+ int count = pixel.x * pixel.y;
- output.store_pixel(texel, accumulated_color / count);
- });
- }
---
-2.50.1
-
diff --git a/media-gfx/blender/metadata.xml b/media-gfx/blender/metadata.xml
index 1ac1b80a68f9..d1a29b6cf5e1 100644
--- a/media-gfx/blender/metadata.xml
+++ b/media-gfx/blender/metadata.xml
@@ -1,18 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="person" proxied="yes">
- <email>negril.nx+gentoo@gmail.com</email>
- <name>Paul Zander</name>
- </maintainer>
- <maintainer type="person" proxied="yes">
- <email>darkdefende@gmail.com</email>
- <name>Sebastian Parborg</name>
- </maintainer>
- <maintainer type="project" proxied="proxy">
- <email>proxy-maint@gentoo.org</email>
- <name>Proxy Maintainers</name>
- </maintainer>
+ <!-- Local overlay ebuild; derived from Gentoo packaging. -->
<longdescription>
Blender, the open source software for 3D modeling, animation,
rendering, post-production, interactive creation and playback.
@@ -25,11 +14,6 @@
<flag name="bullet">
Enable Bullet (Physics Engine).
</flag>
- <flag name="collada">
- Add support for Collada interchange format through
- <pkg>media-libs/opencollada</pkg>.
- </flag>
- <flag name="color-management">Enable color management via <pkg>media-libs/opencolorio</pkg>.</flag>
<flag name="cuda">
Build cycles renderer with nVidia CUDA support.
</flag>
diff --git a/sci-libs/vtk/vtk-9.5.2.ebuild b/sci-libs/vtk/vtk-9.5.2.ebuild
index d4ebb007674e..bfad27d07432 100644
--- a/sci-libs/vtk/vtk-9.5.2.ebuild
+++ b/sci-libs/vtk/vtk-9.5.2.ebuild
@@ -13,9 +13,6 @@ PYTHON_REQ_USE="tk?"
WEBAPP_OPTIONAL=yes
WEBAPP_MANUAL_SLOT=yes
-# bug #982155
-CMAKE_REMOVE_MODULES_LIST=( vtkModule )
-
inherit check-reqs cmake cuda java-pkg-opt-2 multiprocessing python-single-r1 toolchain-funcs virtualx webapp
# Short package version
@@ -473,6 +470,8 @@ src_configure() {
# -DVTK_MODULE_ENABLE_VTK_glad
# -DVTK_MODULE_ENABLE_VTK_h5part
-DVTK_MODULE_ENABLE_VTK_hdf5="YES"
+ # bug #982169
+ -DHDF5_IS_PARALLEL="$(usex mpi "YES" "NO")"
# -DVTK_MODULE_ENABLE_VTK_ioss
-DVTK_MODULE_ENABLE_VTK_jpeg="YES"
-DVTK_MODULE_ENABLE_VTK_jsoncpp="YES"