commit:     c629fd89347b02d5154554330e628b73f066ff5d
Author:     Paul Zander <negril.nx+gentoo <AT> gmail <DOT> com>
AuthorDate: Fri Jan 24 17:38:43 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Mar 16 15:04:51 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c629fd89

media-gfx/blender-bin: update ebuilds

Reorder variables to make pkgcheck happy.
Restrict test as there are none.
Introduce USE for cuda, hip and oneapi to remove libraries that link to not
installed libraries.
Update RDEPEND.
Wrap downloading in src_unpack in some validation logic.
Move code modification to src_prepare.
Add empty src_configure and src_compile so the default versions are not used.
Use ED instead of D in src_install, so this can work in prefix.

Signed-off-by: Paul Zander <negril.nx+gentoo <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-gfx/blender-bin/blender-bin-3.6.19.ebuild | 158 ++++++++++++++++----
 media-gfx/blender-bin/blender-bin-4.2.5.ebuild  | 181 +++++++++++++++++++----
 media-gfx/blender-bin/blender-bin-9999.ebuild   | 185 ++++++++++++++++++++----
 media-gfx/blender-bin/metadata.xml              |   8 +
 4 files changed, 439 insertions(+), 93 deletions(-)

diff --git a/media-gfx/blender-bin/blender-bin-3.6.19.ebuild 
b/media-gfx/blender-bin/blender-bin-3.6.19.ebuild
index 27b8def27ff6..a4f751ca53e5 100644
--- a/media-gfx/blender-bin/blender-bin-3.6.19.ebuild
+++ b/media-gfx/blender-bin/blender-bin-3.6.19.ebuild
@@ -7,15 +7,13 @@ inherit desktop xdg-utils
 
 DESCRIPTION="3D Creation/Animation/Publishing System"
 HOMEPAGE="https://www.blender.org";
+
 LICENSE="GPL-3+ Apache-2.0"
-SLOT="${PV%.*}"
-RESTRICT="strip"
+SLOT="$(ver_cut 1-2)"
 
-if [[ ${PV} = *9999* ]] ; then
-       BDEPEND="
-               app-misc/jq
-       "
-       PROPERTIES+=" live"
+if [[ ${PV} == *9999* ]] ; then
+       # BLENDER_BIN_URL can be used to point to the url of an upstream 
release archive.
+       PROPERTIES="live"
 else
        SRC_URI="
                
https://download.blender.org/release/Blender${SLOT}/blender-${PV}-linux-x64.tar.xz
@@ -23,51 +21,149 @@ else
        KEYWORDS="~amd64"
 fi
 
+IUSE="oneapi"
+RESTRICT="strip test"
+
+QA_PREBUILT="opt/${P}/*"
+
+if [[ ${PV} == *9999* ]] ; then
+       BDEPEND="
+               app-misc/jq
+       "
+fi
+
+# no := here, this is prebuilt
 RDEPEND="
-media-libs/libglvnd
-sys-libs/glibc
-virtual/libcrypt
-x11-base/xorg-server
+       app-arch/zstd
+       media-libs/libglvnd[X]
+       sys-libs/glibc
+       sys-libs/ncurses
+       sys-libs/zlib
+       virtual/libcrypt
+       x11-base/xorg-server
+       x11-libs/libICE
+       x11-libs/libSM
+       x11-libs/libX11
+       x11-libs/libXext
+       x11-libs/libXfixes
+       x11-libs/libXi
+       x11-libs/libXrender
+       x11-libs/libXt
+       x11-libs/libXxf86vm
+       x11-libs/libxkbcommon
+       oneapi? (
+               dev-libs/level-zero
+       )
 "
 
 src_unpack() {
-       mkdir -p "${S}"
-       if [[ ${PV} = *9999* ]] ; then
-               if [[ -z "${BLENDER_BIN_URL}" ]]; then
-                       latest=$(wget -O - 
"https://builder.blender.org/download/daily/?format=json&v=1"; | \
-                               jq -r 'map(select(.platform == "linux" and 
.branch == "main" and .file_extension == "xz")) | .[0].url' )
+       local my_A
+       if [[ ${PV} == *9999* ]] ; then
+               local file_name url
+               if [[ -n "${BLENDER_BIN_URL}" ]]; then
+                       einfo "Using ${BLENDER_BIN_URL} as SRC_URI. You are on 
your own."
+                       file_name="$(basename "${BLENDER_BIN_URL}")"
+                       url="${BLENDER_BIN_URL}"
                else
