diff options
| author | root <root@alpha.trunkmasters.com> | 2026-09-09 03:56:31 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-09-09 03:56:31 -0500 |
| commit | 98068fb4a1502cade02134b1834439134ca4eed1 (patch) | |
| tree | e520b2626c8751a47d5c75df8df15b9407d48462 | |
| parent | dd4dbff7d90d19cb3b8a4657236e598887ffbd41 (diff) | |
| download | baldeagleos-repo-98068fb4a1502cade02134b1834439134ca4eed1.tar.gz baldeagleos-repo-98068fb4a1502cade02134b1834439134ca4eed1.tar.xz baldeagleos-repo-98068fb4a1502cade02134b1834439134ca4eed1.zip | |
Adding metadata
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" |
