diff options
author | Alyssa Ross <hi@alyssa.is> | 2022-05-31 09:59:33 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2022-05-31 09:59:57 +0000 |
commit | 9ff36293d1e428cd7bf03e8d4b03611b6d361c28 (patch) | |
tree | 1ab51a42b868c55b83f6ccdb80371b9888739dd9 /pkgs/applications/misc/blender | |
parent | 1c4fcd0d4b0541e674ee56ace1053e23e562cc80 (diff) | |
parent | ddc3c396a51918043bb0faa6f676abd9562be62c (diff) | |
download | nixpkgs-archive.tar nixpkgs-archive.tar.gz nixpkgs-archive.tar.bz2 nixpkgs-archive.tar.lz nixpkgs-archive.tar.xz nixpkgs-archive.tar.zst nixpkgs-archive.zip |
Last good Nixpkgs for Weston+nouveau? archive
I came this commit hash to terwiz[m] on IRC, who is trying to figure out what the last version of Spectrum that worked on their NUC with Nvidia graphics is.
Diffstat (limited to 'pkgs/applications/misc/blender')
-rw-r--r-- | pkgs/applications/misc/blender/darwin.patch | 59 | ||||
-rw-r--r-- | pkgs/applications/misc/blender/default.nix | 171 | ||||
-rw-r--r-- | pkgs/applications/misc/blender/fix-include.patch | 12 | ||||
-rw-r--r-- | pkgs/applications/misc/blender/wrapper.nix | 39 |
4 files changed, 281 insertions, 0 deletions
diff --git a/pkgs/applications/misc/blender/darwin.patch b/pkgs/applications/misc/blender/darwin.patch new file mode 100644 index 00000000000..72db7924594 --- /dev/null +++ b/pkgs/applications/misc/blender/darwin.patch @@ -0,0 +1,59 @@ +diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake +--- a/build_files/cmake/platform/platform_apple.cmake ++++ b/build_files/cmake/platform/platform_apple.cmake +@@ -77,7 +77,6 @@ else() + message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}") + endif() + if(NOT EXISTS "${LIBDIR}/") +- message(FATAL_ERROR "Mac OSX requires pre-compiled libs at: '${LIBDIR}'") + endif() + + # Prefer lib directory paths +@@ -114,10 +113,6 @@ if(WITH_CODEC_SNDFILE) + find_library(_sndfile_VORBIS_LIBRARY NAMES vorbis HINTS ${LIBDIR}/ffmpeg/lib) + find_library(_sndfile_VORBISENC_LIBRARY NAMES vorbisenc HINTS ${LIBDIR}/ffmpeg/lib) + list(APPEND LIBSNDFILE_LIBRARIES +- ${_sndfile_FLAC_LIBRARY} +- ${_sndfile_OGG_LIBRARY} +- ${_sndfile_VORBIS_LIBRARY} +- ${_sndfile_VORBISENC_LIBRARY} + ) + + print_found_status("SndFile libraries" "${LIBSNDFILE_LIBRARIES}") +@@ -134,7 +129,7 @@ if(WITH_PYTHON) + # normally cached but not since we include them with blender + set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") + set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}") +- set(PYTHON_LIBRARY ${LIBDIR}/python/lib/libpython${PYTHON_VERSION}.a) ++ set(PYTHON_LIBRARY ${LIBDIR}/python/lib/libpython${PYTHON_VERSION}.dylib) + set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}") + # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled + else() +@@ -175,9 +170,7 @@ endif() + if(WITH_CODEC_FFMPEG) + set(FFMPEG_FIND_COMPONENTS + avcodec avdevice avformat avutil +- mp3lame ogg opus swresample swscale +- theora theoradec theoraenc vorbis vorbisenc +- vorbisfile vpx x264 xvidcore) ++ swresample swscale) + find_package(FFmpeg) + endif() + +@@ -275,7 +268,6 @@ if(WITH_BOOST) + endif() + + if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG) +- string(APPEND PLATFORM_LINKFLAGS " -liconv") # boost_locale and ffmpeg needs it ! + endif() + + if(WITH_PUGIXML) +@@ -476,7 +468,7 @@ else() + set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic") + endif() + +-if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5) ++if(FALSE) + # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv + string(APPEND CMAKE_CXX_FLAGS " -ftemplate-depth=1024") + endif() diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix new file mode 100644 index 00000000000..a0467b81714 --- /dev/null +++ b/pkgs/applications/misc/blender/default.nix @@ -0,0 +1,171 @@ +{ config, stdenv, lib, fetchurl, fetchzip, boost, cmake, ffmpeg, gettext, glew +, ilmbase, libXi, libX11, libXext, libXrender +, libjpeg, libpng, libsamplerate, libsndfile +, libtiff, libGLU, libGL, openal, opencolorio, openexr, openimagedenoise, openimageio2, openjpeg, python310Packages +, openvdb, libXxf86vm, tbb, alembic +, zlib, zstd, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath +, jackaudioSupport ? false, libjack2 +, cudaSupport ? config.cudaSupport or false, cudatoolkit_11 +, colladaSupport ? true, opencollada +, spaceNavSupport ? stdenv.isLinux, libspnav +, makeWrapper +, pugixml, llvmPackages, SDL, Cocoa, CoreGraphics, ForceFeedback, OpenAL, OpenGL +, potrace +, openxr-loader +, embree, gmp, libharu +}: + +with lib; +let + python = python310Packages.python; + optix = fetchzip { + # url taken from the archlinux blender PKGBUILD + url = "https://developer.download.nvidia.com/redist/optix/v7.3/OptiX-7.3.0-Include.zip"; + sha256 = "0max1j4822mchj0xpz9lqzh91zkmvsn4py0r174cvqfz8z8ykjk8"; + }; + +in +stdenv.mkDerivation rec { + pname = "blender"; + version = "3.1.0"; + + src = fetchurl { + url = "https://download.blender.org/source/${pname}-${version}.tar.xz"; + sha256 = "1d0476bzcz86lwdnyjn7hyzkmhfiqh47ls5h09jlbm7v7k9x69hw"; + }; + + patches = lib.optional stdenv.isDarwin ./darwin.patch; + + nativeBuildInputs = [ cmake makeWrapper python310Packages.wrapPython llvmPackages.llvm.dev ] + ++ optionals cudaSupport [ addOpenGLRunpath ]; + buildInputs = + [ boost ffmpeg gettext glew ilmbase + freetype libjpeg libpng libsamplerate libsndfile libtiff + opencolorio openexr openimagedenoise openimageio2 openjpeg python zlib zstd fftw jemalloc + alembic + (opensubdiv.override { inherit cudaSupport; }) + tbb + embree + gmp + pugixml + potrace + libharu + ] + ++ (if (!stdenv.isDarwin) then [ + libXi libX11 libXext libXrender + libGLU libGL openal + libXxf86vm + openxr-loader + # OpenVDB currently doesn't build on darwin + openvdb + ] + else [ + llvmPackages.openmp SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL + ]) + ++ optional jackaudioSupport libjack2 + ++ optional cudaSupport cudatoolkit_11 + ++ optional colladaSupport opencollada + ++ optional spaceNavSupport libspnav; + pythonPath = with python310Packages; [ numpy requests ]; + + postPatch = '' + # allow usage of dynamically linked embree + rm build_files/cmake/Modules/FindEmbree.cmake + '' + + (if stdenv.isDarwin then '' + : > build_files/cmake/platform/platform_apple_xcode.cmake + substituteInPlace source/creator/CMakeLists.txt \ + --replace '${"$"}{LIBDIR}/python' \ + '${python}' \ + --replace '${"$"}{LIBDIR}/openmp' \ + '${llvmPackages.openmp}' + substituteInPlace build_files/cmake/platform/platform_apple.cmake \ + --replace '${"$"}{LIBDIR}/python' \ + '${python}' \ + --replace '${"$"}{LIBDIR}/opencollada' \ + '${opencollada}' \ + --replace '${"$"}{PYTHON_LIBPATH}/site-packages/numpy' \ + '${python310Packages.numpy}/${python.sitePackages}/numpy' + '' else '' + substituteInPlace extern/clew/src/clew.c --replace '"libOpenCL.so"' '"${ocl-icd}/lib/libOpenCL.so"' + ''); + + cmakeFlags = + [ + "-DWITH_ALEMBIC=ON" + "-DWITH_MOD_OCEANSIM=ON" + "-DWITH_CODEC_FFMPEG=ON" + "-DWITH_CODEC_SNDFILE=ON" + "-DWITH_INSTALL_PORTABLE=OFF" + "-DWITH_FFTW3=ON" + "-DWITH_SDL=OFF" + "-DWITH_OPENCOLORIO=ON" + "-DWITH_OPENSUBDIV=ON" + "-DPYTHON_LIBRARY=${python.libPrefix}" + "-DPYTHON_LIBPATH=${python}/lib" + "-DPYTHON_INCLUDE_DIR=${python}/include/${python.libPrefix}" + "-DPYTHON_VERSION=${python.pythonVersion}" + "-DWITH_PYTHON_INSTALL=OFF" + "-DWITH_PYTHON_INSTALL_NUMPY=OFF" + "-DPYTHON_NUMPY_PATH=${python310Packages.numpy}/${python.sitePackages}" + "-DPYTHON_NUMPY_INCLUDE_DIRS=${python310Packages.numpy}/${python.sitePackages}/numpy/core/include" + "-DWITH_PYTHON_INSTALL_REQUESTS=OFF" + "-DWITH_OPENVDB=ON" + "-DWITH_TBB=ON" + "-DWITH_IMAGE_OPENJPEG=ON" + "-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}" + ] + ++ optionals stdenv.isDarwin [ + "-DWITH_CYCLES_OSL=OFF" # requires LLVM + "-DWITH_OPENVDB=OFF" # OpenVDB currently doesn't build on darwin + + "-DLIBDIR=/does-not-exist" + ] + # Clang doesn't support "-export-dynamic" + ++ optional stdenv.cc.isClang "-DPYTHON_LINKFLAGS=" + ++ optional jackaudioSupport "-DWITH_JACK=ON" + ++ optional cudaSupport [ + "-DWITH_CYCLES_CUDA_BINARIES=ON" + "-DWITH_CYCLES_DEVICE_OPTIX=ON" + "-DOPTIX_ROOT_DIR=${optix}" + ]; + + NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR -I${python}/include/${python.libPrefix}"; + + # Since some dependencies are built with gcc 6, we need gcc 6's + # libstdc++ in our RPATH. Sigh. + NIX_LDFLAGS = optionalString cudaSupport "-rpath ${stdenv.cc.cc.lib}/lib"; + + blenderExecutable = + placeholder "out" + (if stdenv.isDarwin then "/Applications/Blender.app/Contents/MacOS/Blender" else "/bin/blender"); + postInstall = lib.optionalString stdenv.isDarwin '' + mkdir $out/Applications + mv $out/Blender.app $out/Applications + '' + '' + buildPythonPath "$pythonPath" + wrapProgram $blenderExecutable \ + --prefix PATH : $program_PATH \ + --prefix PYTHONPATH : "$program_PYTHONPATH" \ + --add-flags '--python-use-system-env' + ''; + + # Set RUNPATH so that libcuda and libnvrtc in /run/opengl-driver(-32)/lib can be + # found. See the explanation in libglvnd. + postFixup = optionalString cudaSupport '' + for program in $out/bin/blender $out/bin/.blender-wrapped; do + isELF "$program" || continue + addOpenGLRunpath "$program" + done + ''; + + meta = with lib; { + description = "3D Creation/Animation/Publishing System"; + homepage = "https://www.blender.org"; + # 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 licenses; [ gpl2Plus ] ++ optional cudaSupport unfree; + platforms = [ "x86_64-linux" "x86_64-darwin" ]; + maintainers = with maintainers; [ goibhniu veprbl ]; + }; +} diff --git a/pkgs/applications/misc/blender/fix-include.patch b/pkgs/applications/misc/blender/fix-include.patch new file mode 100644 index 00000000000..44e2147d073 --- /dev/null +++ b/pkgs/applications/misc/blender/fix-include.patch @@ -0,0 +1,12 @@ +diff --git a/intern/smoke/intern/WAVELET_NOISE.h b/intern/smoke/intern/WAVELET_NOISE.h +index fce901b..1f73c5e 100644 +--- a/intern/smoke/intern/WAVELET_NOISE.h ++++ b/intern/smoke/intern/WAVELET_NOISE.h +@@ -43,6 +43,7 @@ + #ifndef WAVELET_NOISE_H + #define WAVELET_NOISE_H + ++#include <string.h> + #include <MERSENNETWISTER.h> + + #ifdef WIN32 diff --git a/pkgs/applications/misc/blender/wrapper.nix b/pkgs/applications/misc/blender/wrapper.nix new file mode 100644 index 00000000000..24ff72e14f6 --- /dev/null +++ b/pkgs/applications/misc/blender/wrapper.nix @@ -0,0 +1,39 @@ +{ stdenv +, lib +, blender +, makeWrapper +, python39Packages +}: +{ name ? "wrapped" +, packages ? [] +}: +stdenv.mkDerivation { + pname = "blender-${name}"; + inherit (blender) version; + src = blender; + + nativeBuildInputs = [ python39Packages.wrapPython makeWrapper ]; + installPhase = '' + mkdir $out/{share/applications,bin} -p + sed 's/Exec=blender/Exec=blender-${name}/g' $src/share/applications/blender.desktop > $out/share/applications/blender-${name}.desktop + cp -r $src/share/blender $out/share + cp -r $src/share/doc $out/share + cp -r $src/share/icons $out/share + + buildPythonPath "$pythonPath" + + echo '#!/usr/bin/env bash ' >> $out/bin/blender-${name} + for p in $program_PATH; do + echo "export PATH=\$PATH:$p " >> $out/bin/blender-${name} + done + for p in $program_PYTHONPATH; do + echo "export PYTHONPATH=\$PYTHONPATH:$p " >> $out/bin/blender-${name} + done + echo 'exec ${blender}/bin/blender "$@"' >> $out/bin/blender-${name} + chmod +x $out/bin/blender-${name} + ''; + + pythonPath = packages; + + meta = blender.meta; +} |