-                       latest=$BLENDER_BIN_URL
+                       wget 
"https://builder.blender.org/download/daily/?format=json&v=2"; -O 
"${T}/release.json" \
+                               || die "failed to retrieve release.json"
+
+                       local branch commit rel_json release_cycle version
+                       rel_json=$(
+                               jq -r 'map(select(.platform == "linux" and 
.branch == "'"${EGIT_BRANCH:-main}"'" and .file_extension == "xz"))
+                                       | .[0]' \
+                                       "${T}/release.json"
+                       )
+                       branch=$( echo "${rel_json}" | jq -r '.branch' )
+                       commit=$( echo "${rel_json}" | jq -r '.hash' )
+                       file_name=$( echo "${rel_json}" | jq -r '.file_name' )
+                       release_cycle=$( echo "${rel_json}" | jq -r 
'.release_cycle' )
+                       url=$( echo "${rel_json}" | jq -r '.url' )
+                       version=$( echo "${rel_json}" | jq -r '.version' )
+
+                       einfo "Fetching 
blender-${version}-${release_cycle}-${branch}-${commit}"
+                       einfo "            url: ${url}"
+                       einfo "        version: ${version}"
+                       einfo "  release_cycle: ${release_cycle}"
+                       einfo "         branch: ${branch}"
+                       einfo "         commit: ${commit}"
+                       einfo
                fi
 
-               echo $latest
+               wget -c "${url}"{,.sha256} -P "${T}" || die "failed to fetch 
${url}"
+
+               my_A="${T}/${file_name}"
 
-               wget -c "$latest" -O "${T}/blender_daily.tar.xz" || die
-               tar xf "${T}/blender_daily.tar.xz" --directory "${S}" 
--strip-components=1 || die
+               # Check sha256sum
+               local sha256sum_exp sha256sum_is
+               sha256sum_exp="$(cat "${T}/${file_name}.sha256")"
+               sha256sum_is="$(sha256sum "${T}/${file_name}" | cut -d ' ' -f 
1)"
+               if [[ "${sha256sum_exp}" != "${sha256sum_is}" ]]; then
+                       eerror "sha256sum mismatch for ${file_name}"
+                       eerror "  expected ${sha256sum_exp}"
+                       eerror "  found    ${sha256sum_is}"
+                       die "sha256sum mismatch"
+               fi
        else
-               tar xf "${DISTDIR}/blender-${PV}-linux-x64.tar.xz" --directory 
"${S}" --strip-components=1 || die
+               my_A="${DISTDIR}/blender-${PV}-linux-x64.tar.xz"
        fi
