From 3c3ddddbe858afa40222bd79612bb36ae13f095a Mon Sep 17 00:00:00 2001 From: ruro Date: Sat, 8 Feb 2025 16:58:15 +0300 Subject: [PATCH] python3Packages.bpycv: remove The bpycv package is incompatible with blender version 4 or later. It seems that neither upstream author nor the nixpkgs maintainer are currently interested in updating/maintaining this package. See: - https://github.com/NixOS/nixpkgs/issues/379872 - https://github.com/DIYer22/bpycv/issues/51 - https://github.com/NixOS/nixpkgs/pull/380403 - https://github.com/NixOS/nixpkgs/pull/380443 --- .../manual/release-notes/rl-2505.section.md | 2 + .../python-modules/bpycv/bpycv-test.py | 80 ------------------- .../python-modules/bpycv/default.nix | 62 -------------- pkgs/top-level/python-aliases.nix | 1 + pkgs/top-level/python-packages.nix | 2 - pkgs/top-level/release-cuda.nix | 1 - 6 files changed, 3 insertions(+), 145 deletions(-) delete mode 100644 pkgs/development/python-modules/bpycv/bpycv-test.py delete mode 100644 pkgs/development/python-modules/bpycv/default.nix diff --git a/nixos/doc/manual/release-notes/rl-2505.section.md b/nixos/doc/manual/release-notes/rl-2505.section.md index 65a61e88f388..cdcc182577df 100644 --- a/nixos/doc/manual/release-notes/rl-2505.section.md +++ b/nixos/doc/manual/release-notes/rl-2505.section.md @@ -290,6 +290,8 @@ - The behavior of the `networking.nat.externalIP` and `networking.nat.externalIPv6` options has been changed. `networking.nat.forwardPorts` now only forwards packets destined for the specified IP addresses. +- `python3Packages.bpycv` has been removed due to being incompatible with Blender 4 and unmaintained. + - `python3Packages.jaeger-client` was removed because it was deprecated upstream. [OpenTelemetry](https://opentelemetry.io) is the recommended replacement. - `nodePackages.meshcommander` has been removed, as the package was deprecated by Intel. diff --git a/pkgs/development/python-modules/bpycv/bpycv-test.py b/pkgs/development/python-modules/bpycv/bpycv-test.py deleted file mode 100644 index 1bf2b9f5a8d3..000000000000 --- a/pkgs/development/python-modules/bpycv/bpycv-test.py +++ /dev/null @@ -1,80 +0,0 @@ -# based on https://github.com/DIYer22/bpycv/blob/c576e01622d87eb3534f73bf1a5686bd2463de97/example/ycb_demo.py -import bpy -import bpycv - -import os -import glob -import random -from pathlib import Path - -example_data_dir = os.environ['BPY_EXAMPLE_DATA'] -out_dir = Path(os.environ['out']) -out_dir.mkdir(parents=True, exist_ok=True) - -models = sorted(glob.glob(os.path.join(example_data_dir, "model", "*", "*.obj"))) -cat_id_to_model_path = dict(enumerate(sorted(models), 1)) - -distractors = sorted(glob.glob(os.path.join(example_data_dir, "distractor", "*.obj"))) - -bpycv.clear_all() -bpy.context.scene.frame_set(1) -bpy.context.scene.render.engine = "CYCLES" -bpy.context.scene.cycles.samples = 32 -bpy.context.scene.render.resolution_y = 1024 -bpy.context.scene.render.resolution_x = 1024 -bpy.context.view_layer.cycles.denoising_store_passes = False - -# A transparency stage for holding rigid body -stage = bpycv.add_stage(transparency=True) - -bpycv.set_cam_pose(cam_radius=1, cam_deg=45) - -hdri_dir = os.path.join(example_data_dir, "background_and_light") -hdri_manager = bpycv.HdriManager( - hdri_dir=hdri_dir, download=False -) # if download is True, will auto download .hdr file from HDRI Haven -hdri_path = hdri_manager.sample() -bpycv.load_hdri_world(hdri_path, random_rotate_z=True) - -# load 5 objects -for index in range(5): - cat_id = random.choice(list(cat_id_to_model_path)) - model_path = cat_id_to_model_path[cat_id] - obj = bpycv.load_obj(model_path) - obj.location = ( - random.uniform(-0.2, 0.2), - random.uniform(-0.2, 0.2), - random.uniform(0.1, 0.3), - ) - obj.rotation_euler = [random.uniform(-3.1415, 3.1415) for _ in range(3)] - # set each instance a unique inst_id, which is used to generate instance annotation. - obj["inst_id"] = cat_id * 1000 + index - with bpycv.activate_obj(obj): - bpy.ops.rigidbody.object_add() - -# load 6 distractors -for index in range(6): - distractor_path = random.choice(distractors) - target_size = random.uniform(0.1, 0.3) - distractor = bpycv.load_distractor(distractor_path, target_size=target_size) - distractor.location = ( - random.uniform(-0.2, 0.2), - random.uniform(-0.2, 0.2), - random.uniform(0.1, 0.3), - ) - distractor.rotation_euler = [random.uniform(-3.1415, 3.1415) for _ in range(3)] - with bpycv.activate_obj(distractor): - bpy.ops.rigidbody.object_add() - -# run pyhsic engine for 20 frames -for i in range(20): - bpy.context.scene.frame_set(bpy.context.scene.frame_current + 1) - -# render image, instance annoatation and depth in one line code -result = bpycv.render_data() - - -result.save(dataset_dir=str(out_dir.resolve()), fname="0", save_blend=True) -print(f'Save to "{out_dir}"') -print(f'Open "{out_dir}/vis/" to see visualize result.') - diff --git a/pkgs/development/python-modules/bpycv/default.nix b/pkgs/development/python-modules/bpycv/default.nix deleted file mode 100644 index 5e7da42a9713..000000000000 --- a/pkgs/development/python-modules/bpycv/default.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ - stdenv, - lib, - beautifulsoup4, - blender, - boxx, - buildPythonPackage, - fetchFromGitHub, - fetchPypi, - minexr, - opencv-python, - requests, - runCommand, - zcs, -}: - -buildPythonPackage rec { - pname = "bpycv"; - version = "0.4.0"; - format = "setuptools"; - - src = fetchPypi { - inherit pname version; - hash = "sha256-qqNGemDB0aagCXjrECuh6kLksf+KujPejpnXVqFG8GY="; - }; - - propagatedBuildInputs = [ - beautifulsoup4 - minexr - zcs - requests - opencv-python - boxx - ]; - - # pythonImportsCheck = [ "bpycv" ]; # this import depends on bpy that is only available inside blender - doCheck = false; - - passthru.tests = { - render = - runCommand "bpycv-render-test" - { - BPY_EXAMPLE_DATA = fetchFromGitHub { - owner = "DIYer22"; - repo = "bpycv_example_data"; - hash = "sha256-dGb6KvbXTGTu5f4AqhA+i4AwTqBoR5SdXk0vsMEcD3Q="; - rev = "6ce0e65c107d572011394da16ffdf851e988dbb4"; - }; - } - '' - ${blender.withPackages (ps: [ ps.bpycv ])}/bin/blender-wrapped -b -P ${./bpycv-test.py} - ''; - }; - - meta = with lib; { - description = "Computer vision utils for Blender"; - homepage = "https://github.com/DIYer22/bpycv"; - license = licenses.mit; - maintainers = [ maintainers.lucasew ]; - inherit (blender.meta) platforms; - }; -} diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index 7b137df6efd3..6e4f9beaf386 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -92,6 +92,7 @@ mapAliases ({ BlinkStick = blinkstick; # added 2023-02-19 blockdiagcontrib-cisco = throw "blockdiagcontrib-cisco is not compatible with blockdiag 2.0.0 and has been removed."; # added 2020-11-29 boto = throw "boto was removed as it is deprecated upstream, had not been updated since 2018, and failed to build; please use boto3 and botocore"; # Added 2024-09-22 + bpycv = throw "bpycv was removed as it is incompatible with blender version 4 or later."; # added 2025-02-08 bsblan = python-bsblan; # added 2022-11-04 btchip = btchip-python; # added 2023-03-03 bugz = throw "use pkgs.pybugz instead"; # added 2024-12-31 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 782cf2c469a9..7031dfa10743 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1880,8 +1880,6 @@ self: super: with self; { bpemb = callPackage ../development/python-modules/bpemb { }; - bpycv = callPackage ../development/python-modules/bpycv {}; - bpylist2 = callPackage ../development/python-modules/bpylist2 { }; bpython = callPackage ../development/python-modules/bpython { }; diff --git a/pkgs/top-level/release-cuda.nix b/pkgs/top-level/release-cuda.nix index 0c00d73e750e..34b9ed1212c9 100644 --- a/pkgs/top-level/release-cuda.nix +++ b/pkgs/top-level/release-cuda.nix @@ -118,7 +118,6 @@ let python3Packages = { boxx = linux; - bpycv = linux; catboost = linux; cupy = linux; faiss = linux;