about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/python-modules/openusd/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/openusd/default.nix')
-rw-r--r--nixpkgs/pkgs/development/python-modules/openusd/default.nix141
1 files changed, 141 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/openusd/default.nix b/nixpkgs/pkgs/development/python-modules/openusd/default.nix
new file mode 100644
index 000000000000..590bae1823c9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/openusd/default.nix
@@ -0,0 +1,141 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, lib
+, writeShellScriptBin
+, cmake
+, doxygen
+, draco
+, graphviz-nox
+, ninja
+, setuptools
+, pyqt6
+, pyopengl
+, jinja2
+, pyside6
+, boost
+, numpy
+, git
+, tbb
+, opensubdiv
+, openimageio
+, opencolorio
+, osl
+, ptex
+, embree
+, alembic
+, imath
+, flex
+, bison
+, qt6
+, python
+, darwin
+}:
+let
+  # Matches the pyside6-uic implementation
+  # https://code.qt.io/cgit/pyside/pyside-setup.git/tree/sources/pyside-tools/pyside_tool.py?id=e501cad66146a49c7a259579c7bb94bc93a67a08#n82
+  pyside-tools-uic = writeShellScriptBin "pyside6-uic" ''
+    exec ${qt6.qtbase}/libexec/uic -g python "$@"
+  '';
+in
+buildPythonPackage rec {
+  pname = "OpenUSD";
+  version = "23.11";
+  src = fetchFromGitHub {
+    owner = "PixarAnimationStudios";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-5zQrfB14kXs75WbL3s4eyhxELglhLNxU2L2aVXiyVjg=";
+  };
+
+  stdenv = if python.stdenv.isDarwin then
+    darwin.apple_sdk_11_0.stdenv
+  else
+    python.stdenv;
+
+  outputs = ["out" "doc"];
+
+  format = "other";
+
+  propagatedBuildInputs = [
+    setuptools
+    pyqt6
+    pyopengl
+    jinja2
+    pyside6
+    pyside-tools-uic
+    boost
+    numpy
+  ];
+
+  cmakeFlags = [
+    "-DPXR_BUILD_EXAMPLES=OFF"
+    "-DPXR_BUILD_TUTORIALS=OFF"
+    "-DPXR_BUILD_USD_TOOLS=ON"
+    "-DPXR_BUILD_IMAGING=ON"
+    "-DPXR_BUILD_USD_IMAGING=ON"
+    "-DPXR_BUILD_USDVIEW=ON"
+    "-DPXR_BUILD_DOCUMENTATION=ON"
+    "-DPXR_BUILD_PYTHON_DOCUMENTATION=ON"
+    "-DPXR_BUILD_EMBREE_PLUGIN=ON"
+    "-DPXR_BUILD_ALEMBIC_PLUGIN=ON"
+    "-DPXR_BUILD_DRACO_PLUGIN=ON"
+    "-DPXR_BUILD_MONOLITHIC=ON" # Seems to be commonly linked to monolithically
+    (lib.cmakeBool "PXR_ENABLE_OSL_SUPPORT" (!stdenv.isDarwin))
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+    git
+    qt6.wrapQtAppsHook
+    doxygen
+    graphviz-nox
+  ];
+  buildInputs = [
+    tbb
+    opensubdiv
+    openimageio
+    opencolorio
+    osl
+    ptex
+    embree
+    alembic.dev
+    imath
+    flex
+    bison
+    boost
+    draco
+    qt6.qtbase
+  ]
+    ++ lib.optionals stdenv.isLinux [ qt6.qtwayland ]
+    ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk_11_0.frameworks; [
+      Cocoa
+    ])
+  ;
+
+  pythonImportsCheck = [ "pxr" "pxr.Usd" ];
+
+  postInstall = ''
+    # Make python lib properly accessible
+    target_dir=$out/${python.sitePackages}
+    mkdir -p $(dirname $target_dir)
+    mv $out/lib/python $target_dir
+
+    mv $out/docs $doc
+
+    rm $out/share -r # only examples
+    rm $out/tests -r
+  '';
+
+  meta = {
+    description = "Universal Scene Description";
+    longDescription = ''
+      Universal Scene Description (USD) is an efficient, scalable system
+      for authoring, reading, and streaming time-sampled scene description
+      for interchange between graphics applications.
+    '';
+    homepage = "https://openusd.org/";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ shaddydc ];
+  };
+}