+
+       unpack "${my_A}"
+
+       local dirs
+       dirs="$(find "${WORKDIR}" -mindepth 1 -maxdepth 1 | wc -l)"
+       if [[ "${dirs}" -ne 1 ]]; then
+               die "unpack resulted in ${dirs} dirs in ${WORKDIR}"
+       fi
+
+       mv "${WORKDIR}"/* "${S}" || die "mv"
 }
 
-src_install() {
-       declare BLENDER_OPT_HOME=/opt/${P}
+src_prepare() {
+       default
+
+       if ! use oneapi; then
+               rm \
+                       lib/libpi_level_zero* \
+                       || eqawarn "failed cleaning oneapi"
+       fi
 
        # Prepare icons and .desktop for menu entry
-       mv blender.desktop ${P}.desktop
-       mv blender.svg ${P}.svg
-       mv blender-symbolic.svg ${P}-symbolic.svg
-       sed -i -e "s:=blender:=${P}:" -e "s:Name=Blender:Name=Blender Bin 
${PV}:" "${P}.desktop" || die
+       mv blender.desktop "${P}.desktop" || die
+       mv blender.svg "${P}.svg" || die
+       mv blender-symbolic.svg "${P}-symbolic.svg" || die
+
+       # X-KDE-RunOnDiscreteGpu is obsolete, so trim it
+       sed \
+               -e "s/=blender/=${P}/" \
+               -e "s/Name=Blender/Name=Blender Bin ${PV}/" \
+               -e "/X-KDE-RunOnDiscreteGpu.*/d" \
+               -i "${P}.desktop" || die
+}
+
+src_configure() {
+       :;
+}
+
+src_compile() {
+       :;
+}
+
+src_install() {
+       # We could use the version from the release.json instead of PN here
+       local BLENDER_OPT_HOME="/opt/${P}"
 
        # Install icons and .desktop for menu entry
        doicon -s scalable "${S}"/blender*.svg
-       domenu ${P}.desktop
+       domenu "${P}.desktop"
 
        # Install all the blender files in /opt
-       dodir ${BLENDER_OPT_HOME%/*}
-       mv "${S}" "${D}"${BLENDER_OPT_HOME} || die
+       dodir "${BLENDER_OPT_HOME%/*}"
+       mv "${S}" "${ED}${BLENDER_OPT_HOME}" || die
 
        # Create symlink /usr/bin/blender-bin
-       dosym ${BLENDER_OPT_HOME}/blender /usr/bin/${P}
+       dodir "/usr/bin"
+       dosym -r "${BLENDER_OPT_HOME}/blender" "/usr/bin/${P}"
 }
 
 pkg_postinst() {

diff --git a/media-gfx/blender-bin/blender-bin-4.2.5.ebuild 
b/media-gfx/blender-bin/blender-bin-4.2.5.ebuild
index 27b8def27ff6..87dd1d99ad52 100644
--- a/media-gfx/blender-bin/blender-bin-4.2.5.ebuild
+++ b/media-gfx/blender-bin/blender-bin-4.2.5.ebuild
@@ -7,15 +7,13 @@ inherit desktop xdg-utils
 
 DESCRIPTION="3D Creation/Animation/Publishing System"
 HOMEPAGE="https://www.blender.org";
+
 LICENSE="GPL-3+ Apache-2.0"
-SLOT="${PV%.*}"
-RESTRICT="strip"
+SLOT="$(ver_cut 1-2)"
 
-if [[ ${PV} = *9999* ]] ; then
-       BDEPEND="
-               app-misc/jq
-       "
-       PROPERTIES+=" live"
+if [[ ${PV} == *9999* ]] ; then
+       # BLENDER_BIN_URL can be used to point to the url of an upstream 
release archive.
+       PROPERTIES="live"
 else
        SRC_URI="
                
https://download.blender.org/release/Blender${SLOT}/blender-${PV}-linux-x64.tar.xz
@@ -23,51 +21,172 @@ else
        KEYWORDS="~amd64"
 fi
 
+IUSE="cuda hip oneapi"
+RESTRICT="strip test"
+
+QA_PREBUILT="opt/${P}/*"
+
+if [[ ${PV} == *9999* ]] ; then
+       BDEPEND="
+               app-misc/jq
+       "
+fi
+
+# no := here, this is prebuilt
 RDEPEND="
-media-libs/libglvnd
-sys-libs/glibc
-virtual/libcrypt
-x11-base/xorg-server
+       app-arch/zstd
+       media-libs/libglvnd[X]
+       sys-apps/util-linux
+       sys-libs/glibc
+       sys-libs/ncurses
+       sys-libs/zlib
+       virtual/libcrypt
+       x11-base/xorg-server
+       x11-libs/libICE
+       x11-libs/libSM
+       x11-libs/libX11
+       x11-libs/libXext
+       x11-libs/libXfixes
+       x11-libs/libXi
+       x11-libs/libXrender
+       x11-libs/libXt
+       x11-libs/libXxf86vm
+       x11-libs/libdrm
+       x11-libs/libxcb
+       x11-libs/libxkbcommon
+       cuda? (
+               x11-drivers/nvidia-drivers
+       )
+       hip? (
+               >=dev-util/hip-6
+       )
+       oneapi? (
+               dev-libs/level-zero
+       )
 "
 
 src_unpack() {
-       mkdir -p "${S}"
-       if [[ ${PV} = *9999* ]] ; then
-               if [[ -z "${BLENDER_BIN_URL}" ]]; then
-                       latest=$(wget -O - 
"https://builder.blender.org/download/daily/?format=json&v=1"; | \
-                               jq -r 'map(select(.platform == "linux" and 
.branch == "main" and .file_extension == "xz")) | .[0].url' )
+       local my_A
+       if [[ ${PV} == *9999* ]] ; then
+               local file_name url
+               if [[ -n "${BLENDER_BIN_URL}" ]]; then
+                       einfo "Using ${BLENDER_BIN_URL} as SRC_URI. You are on 
your own."
+                       file_name="$(basename "${BLENDER_BIN_URL}")"
+                       url="${BLENDER_BIN_URL}"
                else
-                       latest=$BLENDER_BIN_URL
+                       wget 
"https://builder.blender.org/download/daily/?format=json&v=2"; -O 
"${T}/release.json" \
+                               || die "failed to retrieve release.json"
+
+                       local branch commit rel_json release_cycle version
+                       rel_json=$(
+                               jq -r 'map(select(.platform == "linux" and 
.branch == "'"${EGIT_BRANCH:-main}"'" and .file_extension == "xz"))
+                                       | .[0]' \
+                                       "${T}/release.json"
+                       )
+                       branch=$( echo "${rel_json}" | jq -r '.branch' )
+                       commit=$( echo "${rel_json}" | jq -r '.hash' )
+                       file_name=$( echo "${rel_json}" | jq -r '.file_name' )
+                       release_cycle=$( echo "${rel_json}" | jq -r 
'.release_cycle' )
+                       url=$( echo "${rel_json}" | jq -r '.url' )
+                       version=$( echo "${rel_json}" | jq -r '.version' )
+
+                       einfo "Fetching 
blender-${version}-${release_cycle}-${branch}-${commit}"
+                       einfo "            url: ${url}"
+                       einfo "        version: ${version}"
+                       einfo "  release_cycle: ${release_cycle}"
+                       einfo "         branch: ${branch}"
+                       einfo "         commit: ${commit}"
+                       einfo
                fi
 
-               echo $latest
+               wget -c "${url}"{,.sha256} -P "${T}" || die "failed to fetch 
${url}"
 
-               wget -c "$latest" -O "${T}/blender_daily.tar.xz" || die
-               tar xf "${T}/blender_daily.tar.xz" --directory "${S}" 
--strip-components=1 || die
+               my_A="${T}/${file_name}"
+
+               # Check sha256sum
+               local sha256sum_exp sha256sum_is
+               sha256sum_exp="$(cat "${T}/${file_name}.sha256")"
+               sha256sum_is="$(sha256sum "${T}/${file_name}" | cut -d ' ' -f 
1)"
+               if [[ "${sha256sum_exp}" != "${sha256sum_is}" ]]; then
+                       eerror "sha256sum mismatch for ${file_name}"
+                       eerror "  expected ${sha256sum_exp}"
+                       eerror "  found    ${sha256sum_is}"
+                       die "sha256sum mismatch"
+               fi
        else
-               tar xf "${DISTDIR}/blender-${PV}-linux-x64.tar.xz" --directory 
"${S}" --strip-components=1 || die
+               my_A="${DISTDIR}/blender-${PV}-linux-x64.tar.xz"
+       fi
+
+       unpack "${my_A}"
+
+       local dirs
+       dirs="$(find "${WORKDIR}" -mindepth 1 -maxdepth 1 | wc -l)"
+       if [[ "${dirs}" -ne 1 ]]; then
+               die "unpack resulted in ${dirs} dirs in ${WORKDIR}"
        fi
+
+       mv "${WORKDIR}"/* "${S}" || die "mv"
 }
 
-src_install() {
-       declare BLENDER_OPT_HOME=/opt/${P}
+src_prepare() {
+       default
+
+       # Remove unused gpu libraries so we don't get missing libraries from QA
+       if ! use cuda; then
+               rm \
+                       lib/libOpenImageDenoise_device_cuda* \
+                       || eqawarn "failed cleaning cuda"
+       fi
+
+       if ! use hip; then
+               rm \
+                       lib/libOpenImageDenoise_device_hip* \
+                       || eqawarn "failed cleaning hip"
+       fi
+
+       if ! use oneapi; then
+               rm \
+                       lib/libOpenImageDenoise_device_sycl* \
+                       lib/libpi_level_zero* \
+                       || eqawarn "failed cleaning oneapi"
+       fi
 
        # Prepare icons and .desktop for menu entry
-       mv blender.desktop ${P}.desktop
-       mv blender.svg ${P}.svg
-       mv blender-symbolic.svg ${P}-symbolic.svg
-       sed -i -e "s:=blender:=${P}:" -e "s:Name=Blender:Name=Blender Bin 
${PV}:" "${P}.desktop" || die
+       mv blender.desktop "${P}.desktop" || die
+       mv blender.svg "${P}.svg" || die
+       mv blender-symbolic.svg "${P}-symbolic.svg" || die
+
+       # X-KDE-RunOnDiscreteGpu is obsolete, so trim it
+       sed \
+               -e "s/=blender/=${P}/" \
+               -e "s/Name=Blender/Name=Blender Bin ${PV}/" \
+               -e "/X-KDE-RunOnDiscreteGpu.*/d" \
+               -i "${P}.desktop" || die
+}
+
+src_configure() {
+       :;
+}
+
+src_compile() {
+       :;
+}
+
+src_install() {
+       # We could use the version from the release.json instead of PN here
+       local BLENDER_OPT_HOME="/opt/${P}"
 
        # Install icons and .desktop for menu entry
        doicon -s scalable "${S}"/blender*.svg
-       domenu ${P}.desktop
+       domenu "${P}.desktop"
 
        # Install all the blender files in /opt
-       dodir ${BLENDER_OPT_HOME%/*}
-       mv "${S}" "${D}"${BLENDER_OPT_HOME} || die
+       dodir "${BLENDER_OPT_HOME%/*}"
+       mv "${S}" "${ED}${BLENDER_OPT_HOME}" || die
 
        # Create symlink /usr/bin/blender-bin
-       dosym ${BLENDER_OPT_HOME}/blender /usr/bin/${P}
+       dodir "/usr/bin"
+       dosym -r "${BLENDER_OPT_HOME}/blender" "/usr/bin/${P}"
 }
 
 pkg_postinst() {

diff --git a/media-gfx/blender-bin/blender-bin-9999.ebuild 
b/media-gfx/blender-bin/blender-bin-9999.ebuild
index 27b8def27ff6..677a23f3a85c 100644
--- a/media-gfx/blender-bin/blender-bin-9999.ebuild
+++ b/media-gfx/blender-bin/blender-bin-9999.ebuild
@@ -7,15 +7,13 @@ inherit desktop xdg-utils
 
 DESCRIPTION="3D Creation/Animation/Publishing System"
 HOMEPAGE="https://www.blender.org";
+
 LICENSE="GPL-3+ Apache-2.0"
-SLOT="${PV%.*}"
-RESTRICT="strip"
+SLOT="$(ver_cut 1-2)"
 
-if [[ ${PV} = *9999* ]] ; then
-       BDEPEND="
-               app-misc/jq
-       "
-       PROPERTIES+=" live"
+if [[ ${PV} == *9999* ]] ; then
+       # BLENDER_BIN_URL can be used to point to the url of an upstream 
release archive.
+       PROPERTIES="live"
 else
        SRC_URI="
                
https://download.blender.org/release/Blender${SLOT}/blender-${PV}-linux-x64.tar.xz
@@ -23,51 +21,176 @@ else
        KEYWORDS="~amd64"
 fi
 
+IUSE="cuda hip oneapi"
+RESTRICT="strip test"
+
+QA_PREBUILT="opt/${P}/*"
+
+if [[ ${PV} == *9999* ]] ; then
+       BDEPEND="
+               app-misc/jq
+       "
+fi
+
+# no := here, this is prebuilt
 RDEPEND="
-media-libs/libglvnd
-sys-libs/glibc
-virtual/libcrypt
-x11-base/xorg-server
+       media-libs/libglvnd[X]
+       sys-apps/util-linux
+       sys-libs/glibc
+       sys-libs/ncurses
+       virtual/libcrypt
+       x11-base/xorg-server
+       x11-libs/libICE
+       x11-libs/libSM
+       x11-libs/libX11
+       x11-libs/libXext
+       x11-libs/libXfixes
+       x11-libs/libXi
+       x11-libs/libXrender
+       x11-libs/libXt
+       x11-libs/libXxf86vm
+       x11-libs/libdrm
+       x11-libs/libxkbcommon
+       cuda? (
+               x11-drivers/nvidia-drivers
+       )
+       hip? (
+               >=dev-util/hip-6
+       )
+       oneapi? (
+               dev-libs/level-zero
+       )
 "
 
 src_unpack() {
-       mkdir -p "${S}"
-       if [[ ${PV} = *9999* ]] ; then
-               if [[ -z "${BLENDER_BIN_URL}" ]]; then
-                       latest=$(wget -O - 
"https://builder.blender.org/download/daily/?format=json&v=1"; | \
-                               jq -r 'map(select(.platform == "linux" and 
.branch == "main" and .file_extension == "xz")) | .[0].url' )
+       local my_A
+       if [[ ${PV} == *9999* ]] ; then
+               local file_name url
+               if [[ -n "${BLENDER_BIN_URL}" ]]; then
+                       einfo "Using ${BLENDER_BIN_URL} as SRC_URI. You are on 
your own."
+                       file_name="$(basename "${BLENDER_BIN_URL}")"
+                       url="${BLENDER_BIN_URL}"
                else
-                       latest=$BLENDER_BIN_URL
+                       wget 
"https://builder.blender.org/download/daily/?format=json&v=2"; -O 
"${T}/release.json" \
+                               || die "failed to retrieve release.json"
+
+                       local branch commit rel_json release_cycle version
+                       rel_json=$(
+                               jq -r 'map(select(.platform == "linux" and 
.branch == "'"${EGIT_BRANCH:-main}"'" and .file_extension == "xz"))
+                                       | .[0]' \
+                                       "${T}/release.json"
+                       )
+                       branch=$( echo "${rel_json}" | jq -r '.branch' )
+                       commit=$( echo "${rel_json}" | jq -r '.hash' )
+                       file_name=$( echo "${rel_json}" | jq -r '.file_name' )
+                       release_cycle=$( echo "${rel_json}" | jq -r 
'.release_cycle' )
+                       url=$( echo "${rel_json}" | jq -r '.url' )
+                       version=$( echo "${rel_json}" | jq -r '.version' )
+
+                       einfo "Fetching 
blender-${version}-${release_cycle}-${branch}-${commit}"
+                       einfo "            url: ${url}"
+                       einfo "        version: ${version}"
+                       einfo "  release_cycle: ${release_cycle}"
+                       einfo "         branch: ${branch}"
+                       einfo "         commit: ${commit}"
+                       einfo
                fi
 
-               echo $latest
+               wget -c "${url}"{,.sha256} -P "${T}" || die "failed to fetch 
${url}"
 
-               wget -c "$latest" -O "${T}/blender_daily.tar.xz" || die
-               tar xf "${T}/blender_daily.tar.xz" --directory "${S}" 
--strip-components=1 || die
+               my_A="${T}/${file_name}"
+
+               # Check sha256sum
+               local sha256sum_exp sha256sum_is
+               sha256sum_exp="$(cat "${T}/${file_name}.sha256")"
+               sha256sum_is="$(sha256sum "${T}/${file_name}" | cut -d ' ' -f 
1)"
+               if [[ "${sha256sum_exp}" != "${sha256sum_is}" ]]; then
+                       eerror "sha256sum mismatch for ${file_name}"
+                       eerror "  expected ${sha256sum_exp}"
+                       eerror "  found    ${sha256sum_is}"
+                       die "sha256sum mismatch"
+               fi
        else
-               tar xf "${DISTDIR}/blender-${PV}-linux-x64.tar.xz" --directory 
"${S}" --strip-components=1 || die
+               my_A="${DISTDIR}/blender-${PV}-linux-x64.tar.xz"
        fi
+
+       unpack "${my_A}"
+
+       local dirs
+       dirs="$(find "${WORKDIR}" -mindepth 1 -maxdepth 1 | wc -l)"
+       if [[ "${dirs}" -ne 1 ]]; then
+               die "unpack resulted in ${dirs} dirs in ${WORKDIR}"
+       fi
+
+       mv "${WORKDIR}"/* "${S}" || die "mv"
 }
 
-src_install() {
-       declare BLENDER_OPT_HOME=/opt/${P}
+src_prepare() {
+       default
+
+       # Remove unused gpu libraries so we don't get missing libraries from QA
+       if ! use cuda; then
+               rm \
+                       lib/libOpenImageDenoise_device_cuda* \
+                       || eqawarn "failed cleaning cuda"
+       fi
+
+       if ! use hip; then
+               rm \
+                       lib/libOpenImageDenoise_device_hip* \
+                       || eqawarn "failed cleaning hip"
+       fi
+
+       if ! use oneapi; then
+               rm \
+                       lib/libOpenImageDenoise_device_sycl* \
+                       lib/libpi_level_zero* \
+                       || eqawarn "failed cleaning oneapi"
+       fi
 
        # Prepare icons and .desktop for menu entry
-       mv blender.desktop ${P}.desktop
-       mv blender.svg ${P}.svg
-       mv blender-symbolic.svg ${P}-symbolic.svg
-       sed -i -e "s:=blender:=${P}:" -e "s:Name=Blender:Name=Blender Bin 
${PV}:" "${P}.desktop" || die
+       mv blender.desktop "${P}.desktop" || die
+       mv blender.svg "${P}.svg" || die
+       mv blender-symbolic.svg "${P}-symbolic.svg" || die
+
+       sed \
+               -e "s/=blender/=${P}/" \
+               -e "s/Name=Blender/Name=Blender Bin ${PV}/" \
+               -i "${P}.desktop" || die
+
+       # X-KDE-RunOnDiscreteGpu is obsolete, so trim it
+       # Only effective for SLOT < 4.4
+       if grep -q "X-KDE-RunOnDiscreteGpu" "${P}.desktop"; then
+               sed \
+                       -e "/X-KDE-RunOnDiscreteGpu.*/d" \
+                       -i "${P}.desktop" || die
+       fi
+
+}
+
+src_configure() {
+       :;
+}
+
+src_compile() {
+       :;
+}
+
+src_install() {
+       # We could use the version from the release.json instead of PN here
+       local BLENDER_OPT_HOME="/opt/${P}"
 
        # Install icons and .desktop for menu entry
        doicon -s scalable "${S}"/blender*.svg
-       domenu ${P}.desktop
+       domenu "${P}.desktop"
 
        # Install all the blender files in /opt
-       dodir ${BLENDER_OPT_HOME%/*}
-       mv "${S}" "${D}"${BLENDER_OPT_HOME} || die
+       dodir "${BLENDER_OPT_HOME%/*}"
+       mv "${S}" "${ED}${BLENDER_OPT_HOME}" || die
 
        # Create symlink /usr/bin/blender-bin
-       dosym ${BLENDER_OPT_HOME}/blender /usr/bin/${P}
+       dodir "/usr/bin"
+       dosym -r "${BLENDER_OPT_HOME}/blender" "/usr/bin/${P}"
 }
 
 pkg_postinst() {

diff --git a/media-gfx/blender-bin/metadata.xml 
b/media-gfx/blender-bin/metadata.xml
index b110b28db2bc..afeb0ba78d80 100644
--- a/media-gfx/blender-bin/metadata.xml
+++ b/media-gfx/blender-bin/metadata.xml
@@ -17,4 +17,12 @@
                Blender, the open source software for 3D modeling, animation,
                rendering, post-production, interactive creation and playback.
        </longdescription>
+       <use>
+               <flag name="hip">
+                       Enable AMD HIP support (computation on GPU)
+               </flag>
+               <flag name="oneapi">
+                       Enable Intel oneAPI SyCL support (computation on GPU)
+               </flag>
+       </use>
 </pkgmetadata>

Reply via email to