add bpy module wheel

This commit is contained in:
Igor Brylyov 2023-08-03 21:54:16 +03:00
parent 13276f1cfb
commit 0429b29a64
3 changed files with 112 additions and 182 deletions

111
flake.lock generated
View file

@ -5,11 +5,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1681202837,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github"
},
"original": {
@ -19,15 +19,12 @@
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1681202837,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"lastModified": 1601282935,
"narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"rev": "588973065fce51f4763287f0fda87a174d78bf48",
"type": "github"
},
"original": {
@ -36,13 +33,66 @@
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1685518550,
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"mach-nix": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs",
"pypi-deps-db": "pypi-deps-db"
},
"locked": {
"lastModified": 1623312259,
"narHash": "sha256-RkqyGWezwVOII2LTJFKVH6UXjSXybMucbuyOjFWiSdE=",
"owner": "DavHau",
"repo": "mach-nix",
"rev": "ca166a5062e26f6852ff0a6e854fd7563a48afe4",
"type": "github"
},
"original": {
"id": "mach-nix",
"ref": "conda-beta",
"type": "indirect"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1685043182,
"narHash": "sha256-eL1j47UUPVRI8itz/4EUah9cVtZtuII6m/jSE+mBn7A=",
"lastModified": 1622797669,
"narHash": "sha256-xIyWeoYExzF0KNaKcqfxEX58fN4JTIQxTJWbsAujllc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ba5d0dc56bddf881ca7bb62266351a9692a8d157",
"rev": "1ca6b0a0cc38dbba0441202535c92841dd39d1ae",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1690924695,
"narHash": "sha256-1yshNzds/qJztMoJk0Sa2xhKwSLaOAuepR6ABWbrgRU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7282565b1ca9ba7b293b899411e70167f4a7c1ff",
"type": "github"
},
"original": {
@ -52,13 +102,13 @@
"type": "github"
}
},
"nixpkgs_2": {
"nixpkgs_3": {
"locked": {
"lastModified": 1681059042,
"narHash": "sha256-f6HH1U/+YbM7vjnOOydPJt/Ia7Rn+ApCOryFNb3eGbk=",
"lastModified": 1687112859,
"narHash": "sha256-oJhMiKnJeb47gTxyyIgAJf+aWC4IbVmG3wgL3ZVJ0Eg=",
"owner": "lopsided98",
"repo": "nixpkgs",
"rev": "28aa66a5d7d196573aed06968b2e37ab98875511",
"rev": "f68a0d0fd7539d93c7454989f71fd1c824f3b46f",
"type": "github"
},
"original": {
@ -68,24 +118,41 @@
"type": "github"
}
},
"pypi-deps-db": {
"flake": false,
"locked": {
"lastModified": 1622970040,
"narHash": "sha256-u//RFnae/XMIhoy83G2uH2Qu/1LiUhVCdwwY1xj4Ufs=",
"owner": "DavHau",
"repo": "pypi-deps-db",
"rev": "be6591698c67a86a69c81fef72167e38d038a9fc",
"type": "github"
},
"original": {
"owner": "DavHau",
"repo": "pypi-deps-db",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"mach-nix": "mach-nix",
"nixpkgs": "nixpkgs_2",
"ros-flake": "ros-flake"
}
},
"ros-flake": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs_2"
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1684512309,
"narHash": "sha256-tIfBfgVqYWJycuTMo03NH4TS29f9FGCfz1ubYKJyD2s=",
"lastModified": 1690347395,
"narHash": "sha256-FUAvjcpVyDMZ2zCqUrpGlLtRZlF3PqW2alpyi82bMa8=",
"owner": "lopsided98",
"repo": "nix-ros-overlay",
"rev": "24dbaec76c6e9caf2a22ffd63ffd8b15667bd7e5",
"rev": "3205dadcff4e1fbc779ce3962bafcf3e9f3e931b",
"type": "github"
},
"original": {

View file

@ -99,6 +99,7 @@
devShells.all = pkgs.mkShell {
packages = [ mayo blender bpy pysdf fstl darknet slic3r ];
};
devShells.rbs-framework =
let
my-python-packages = p: with p; [
@ -111,7 +112,13 @@
];
in
pkgs.mkShell {
packages = [ (pkgs.python3.withPackages my-python-packages) pkgs.freecad blender mayo ];
packages = [ (pkgs.python3.withPackages my-python-packages) pkgs.freecad mayo ];
buildInputs = [ ];
# Run when the shell is started up
shellHook = ''
${pkgs.python3}/bin/python --version
'';
};
}
);

View file

