Skip to content

Commit

Permalink
blender: update to python3.12, add patch
Browse files Browse the repository at this point in the history
- fetch patch from upstream to fix build
- update to python3.12 to also fix build

Signed-off-by: Florian Brandes <[email protected]>
  • Loading branch information
gador committed Jul 7, 2024
1 parent 0134950 commit 0f3d1ea
Showing 1 changed file with 29 additions and 18 deletions.
47 changes: 29 additions & 18 deletions pkgs/applications/misc/blender/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
darwin,
dbus,
embree,
fetchpatch,
fetchurl,
fetchzip,
ffmpeg,
Expand Down Expand Up @@ -111,7 +112,14 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-T7s69k0/hN9ccQN0hFQibBiFwawu1Tc9DOoegOgsCEg=";
};

patches = [ ./draco.patch ] ++ lib.optional stdenv.isDarwin ./darwin.patch;
patches = [
./draco.patch
# https://projects.blender.org/blender/blender/pulls/121636
(fetchpatch {
url = " https://projects.blender.org/blender/blender/commit/ae35b5758791bebb21741f9b505b9fca347ae50e.patch";
hash = "sha256-xUi55+7aiwEjtjqOi8to1YxdPlsBUThCCkCa5T6LIQc=";
})
] ++ lib.optional stdenv.isDarwin ./darwin.patch;

postPatch =
(
Expand All @@ -130,12 +138,12 @@ stdenv.mkDerivation (finalAttrs: {
''
else
''
substituteInPlace extern/clew/src/clew.c --replace '"libOpenCL.so"' '"${ocl-icd}/lib/libOpenCL.so"'
substituteInPlace extern/clew/src/clew.c --replace-fail '"libOpenCL.so"' '"${ocl-icd}/lib/libOpenCL.so"'
''
)
+ (lib.optionalString hipSupport ''
substituteInPlace extern/hipew/src/hipew.c --replace '"/opt/rocm/hip/lib/libamdhip64.so"' '"${rocmPackages.clr}/lib/libamdhip64.so"'
substituteInPlace extern/hipew/src/hipew.c --replace '"opt/rocm/hip/bin"' '"${rocmPackages.clr}/bin"'
substituteInPlace extern/hipew/src/hipew.c --replace-fail '"/opt/rocm/hip/lib/libamdhip64.so"' '"${rocmPackages.clr}/lib/libamdhip64.so"'
substituteInPlace extern/hipew/src/hipew.c --replace-fail '"opt/rocm/hip/bin"' '"${rocmPackages.clr}/bin"'
'');

env.NIX_CFLAGS_COMPILE = "-I${python3}/include/${python3.libPrefix}";
Expand Down Expand Up @@ -177,7 +185,9 @@ stdenv.mkDerivation (finalAttrs: {
"-DWITH_GHOST_WAYLAND_DYNLOAD=OFF"
"-DWITH_GHOST_WAYLAND_LIBDECOR=ON"
]
++ lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) [ "-DWITH_CYCLES_EMBREE=OFF" ]
++ lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) [
"-DWITH_CYCLES_EMBREE=OFF"
]
++ lib.optionals stdenv.isDarwin [
"-DLIBDIR=/does-not-exist"
"-DWITH_CYCLES_OSL=OFF" # causes segfault on aarch64-darwin
Expand Down Expand Up @@ -320,15 +330,16 @@ stdenv.mkDerivation (finalAttrs: {

# Set RUNPATH so that libcuda and libnvrtc in /run/opengl-driver(-32)/lib can be
# found. See the explanation in libglvnd.
postFixup = lib.optionalString cudaSupport ''
for program in $out/bin/blender $out/bin/.blender-wrapped; do
isELF "$program" || continue
addOpenGLRunpath "$program"
done
''
+ lib.optionalString stdenv.isDarwin ''
makeWrapper $out/Applications/Blender.app/Contents/MacOS/Blender $out/bin/blender
'';
postFixup =
lib.optionalString cudaSupport ''
for program in $out/bin/blender $out/bin/.blender-wrapped; do
isELF "$program" || continue
addOpenGLRunpath "$program"
done
''
+ lib.optionalString stdenv.isDarwin ''
makeWrapper $out/Applications/Blender.app/Contents/MacOS/Blender $out/bin/blender
'';

passthru = {
python = python3;
Expand All @@ -342,9 +353,7 @@ stdenv.mkDerivation (finalAttrs: {
};

tests = {
render = runCommand "${finalAttrs.pname}-test" {
nativeBuildInputs = [ mesa.llvmpipeHook ];
} ''
render = runCommand "${finalAttrs.pname}-test" { nativeBuildInputs = [ mesa.llvmpipeHook ]; } ''
set -euo pipefail
cat <<'PYTHON' > scene-config.py
import bpy
Expand Down Expand Up @@ -396,7 +405,9 @@ stdenv.mkDerivation (finalAttrs: {
# They comment two licenses: GPLv2 and Blender License, but they
# say: "We've decided to cancel the BL offering for an indefinite period."
# OptiX, enabled with cudaSupport, is non-free.
license = with lib.licenses; [ gpl2Plus ] ++ lib.optional cudaSupport (unfree // { shortName = "NVidia OptiX EULA"; });
license =
with lib.licenses;
[ gpl2Plus ] ++ lib.optional cudaSupport (unfree // { shortName = "NVidia OptiX EULA"; });

platforms = [
"aarch64-linux"
Expand Down

0 comments on commit 0f3d1ea

Please sign in to comment.