From c7a6ae86b8bb82827b2afe453eec85738943aaf7 Mon Sep 17 00:00:00 2001 From: brothermechanic Date: Tue, 5 Mar 2024 08:06:32 +0300 Subject: [PATCH] BPY: rewrite as overlay --- flake.nix | 24 +- .../bpy/blender-fix-boost-1.81-iostream.patch | 10 - .../bpy/blender-fix-desktop.patch | 10 - .../python-modules/bpy/cg-defaults.patch | 84 ------- .../python-modules/bpy/cg_environment.patch | 45 ---- .../python-modules/bpy/default.nix | 213 ------------------ .../development/python-modules/bpy/x112.patch | 46 ---- 7 files changed, 21 insertions(+), 411 deletions(-) delete mode 100644 pkgs/development/python-modules/bpy/blender-fix-boost-1.81-iostream.patch delete mode 100644 pkgs/development/python-modules/bpy/blender-fix-desktop.patch delete mode 100644 pkgs/development/python-modules/bpy/cg-defaults.patch delete mode 100644 pkgs/development/python-modules/bpy/cg_environment.patch delete mode 100644 pkgs/development/python-modules/bpy/default.nix delete mode 100644 pkgs/development/python-modules/bpy/x112.patch diff --git a/flake.nix b/flake.nix index c26db7c..8b5af3e 100644 --- a/flake.nix +++ b/flake.nix @@ -52,7 +52,7 @@ # robossembler custom packages; defined here for share between devShells and packages cg_preferences = pkgs.fetchgit { url = "https://gitflic.ru/project/brothermechanic/cg_preferences.git"; - sha256 = "sha256-ahEakvluX7vd+OY6zaDeZIFS8WbsTevRzuEXlBu2/fg="; + sha256 = "sha256-/mNNjvrhIxSZVv1/LSJ7+c/dXH3E0Orh5Zr0oVPLquY="; }; rs_logo = pkgs.fetchgit { url = "https://gitlab.com/robossembler/logo.git"; @@ -75,7 +75,7 @@ patches = old.patches ++ [ "${cg_preferences}/patches/cg-defaults.patch" ]; buildInputs = old.buildInputs ++ [ pkgs.imath pkgs.git ]; postPatch = old.postPatch + '' - cp ${cg_preferences}/share/cg_preferences_service.py scripts/startup/ + cp ${cg_preferences}/share/00_cg_preferences_service.py scripts/startup/ cp ${cg_preferences}/share/startup.blend release/datafiles/ cp ${rs_logo}/raster/robossembler_1024x512_roboty-rossii.png release/datafiles/splash.png ''; @@ -86,7 +86,25 @@ }/scripts/addons/ ''; }); - bpy = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/bpy { }; + bpy = blender.overrideAttrs (old: { + pname = "bpy"; + cmakeFlags = old.cmakeFlags ++ [ + "-DWITH_PYTHON_INSTALL=OFF" + "-DWITH_AUDASPACE=OFF" + "-DWITH_PYTHON_MODULE=ON" + "-DWITH_MEM_JEMALLOC=OFF" + "-DWITH_INSTALL_PORTABLE=ON" + ]; + postInstall = '' + mkdir -p $out/lib/python${pkgs.python3.pythonVersion}/site-packages + mkdir -p $out/nix-support + mv $out/bpy $out/lib/python${pkgs.python3.pythonVersion}/site-packages/ + echo ${pkgs.python3} >> $out/nix-support/propagated-build-inputs + ''; + postFixup = '' + buildPythonPath $out/lib/python${pkgs.python3.pythonVersion}/site-packages + ''; + }); pysdf = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pysdf { }; pytorch3d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pytorch3d { }; mayo = pkgs.libsForQt5.callPackage ./pkgs/misc/mayo { }; diff --git a/pkgs/development/python-modules/bpy/blender-fix-boost-1.81-iostream.patch b/pkgs/development/python-modules/bpy/blender-fix-boost-1.81-iostream.patch deleted file mode 100644 index bd2beed..0000000 --- a/pkgs/development/python-modules/bpy/blender-fix-boost-1.81-iostream.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/intern/locale/boost_locale_wrapper.cpp -+++ b/intern/locale/boost_locale_wrapper.cpp -@@ -7,6 +7,7 @@ - - #include - #include -+#include - - #include "boost_locale_wrapper.h" - diff --git a/pkgs/development/python-modules/bpy/blender-fix-desktop.patch b/pkgs/development/python-modules/bpy/blender-fix-desktop.patch deleted file mode 100644 index ed3b101..0000000 --- a/pkgs/development/python-modules/bpy/blender-fix-desktop.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/release/freedesktop/blender.desktop -+++ b/release/freedesktop/blender.desktop -@@ -84,6 +84,6 @@ Icon=blender - Terminal=false - Type=Application - PrefersNonDefaultGPU=true --X-KDE-RunOnDiscreteGpu=true -+X-PreferRunOnDiscreteGPU=true - Categories=Graphics;3DGraphics; - MimeType=application/x-blender; diff --git a/pkgs/development/python-modules/bpy/cg-defaults.patch b/pkgs/development/python-modules/bpy/cg-defaults.patch deleted file mode 100644 index 54439ea..0000000 --- a/pkgs/development/python-modules/bpy/cg-defaults.patch +++ /dev/null @@ -1,84 +0,0 @@ -diff -Naur a/source/blender/makesdna/DNA_modifier_defaults.h b/source/blender/makesdna/DNA_modifier_defaults.h ---- a/source/blender/makesdna/DNA_modifier_defaults.h 2020-12-24 20:07:32.000000000 +0300 -+++ b/source/blender/makesdna/DNA_modifier_defaults.h 2020-12-28 00:11:53.397550988 +0300 -@@ -43,7 +43,7 @@ - .length = 0.0f, \ - .merge_dist = 0.01f, \ - .fit_type = MOD_ARR_FIXEDCOUNT, \ -- .offset_type = MOD_ARR_OFF_RELATIVE, \ -+ .offset_type = MOD_ARR_OFF_CONST, \ - .flags = 0, \ - .count = 2, \ - .uv_offset = {0.0f, 0.0f}, \ -@@ -51,8 +51,8 @@ - - #define _DNA_DEFAULT_BevelModifierData \ - { \ -- .value = 0.1f, \ -- .res = 1, \ -+ .value = 0.01f, \ -+ .res = 2, \ - .flags = 0, \ - .val_flags = MOD_BEVEL_AMT_OFFSET, \ - .profile_type = MOD_BEVEL_PROFILE_SUPERELLIPSE, \ -@@ -93,7 +93,7 @@ - #define _DNA_DEFAULT_CastModifierData \ - { \ - .object = NULL, \ -- .fac = 0.5f, \ -+ .fac = 1.0f, \ - .radius = 0.0f, \ - .size = 0.0f, \ - .defgrp_name = "", \ -@@ -259,7 +259,7 @@ - - #define _DNA_DEFAULT_DecimateModifierData \ - { \ -- .percent = 1.0f, \ -+ .percent = 0.1f, \ - .iter = 0, \ - .delimit = 0, \ - .symmetry_axis = 0, \ -@@ -567,7 +567,7 @@ - .vgroup_name = "", \ - .factor = DEG2RADF(45.0f), \ - .limit = {0.0f, 1.0f}, \ -- .mode = MOD_SIMPLEDEFORM_MODE_TWIST, \ -+ .mode = MOD_SIMPLEDEFORM_MODE_BEND, \ - .axis = 0, \ - .deform_axis = 0, \ - .flag = 0, \ -@@ -608,7 +608,7 @@ - .crease_inner = 0.0f, \ - .crease_outer = 0.0f, \ - .crease_rim = 0.0f, \ -- .flag = MOD_SOLIDIFY_RIM, \ -+ .flag = MOD_SOLIDIFY_RIM | MOD_SOLIDIFY_EVEN, \ - .mat_ofs = 0, \ - .mat_ofs_rim = 0, \ - .merge_tolerance = 0.0001f, \ -@@ -619,7 +619,7 @@ - .subdivType = 0, \ - .levels = 1, \ - .renderLevels = 2, \ -- .flags = eSubsurfModifierFlag_UseCrease | eSubsurfModifierFlag_ControlEdges, \ -+ .flags = eSubsurfModifierFlag_UseCrease | eSubsurfModifierFlag_ControlEdges | eSubsurfModifierFlag_UseRecursiveSubdivision, \ - .uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES, \ - .quality = 3, \ - .boundary_smooth = SUBSURF_BOUNDARY_SMOOTH_ALL, \ -diff -Naur a/source/blender/makesdna/DNA_view3d_defaults.h b/source/blender/makesdna/DNA_view3d_defaults.h ---- a/source/blender/makesdna/DNA_view3d_defaults.h 2020-12-24 20:07:32.000000000 +0300 -+++ b/source/blender/makesdna/DNA_view3d_defaults.h 2020-12-27 22:52:32.467466785 +0300 -@@ -94,9 +94,9 @@ - .flag = V3D_SELECT_OUTLINE, \ - .flag2 = V3D_SHOW_RECONSTRUCTION | V3D_SHOW_ANNOTATION, \ - \ -- .lens = 50.0f, \ -- .clip_start = 0.01f, \ -- .clip_end = 1000.0f, \ -+ .lens = 85.0f, \ -+ .clip_start = 0.001f, \ -+ .clip_end = 100.0f, \ - \ - .bundle_size = 0.2f, \ - .bundle_drawtype = OB_PLAINAXES, \ diff --git a/pkgs/development/python-modules/bpy/cg_environment.patch b/pkgs/development/python-modules/bpy/cg_environment.patch deleted file mode 100644 index a2ac741..0000000 --- a/pkgs/development/python-modules/bpy/cg_environment.patch +++ /dev/null @@ -1,45 +0,0 @@ ---- /dev/null 2023-08-11 22:07:27.012000310 +0300 -+++ b/scripts/startup/cg_environment.py 2023-08-11 00:44:51.704718595 +0300 -@@ -0,0 +1,42 @@ -+#!/usr/bin/python3 -+# -*- coding: utf-8 -*- -+# Copyright (C) 2023 Ilia Kurochkin -+# -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+__doc__ = 'Environment for use CG Overlay' -+__version__ = '0.1' -+ -+import bpy -+from bpy.app.handlers import persistent -+import addon_utils -+ -+ -+@persistent -+def cg_env(dummy): -+ '''Scripts environment''' -+ addon_utils.enable('cg_preferences', default_set=True) -+ -+ print('CG Environment activated!') -+ -+ -+def register(): -+ '''register blender module''' -+ bpy.app.handlers.load_post.append(cg_env) -+ -+ -+def unregister(): -+ '''unregister blender module''' -+ bpy.app.handlers.load_post.remove(cg_env) -+ -+ -+if __name__ == '__main__': -+ register() diff --git a/pkgs/development/python-modules/bpy/default.nix b/pkgs/development/python-modules/bpy/default.nix deleted file mode 100644 index f04d187..0000000 --- a/pkgs/development/python-modules/bpy/default.nix +++ /dev/null @@ -1,213 +0,0 @@ -# TODO WITH_CYCLES_OSL -# TODO WITH_NANOVDB -# TODO WITH_CLANG -{ config, stdenv, lib, fetchurl, fetchzip, fetchgit, makeWrapper, cmake, git-lfs -, boost, ocl-icd, gettext, zlib, zstd, pugixml, llvmPackages, clang -, libepoxy, libXi, libX11, libXext, libXrender, libXxf86vm -, libGLU, libGL, glew, addOpenGLRunpath, freeglut -, openimageio, opencolorio, openexr, ilmbase, libjpeg, libpng, libtiff, libwebp, potrace -, embree, gmp, openvdb, tbb, openimagedenoise, opensubdiv, freetype, libharu, brotli -, ffmpeg, fftw, libsndfile -, python310Packages, buildPythonPackage, fetchPypi, pkgs, lzma, freecad -, cudaSupport ? config.cudaSupport or false, cudaPackages ? { } -, hipSupport ? false, hip # comes with a significantly larger closure size -, colladaSupport ? true, opencollada -, waylandSupport ? stdenv.isLinux, pkg-config, wayland, wayland-protocols, libffi, libdecor, libxkbcommon, dbus -}: - -let - python = python310Packages.python; - optix = fetchzip { - # url taken from the archlinux blender PKGBUILD - url = "https://developer.download.nvidia.com/redist/optix/v7.4/OptiX-7.4.0-Include.zip"; - sha256 = "sha256-ca08XetwaUYC9foeP5bff9kcDfuFgEzopvjspn2s8RY="; - }; - cg_preferences = fetchgit { - url = "https://gitlab.com/brothermechanic/cg_preferences.git"; - rev = "db192525ff41dfae4c063dc914a2c3fe5850d480"; - sha256 = "sha256-+eLWdokH/5odzOTykgrmG36U8h+Wf8YGOxe1oIy4dJo="; - fetchLFS = true; - }; - - -in -stdenv.mkDerivation rec { - pname = "bpy"; - version = "3.6.1"; - - src = fetchurl { - url = "https://download.blender.org/source/blender-${version}.tar.xz"; - hash = "sha256-JJF+cbyya0kAJXBU2do4tiMWx0J9cyNTO0HKmztFrE0="; - }; - - patches = [ - ./cg-defaults.patch - ./x112.patch - ./blender-fix-desktop.patch - ./blender-fix-boost-1.81-iostream.patch - ]; - - nativeBuildInputs = - [ cmake makeWrapper python310Packages.wrapPython llvmPackages.llvm.dev - ] - ++ lib.optionals cudaSupport [ addOpenGLRunpath ] - ++ lib.optionals waylandSupport [ pkg-config ]; - buildInputs = - [ boost ffmpeg gettext glew ilmbase - freetype libjpeg libpng libsndfile libtiff libwebp - opencolorio openexr openimageio python zlib pkgs.zstd.dev fftw - (opensubdiv.override { inherit cudaSupport; }) - tbb - gmp - pugixml - potrace - libharu - brotli - libepoxy - lzma - optix - ] - ++ lib.optionals waylandSupport [ - wayland wayland-protocols libffi libdecor libxkbcommon dbus - ] - ++ lib.optionals (!stdenv.isAarch64) [ - openimagedenoise - embree - ] - ++ (if (!stdenv.isDarwin) then [ - libXi libX11 libXext libXrender - libGLU libGL - libXxf86vm - # OpenVDB currently doesn't build on darwin - openvdb - ] - else [ - llvmPackages.openmp clang - ]) - ++ lib.optional cudaSupport cudaPackages.cudatoolkit - ++ lib.optional colladaSupport opencollada - ; - pythonPath = with python310Packages; [ numpy requests ]; - - postPatch = '' - cp ${cg_preferences}/startup.blend release/datafiles/ - '' + - (if stdenv.isDarwin then '' - : > build_files/cmake/platform/platform_apple_xcode.cmake - substituteInPlace source/creator/CMakeLists.txt \ - --replace '${"$"}{LIBDIR}/python' \ - '${python}' - 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"' - '') + - (lib.optionalString hipSupport '' - substituteInPlace extern/hipew/src/hipew.c --replace '"/opt/rocm/hip/lib/libamdhip64.so"' '"${hip}/lib/libamdhip64.so"' - substituteInPlace extern/hipew/src/hipew.c --replace '"opt/rocm/hip/bin"' '"${hip}/bin"' - ''); - - cmakeFlags = - [ - "-DWITH_PYTHON_INSTALL=OFF" - "-DWITH_AUDASPACE=OFF" - "-DWITH_PYTHON_MODULE=ON" - "-DWITH_MEM_JEMALLOC=OFF" - "-DWITH_INSTALL_PORTABLE=ON" - #___________ - "-DPYTHON_LIBPATH=${python}/lib" - "-DPYTHON_VERSION=${python.pythonVersion}" - "-DPYTHON_INCLUDE_DIR=${python}/include/${python.libPrefix}" - "-DPYTHON_LIBRARY=${python.libPrefix}" - "-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_ALEMBIC=OFF" - "-DWITH_OPENVDB=ON" - "-DWITH_NANOVDB=ON" - "-DWITH_IMAGE_OPENJPEG=OFF" - "-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}" - "-DWITH_OPENAL=OFF" - "-DWITH_SDL=OFF" - "-DWITH_PULSEAUDIO=OFF" - "-DWITH_JACK=OFF" - "-DWITH_OPENMP=ON" - "-DWITH_OPENCOLORIO=ON" - "-DWITH_OPENSUBDIV=ON" - "-DWITH_TBB=ON" - "-DWITH_USD=OFF" - "-DWITH_XR_OPENXR=OFF" - "-DWITH_NINJA_POOL_JOBS=OFF" - "-DBUILD_SHARED_LIBS=OFF" - "-DWITH_BUILDINFO=OFF" - "-DWITH_HYDRA=OFF" - "-DWITH_MATERIALX=OFF" - "-DWITH_LINKER_LLD=ON" - "-DWITH_LIBS_PRECOMPILED=OFF" - "-DWITH_INTERNATIONAL=ON" - ] - ++ lib.optionals stdenv.hostPlatform.isAarch64 [ - "-DWITH_CYCLES_EMBREE=OFF" - ] - ++ lib.optionals stdenv.isDarwin [ - "-DWITH_CYCLES_OSL=OFF" # requires LLVM - "-DWITH_OPENVDB=OFF" # OpenVDB currently doesn't build on darwin - "-DLIBDIR=/does-not-exist" - ] - ++ lib.optionals cudaSupport [ - "-DWITH_CYCLES_CUDA_BINARIES=ON" - "-DCUDA_NVCC_FLAGS=-std=c++14" - "-DWITH_CYCLES_DEVICE_OPTIX=ON" - "-DOPTIX_INCLUDE_DIR=${optix}" - ] - # Clang doesn't support "-export-dynamic" - ++ lib.optional stdenv.cc.isClang "-DPYTHON_LINKFLAGS=" - ++ lib.optionals waylandSupport [ - "-DWITH_GHOST_WAYLAND=ON" - "-DWITH_GHOST_WAYLAND_DBUS=ON" - "-DWITH_GHOST_WAYLAND_DYNLOAD=OFF" - "-DWITH_GHOST_WAYLAND_LIBDECOR=ON" - ]; - - env.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 = lib.optionalString cudaSupport "-rpath ${stdenv.cc.cc.lib}/lib"; - - postInstall = '' - mkdir -p $out/lib/python3.10/site-packages - mkdir -p $out/nix-support - mv $out/bpy $out/lib/python3.10/site-packages/ - echo ${python} >> $out/nix-support/propagated-build-inputs - '' + '' - mkdir $out/lib/python3.10/site-packages/bpy/3.6/scripts/addons/cg_preferences - cp -r ${cg_preferences}/* $out/lib/python3.10/site-packages/bpy/3.6/scripts/addons/cg_preferences/ - ''; - # Set RUNPATH so that libcuda and libnvrtc in /run/opengl-driver(-32)/lib can be - # found. See the explanation in libglvnd. - postFixup = '' - buildPythonPath $out/lib/python3.10/site-packages - ''; - - passthru = { inherit python; }; - - meta = with lib; { - description = "3D Creation/Animation/Publishing System module"; - 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" "aarch64-linux" ]; - broken = stdenv.isDarwin; - maintainers = with maintainers; [ goibhniu veprbl brothermechanic ]; - mainProgram = "bpy"; - }; -} diff --git a/pkgs/development/python-modules/bpy/x112.patch b/pkgs/development/python-modules/bpy/x112.patch deleted file mode 100644 index 791591b..0000000 --- a/pkgs/development/python-modules/bpy/x112.patch +++ /dev/null @@ -1,46 +0,0 @@ ---- a/intern/ghost/CMakeLists.txt -+++ b/intern/ghost/CMakeLists.txt -@@ -183,6 +183,13 @@ - ${X11_X11_INCLUDE_PATH} - ) - -+ list(APPEND LIB -+ ${X11_X11_LIB} -+ -lXext -+ -lXxf86vm -+ ${X11_Xrender_LIB} -+ ) -+ - list(APPEND SRC - intern/GHOST_DisplayManagerX11.cpp - intern/GHOST_SystemX11.cpp -@@ -234,6 +241,9 @@ - list(APPEND INC_SYS - ${X11_xf86vmode_INCLUDE_PATH} - ) -+ list(APPEND LIB -+ ${X11_Xf86vmode_LIB} -+ ) - endif() - - if(WITH_X11_XFIXES) -@@ -241,6 +251,9 @@ - list(APPEND INC_SYS - ${X11_Xfixes_INCLUDE_PATH} - ) -+ list(APPEND LIB -+ ${X11_Xfixes_LIB} -+ ) - endif() - - if(WITH_X11_ALPHA) -@@ -252,6 +265,9 @@ - list(APPEND INC_SYS - ${X11_Xinput_INCLUDE_PATH} - ) -+ list(APPEND LIB -+ ${X11_Xinput_LIB} -+ ) - endif() - - add_definitions(-DWITH_GHOST_X11)