@ -1,165 +1,21 @@
{ config, stdenv, lib, fetchurl, fetchzip, boost, cmake, ffmpeg, gettext, glew
, ilmbase, libXi, libX11, libXext, libXrender
, libjpeg, libpng, libsamplerate, libsndfile, openexr
, libtiff, libGLU, libGL, freeglut, openal, opencolorio, openimagedenoise, openimageio2, python310Packages
, openvdb, libXxf86vm, tbb, alembic
, zlib, zstd, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath
, cudaSupport ? config.cudaSupport or false, cudaPackages ? {}
, hipSupport ? false, hip # comes with a significantly larger closure size
, colladaSupport ? true, opencollada
, makeWrapper
, pugixml, llvmPackages, SDL
, potrace
, openxr-loader
, embree, gmp, libharu
, libepoxy, brotli
, buildPythonPackage, fetchPypi, pkgs, libwebp, lzma, clang, c-blosc
}:
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 {
{ buildPythonPackage, fetchPypi, python3Packages, lib, autoPatchelfHook, blender, config, cudaSupport ? config.cudaSupport }:
buildPythonPackage rec {
format = "wheel";
pname = "bpy";
version = "3.4.1";
version = "3.6.0";
src = fetchurl {
url = "https://download.blender.org/source/blender-${version}.tar.xz";
hash = "sha256-JHxMEignDJAQ9HIcmFy1tiirUKvPnyZ4Ywc3FC7rkcM=";
src = fetchPypi rec {
inherit pname version format;
sha256 = "sha256-7eLJWs54SPT1oHWn2Mw6nmQ8M19FlsPBUIfZPHrl9Wo=";
dist = python;
python = "cp310";
abi = "cp310";
platform = "manylinux_2_28_x86_64";
};
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 python zlib pkgs.zstd.dev fftw jemalloc
pkgs.alembic
(opensubdiv.override { inherit cudaSupport; })
tbb
embree
gmp
pugixml
potrace
libharu
libepoxy
brotli
llvmPackages.openmp SDL
clang
libwebp
lzma
openvdb c-blosc
]
++ optional cudaSupport cudaPackages.cudatoolkit
++ optional colladaSupport opencollada;
pythonPath = with python310Packages; [ numpy requests ];
postPatch = ''
# allow usage of dynamically linked embree
rm build_files/cmake/Modules/FindEmbree.cmake
'' +
(if hipSupport then ''
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"'
'' else "");
output = [ "out" ];
# TODO WITH_MEM_JEMALLOC=ON > cannot allocate memory in static TLS block
# TODO WITH_CYCLES_DEVICE_OPTIX
# TODO NANOVDB_INCLUDE_DIR
# TODO _CLANG_LIBRARIES CLANG_INCLUDE_DIR
# TODO GIT_EXECUTABLE
cmakeFlags =
[
"-DWITH_ALEMBIC=ON"
"-DWITH_USD=OFF"
"-DWITH_MOD_OCEANSIM=ON"
"-DWITH_CODEC_FFMPEG=ON"
"-DWITH_CODEC_SNDFILE=ON"
"-DWITH_FFTW3=ON"
"-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_INSTALL_PORTABLE=ON"
"-DWITH_PYTHON_INSTALL=OFF"
"-DWITH_AUDASPACE=OFF"
"-DWITH_PYTHON_MODULE=ON"
"-DWITH_MEM_JEMALLOC=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_OPENVDB_BLOSC=ON"
"-DWITH_TBB=ON"
"-DWITH_IMAGE_HDR=ON"
"-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}"
"-DWITH_CYCLES_EMBREE=ON"
"WITH_CYCLES_PATH_GUIDING=OFF"
"-DWITH_DOC_MANPAGE=OFF"
"-DWITH_FREESTYLE=OFF"
"-DWITH_GHOST_X11=OFF"
"-DWITH_GHOST_WAYLAND=OFF"
"-DWITH_HARU=OFF"
"-DWITH_IMAGE_DDS=OFF"
"-DWITH_IMAGE_WEBP=ON"
"-DWITH_IMAGE_HDR=ON"
"-DWITH_IMAGE_OPENEXR=ON"
"-DWITH_IMAGE_OPENJPEG=OFF"
"-DWITH_IMAGE_TIFF=ON"
"-DWITH_INPUT_NDOF=OFF"
"-DWITH_INTERNATIONAL=OFF"
"-DWITH_JACK=OFF"
"-DWITH_PULSEAUDIO=OFF"
"-DWITH_LZMA=ON"
"-DWITH_LZO=OFF"
"-DWITH_LLVM=ON"
"-DWITH_CLANG=ON"
"-DWITH_OPENMP=ON"
"-DWITH_QUADRIFLOW=OFF"
"-DWITH_SDL=OFF"
"-DWITH_CXX11_ABI=ON"
"-DWITH_XR_OPENXR=OFF"
"-DWITH_LINKER_LLD=ON"
]
# Clang doesn't support "-export-dynamic"
++ optionals cudaSupport [
"-DWITH_CYCLES_CUDA=ON"
"-DWITH_CYCLES_CUDA_BINARIES=ON"
"-DCUDA_NVCC_FLAGS=-std=c++14"
"-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";
#"${stdenv.lib.makeLibraryPath [ gnome3.libpeas gnome3.gtksourceview ]}"
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
'';
postFixup = ''
buildPythonPath $out/lib/python3.10/site-packages
'';
propagatedBuildInputs = with python3Packages; [ requests numpy cython zstandard ];
buildInputs = blender.buildInputs;
nativeBuildInputs = [ autoPatchelfHook ];
autoPatchelfIgnoreMissingDeps = true;
meta = with lib; {
description = "3D Creation/Animation/Publishing System";