From c49eb43d01bce3e25a649ab0fbf4c008ed8770af Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Wed, 16 Oct 2024 11:57:23 +0300 Subject: [PATCH 01/11] Cuda build for perception --- flake.lock | 30 +++++++++++++++--------------- flake.nix | 6 ++++-- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/flake.lock b/flake.lock index 306a559..4696916 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -95,27 +95,27 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1712307699, - "narHash": "sha256-/PzHcPvBvJeZTY9JCEtbNljYLecwggveHQ2oHPlTycA=", - "owner": "NixOS", + "lastModified": 1725556229, + "narHash": "sha256-7gaswQP81pDcri4naPXQuZBvqklWfGO3Os8QOl38nsg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "3541c7628de9414f999ced044c95a284584f4ec1", + "rev": "4764ce988357a7f7ce0b4a562145977c5efbc712", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "master", + "owner": "nixos", "repo": "nixpkgs", + "rev": "4764ce988357a7f7ce0b4a562145977c5efbc712", "type": "github" } }, "nixpkgs_3": { "locked": { - "lastModified": 1707268954, - "narHash": "sha256-2en1kvde3cJVc3ZnTy8QeD2oKcseLFjYPLKhIGDanQ0=", + "lastModified": 1726243404, + "narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=", "owner": "lopsided98", "repo": "nixpkgs", - "rev": "f8e2ebd66d097614d51a56a755450d4ae1632df1", + "rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1715462692, - "narHash": "sha256-ClDP5aXC46y4wyHhEETWHitqIoNLDrt6uRX2HpZtmd0=", + "lastModified": 1728663989, + "narHash": "sha256-UEe1F1gmSOeTdJKfaZt/OFQtqghgtTFSodSn3TnV+Zc=", "owner": "lopsided98", "repo": "nix-ros-overlay", - "rev": "f1c32375c27e59a2e8107d52357a5ee44b3c4413", + "rev": "9ddc986b4dfc9655040563ad07f53cf71e75d6a8", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d3a0835..6cb3b9b 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,7 @@ { description = "Robossembler Development Environments on Nix"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs?ref=master"; + nixpkgs.url = "github:nixos/nixpkgs/4764ce988357a7f7ce0b4a562145977c5efbc712"; flake-utils.follows = "ros-overlay/flake-utils"; ros-overlay.url = "github:lopsided98/nix-ros-overlay?ref=develop"; ros-nixpkgs.follows = "ros-overlay/nixpkgs"; @@ -85,10 +85,12 @@ perception = let perception-packages = p: with p; [ - torch + pytorchWithCuda torchvision torchaudio detectron2 + scipy + pyrr ]; in pkgs.mkShell { From c3b5cf1a22c9fc10d4a76f3e6940f72148c1f33a Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Wed, 16 Oct 2024 12:06:11 +0300 Subject: [PATCH 02/11] Add cuda-maintainers to trusted binary cache --- flake.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 6cb3b9b..1648f40 100644 --- a/flake.nix +++ b/flake.nix @@ -101,10 +101,11 @@ ); nixConfig = { - extra-substituters = [ "https://ros.cachix.org" "https://robossembler.cachix.org" ]; + extra-substituters = [ "https://ros.cachix.org" "https://robossembler.cachix.org" "https://cuda-maintainers.cachix.org" ]; extra-trusted-public-keys = [ "ros.cachix.org-1:dSyZxI8geDCJrwgvCOHDoAfOm5sV1wCPjBkKL+38Rvo=" "robossembler.cachix.org-1:56jBJHroRQSGpZFkW8XMquuzQTjAF/XTo6MogmBM7SQ=" + "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" ]; }; } From 9dee4e9ff1ea05ce1fa9bcac2e2ed08527b0e486 Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Wed, 16 Oct 2024 12:33:40 +0300 Subject: [PATCH 03/11] Add torch with CUDA to overlay --- pkgs/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/default.nix b/pkgs/default.nix index b4319af..c72e865 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -60,6 +60,16 @@ in { hash = "sha256-X1LTOfbIAMy6gToNYS0JpeJpHi0jHPsEjrnCq2c9U0E="; }; }); + torchvision = python-prev.torchvision.override { + torch = python-final.pytorchWithCuda; + }; + torchaudio = python-prev.torchaudio.override { + torch = python-final.pytorchWithCuda; + }; + detectron2 = python-prev.detectron2.override { + torch = python-final.pytorchWithCuda; + torchvision = python-final.torchvision; + }; unified-planning = self.python3Packages.callPackage ./unified-planning { }; bpy-wheel = self.python3Packages.callPackage ./bpy-wheel { }; pysdf = self.python3Packages.callPackage ./pysdf { }; From 324bf87f89e6d74587a28a6402eef7a6700a570d Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Wed, 16 Oct 2024 16:17:46 +0300 Subject: [PATCH 04/11] Add pillow numpy opencv4 --- flake.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/flake.nix b/flake.nix index 1648f40..a4c802c 100644 --- a/flake.nix +++ b/flake.nix @@ -91,6 +91,9 @@ detectron2 scipy pyrr + pillow + numpy + opencv4 ]; in pkgs.mkShell { From e9a1e2ab0d04b93d0fbe418a83d9229434f6848b Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Wed, 16 Oct 2024 16:29:44 +0300 Subject: [PATCH 05/11] add boto3 --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index a4c802c..3dbb079 100644 --- a/flake.nix +++ b/flake.nix @@ -94,6 +94,7 @@ pillow numpy opencv4 + boto3 ]; in pkgs.mkShell { From 123e07d33fa3906cde3f7152eefa51e3da31aa5c Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Wed, 16 Oct 2024 16:38:42 +0300 Subject: [PATCH 06/11] ADD to perception: s3cmd libGL tensorboardx albumentations simplejson --- flake.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 3dbb079..da7c8ed 100644 --- a/flake.nix +++ b/flake.nix @@ -95,10 +95,13 @@ numpy opencv4 boto3 + tensorboardx + albumentations + simplejson ]; in pkgs.mkShell { - packages = [ (pkgs.python3.withPackages perception-packages) ]; + packages = [ pkgs.s3cmd pkgs.libGL ] ++ [ (pkgs.python3.withPackages perception-packages) ]; }; }; } From 07c6463fc0895c11311bfb6abb9076bb45902678 Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Tue, 10 Dec 2024 17:13:39 +0300 Subject: [PATCH 07/11] flake update refactor --- flake.nix | 47 +++--- pkgs/cmake-build-extension/default.nix | 50 ++++++ pkgs/coremltools/default.nix | 36 +++++ pkgs/default.nix | 37 ++++- pkgs/freecad.robossembler/default.nix | 2 +- .../cmake-fix-libxml2-find-package.patch | 13 ++ pkgs/idyntree/default.nix | 62 ++++++++ pkgs/scenario/default.nix | 86 +++++++++++ pkgs/scenario/ignition.patch | 12 ++ pkgs/scenario/mkder.nix | 31 ++++ pkgs/scenario/tiny-process-library.nix | 31 ++++ pkgs/scenario/ycm.nix | 42 ++++++ pkgs/ultralytics-thop/default.nix | 43 ++++++ pkgs/ultralytics/default.nix | 142 ++++++++++++++++++ 14 files changed, 615 insertions(+), 19 deletions(-) create mode 100644 pkgs/cmake-build-extension/default.nix create mode 100644 pkgs/coremltools/default.nix create mode 100644 pkgs/idyntree/cmake-fix-libxml2-find-package.patch create mode 100644 pkgs/idyntree/default.nix create mode 100644 pkgs/scenario/default.nix create mode 100644 pkgs/scenario/ignition.patch create mode 100644 pkgs/scenario/mkder.nix create mode 100644 pkgs/scenario/tiny-process-library.nix create mode 100644 pkgs/scenario/ycm.nix create mode 100644 pkgs/ultralytics-thop/default.nix create mode 100644 pkgs/ultralytics/default.nix diff --git a/flake.nix b/flake.nix index da7c8ed..8193695 100644 --- a/flake.nix +++ b/flake.nix @@ -24,6 +24,7 @@ (import ./overlay.nix) gazebo-overlay.overlays.default ]; + config.allowUnfree = true; }; ros = import ros-nixpkgs { inherit system; overlays = [ ros-overlay.overlays.default @@ -34,41 +35,51 @@ rlib = import ./. { inherit pkgs; - inherit (pkgs) lib mayo rbs-workbench cad-gen cg-gen; + inherit (pkgs) lib rbs-workbench cad-gen cg-gen; inherit (pkgs.stdenv) mkDerivation; inherit (pkgs.libsForQt5) wrapQtAppsHook; }; packages = { - inherit (pkgs) cad-gen cg-gen blender; + inherit (pkgs) cad-gen cg-gen blender cad-gen-docker; }; inherit ros pkgs; devShells = { default = - let - my-python-packages = p: with p; [ - unified-planning - pybullet - scipy - spatialmath - rcg-pipeline - rbs-workbench - ]; - in - pkgs.mkShell { - packages = (with pkgs; [ freecad mayo ]) ++ [ (pkgs.python3.withPackages my-python-packages) ]; - }; + let + my-python-packages = p: with p; [ + unified-planning + pybullet + scipy + spatialmath + rcg-pipeline + rbs-workbench + ]; + in + pkgs.mkShell { + packages = (with pkgs; [ freecad ]) ++ [ (pkgs.python3.withPackages my-python-packages) ]; + }; + + test = + let + my-python-packages = p: with p; [ scenario ]; + in + pkgs.mkShell { + packages = [ (pkgs.python3.withPackages my-python-packages) ]; + }; ros = pkgs.mkShell { name = "ROS environment"; packages = [ + pkgs.vcstool ros.colcon (with ros.rosPackages.humble; buildEnv { paths = [ ros-core rmw-fastrtps-dynamic-cpp + rviz2 ]; }) ]; @@ -76,7 +87,7 @@ RMW_IMPLEMENTATION = "rmw_fastrtps_dynamic_cpp"; }; - all = pkgs.mkShell { packages = with pkgs; [ fstl mayo cad-gen cg-gen ]; }; + all = pkgs.mkShell { packages = with pkgs; [ fstl cad-gen cg-gen ]; }; ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; }; @@ -98,12 +109,14 @@ tensorboardx albumentations simplejson + + ultralytics ]; in pkgs.mkShell { packages = [ pkgs.s3cmd pkgs.libGL ] ++ [ (pkgs.python3.withPackages perception-packages) ]; }; - }; + }; } ); diff --git a/pkgs/cmake-build-extension/default.nix b/pkgs/cmake-build-extension/default.nix new file mode 100644 index 0000000..92cb381 --- /dev/null +++ b/pkgs/cmake-build-extension/default.nix @@ -0,0 +1,50 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + setuptools-scm, + wheel, + gitpython, + cmake, + ninja, + pkg-config +}: + +buildPythonPackage rec { + pname = "cmake-build-extension"; + version = "0.6.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "diegoferigo"; + repo = "cmake-build-extension"; + rev = "v${version}"; + hash = "sha256-taAwxa7Sv+xc8xJRnNM6V7WPcL+TWZOkngwuqjAslzc="; + }; + + # nativeBuildInputs = [ cmake ]; + # buildInputs = [ cmake ninja ]; + dontUseCmakeConfigure = true; + + propagatedBuildInputs = [ gitpython ]; + + build-system = [ + cmake + ninja + setuptools + setuptools-scm + wheel + ]; + + pythonImportsCheck = [ + "cmake_build_extension" + ]; + + meta = { + description = "Setuptools extension to build and package CMake projects"; + homepage = "https://github.com/diegoferigo/cmake-build-extension"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ]; + }; +} diff --git a/pkgs/coremltools/default.nix b/pkgs/coremltools/default.nix new file mode 100644 index 0000000..a714377 --- /dev/null +++ b/pkgs/coremltools/default.nix @@ -0,0 +1,36 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + wheel, +}: + +buildPythonPackage rec { + pname = "coremltools"; + version = "8.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "apple"; + repo = "coremltools"; + rev = version; + hash = "sha256-nMrOtG8kAvz7DxYcf2Dh5f65zbTPSuUfoU7XL2Cx1Aw="; + }; + + build-system = [ + setuptools + wheel + ]; + + pythonImportsCheck = [ + "coremltools" + ]; + + meta = { + description = "Core ML tools contain supporting tools for Core ML model conversion, editing, and validation"; + homepage = "https://github.com/apple/coremltools"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ ]; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index c72e865..76042d3 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -12,7 +12,7 @@ self: super: with self.lib; let pname = "bpy"; src = self.fetchurl { url = "https://download.blender.org/source/${old.pname}-${old.version}.tar.xz"; - hash = "sha256-3AAtguPDQMk4VcZoRzDQGAG2aaKbHMa3XuuZC6aecj8="; + hash = "sha256-4LfgcP9wbSNma6kOuZqFutuN+oC4SNro0zUb8l1Hr/k="; }; cmakeFlags = old.cmakeFlags ++ [ "-DWITH_PYTHON_INSTALL=OFF" @@ -44,6 +44,21 @@ in { }; }; + # Docker Images + + cad-gen-docker = self.dockerTools.buildImage { + name = "cad-gen-docker"; + tag = "latest"; + copyToRoot = self.buildEnv { + name = "image-root"; + paths = with self; [ cad-gen ]; + pathsToLink = [ "/bin" ]; + }; + }; + + tiny-process-library = self.callPackage ./scenario/tiny-process-library.nix { }; + ycm = self.callPackage ./scenario/ycm.nix { }; + # Python packages @@ -60,6 +75,20 @@ in { hash = "sha256-X1LTOfbIAMy6gToNYS0JpeJpHi0jHPsEjrnCq2c9U0E="; }; }); + # torchWithCuda = python-prev.torchWithCuda.overridePythonAttrs (oldAttrs: { + # extraRunpaths = [ "${super.lib.getLib self.cudaPackages.cuda_nvrtc}/lib" ]; + # postPhases = super.lib.optionals self.stdenv.hostPlatform.isUnix ["postPatchelfPhase" ]; + # postPatchelfPhase = '' + # while IFS= read -r -d $'\0' elf ; do + # for extra in $extraRunpaths ; do + # echo patchelf "$elf" --add-rpath "$extra" >&2 + # patchelf "$elf" --add-rpath "$extra" + # done + # done < <( + # find "''${!outputLib}" "$out" -type f -iname '*.so' -print0 + # ) + # ''; + # }); torchvision = python-prev.torchvision.override { torch = python-final.pytorchWithCuda; }; @@ -70,6 +99,9 @@ in { torch = python-final.pytorchWithCuda; torchvision = python-final.torchvision; }; + ultralytics-thop = self.python3Packages.callPackage ./ultralytics-thop { torch = python-final.pytorchWithCuda; }; + coremltools = self.python3Packages.callPackage ./coremltools { }; + ultralytics = self.python3Packages.callPackage ./ultralytics { inherit (python-final) coremltools ultralytics-thop; torch = python-final.pytorchWithCuda; }; unified-planning = self.python3Packages.callPackage ./unified-planning { }; bpy-wheel = self.python3Packages.callPackage ./bpy-wheel { }; pysdf = self.python3Packages.callPackage ./pysdf { }; @@ -84,6 +116,9 @@ in { rbs-workbench = self.python3Packages.callPackage ./freecad.robossembler { inherit (python-final) freecad-lib; inherit rbsFrameworkSrc; }; freecad-lib = self.python3Packages.toPythonModule (self.callPackage ./freecad-lib { }); bpy-lib = self.python3Packages.toPythonModule bpy; + cmake-build-extension = self.python3Packages.callPackage ./cmake-build-extension { }; + scenario = self.python3Packages.callPackage ./scenario { inherit (python-final) cmake-build-extension; }; + idyntree = self.python3Packages.callPackage ./idyntree { inherit (python-final) cmake-build-extension; }; } ) ]; diff --git a/pkgs/freecad.robossembler/default.nix b/pkgs/freecad.robossembler/default.nix index dafd9f8..83adcdf 100644 --- a/pkgs/freecad.robossembler/default.nix +++ b/pkgs/freecad.robossembler/default.nix @@ -32,7 +32,7 @@ buildPythonPackage rec { freecad-lib ]; - pythonImportsCheck = [ "freecad.robossembler" ]; + # pythonImportsCheck = [ "freecad.robossembler" ]; doCheck = false; diff --git a/pkgs/idyntree/cmake-fix-libxml2-find-package.patch b/pkgs/idyntree/cmake-fix-libxml2-find-package.patch new file mode 100644 index 0000000..8c2010d --- /dev/null +++ b/pkgs/idyntree/cmake-fix-libxml2-find-package.patch @@ -0,0 +1,13 @@ +diff --color -ur a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt 2021-05-30 13:46:22.256040282 +0200 ++++ b/CMakeLists.txt 2021-05-30 14:15:42.530181216 +0200 +@@ -333,7 +333,7 @@ + # So, try first to find the CMake module provided by libxml2 package, then fallback + # on the CMake's FindLibXml2.cmake module (which can lack some definition, especially + # in static build case). +-find_package(LibXml2 QUIET NO_MODULE) ++find_package(LibXml2 QUIET MODULE) + if(DEFINED LIBXML2_VERSION_STRING) + set(LIBXML2_FOUND ON) + set(LIBXML2_INCLUDE_DIR ${LIBXML2_INCLUDE_DIRS}) +Seulement dans b: good.patch \ No newline at end of file diff --git a/pkgs/idyntree/default.nix b/pkgs/idyntree/default.nix new file mode 100644 index 0000000..66a4b8d --- /dev/null +++ b/pkgs/idyntree/default.nix @@ -0,0 +1,62 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + cmake, + ninja, + cmake-build-extension, + numpy, + setuptools, + setuptools-scm, + wheel, + eigen, + libxml2, + assimp, + swig, + pybind11, +}: + +buildPythonPackage rec { + pname = "idyntree"; + version = "13.1.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "robotology"; + repo = "idyntree"; + rev = "v${version}"; + hash = "sha256-OD00X5xjcti7GthAkluM7GxUHZ9tl0ne4HhflHsW2qk="; + }; + + nativeBuildInputs = [ swig pybind11 ]; + + buildInputs = [ assimp eigen libxml2.dev ]; + + build-system = [ + cmake + ninja + cmake-build-extension + numpy + setuptools + setuptools-scm + wheel + ]; + + dontUseCmakeConfigure = true; + + cmakeFlags = [ + "-DIDYNTREE_USES_PYTHON_PYBIND11='ON'" + ]; + + pythonImportsCheck = [ + "idyntree" + ]; + + meta = { + description = "Multibody Dynamics Library designed for Free Floating Robots"; + homepage = "https://github.com/robotology/idyntree"; + changelog = "https://github.com/robotology/idyntree/blob/${src.rev}/CHANGELOG.md"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ ]; + }; +} diff --git a/pkgs/scenario/default.nix b/pkgs/scenario/default.nix new file mode 100644 index 0000000..daf2a52 --- /dev/null +++ b/pkgs/scenario/default.nix @@ -0,0 +1,86 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + cmake, + ninja, + cmake-build-extension, + #idyntree, + setuptools, + setuptools-scm, + wheel, + tiny-process-library, + ycm, + pkg-config, + fetchFromGitLab +}: + +let + ycm-src = fetchFromGitHub { + owner = "robotology"; + repo = "ycm"; + rev = "0.16.9"; + hash = "sha256-39DH8plnksLOz2XNcE3qQClD81NIGeJGQszBxVAAsUE="; + }; + + tpl-src = fetchFromGitLab { + owner = "eidheim"; + repo = "tiny-process-library"; + rev = "2.0.4"; + hash = "sha256-ntg0e3Ox5swCoimZG6gwpD2eKKFQx5+vXq77cK+wT1Y="; + }; +in + +buildPythonPackage rec { + pname = "scenario"; + version = "1.4.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "movefasta"; + repo = "scenario"; + rev = "6bf8f7227778a55aef335599e8d127c061af5bf6"; + hash = "sha256-QWBVIr4WaPHLzoRNm8p781k3obvywP+s0YbqP1+Tzd0="; + }; + + patches = [ ./ignition.patch ]; + + postPatch = '' + substituteInPlace deps/CMakeLists.txt \ + --replace "GIT_REPOSITORY https://github.com/robotology/ycm.git" "SOURCE_DIR ${ycm-src}" \ + --replace "GIT_REPOSITORY https://gitlab.com/eidheim/tiny-process-library.git" "SOURCE_DIR ${tpl-src}" \ + --replace "SCENARIO_CALL_FROM_SETUP_PY AND NOT USE_IGNITION" "FALSE" + substituteInPlace pyproject.toml --replace-fail '"idyntree>=3.1",' "" + substituteInPlace setup.py --replace-fail 'cmake_depends_on=["idyntree"],' "" + ''; + + # nativeBuildInputs = [ pkg-config ]; + + build-system = [ + cmake + ninja + cmake-build-extension + #idyntree + setuptools + setuptools-scm + wheel + ]; + + cmakeFlags = [ + "-DSCENARIO_USE_IGNITION=FALSE" + "-DSCENARIO_BUILD_SHARED_LIBRARY=ON" + ]; + + dontUseCmakeConfigure = true; + + pythonImportsCheck = [ + "scenario" + ]; + + meta = { + description = ""; + homepage = "https://github.com/movefasta/scenario"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ]; + }; +} diff --git a/pkgs/scenario/ignition.patch b/pkgs/scenario/ignition.patch new file mode 100644 index 0000000..20e950d --- /dev/null +++ b/pkgs/scenario/ignition.patch @@ -0,0 +1,12 @@ +diff --git a/setup.py b/setup.py +index 9352f44..e204b0d 100644 +--- a/setup.py ++++ b/setup.py +@@ -16,6 +16,7 @@ setuptools.setup( + cmake_configure_options=[ + "-DSCENARIO_CALL_FROM_SETUP_PY:BOOL=ON", + "-DSCENARIO_BUILD_SHARED_LIBRARY:BOOL=OFF", ++ '-DIGNITION_DISTRIBUTION="ignition-gazebo"', + f"-DPython3_EXECUTABLE:PATH={sys.executable}", + ], + disable_editable=True, diff --git a/pkgs/scenario/mkder.nix b/pkgs/scenario/mkder.nix new file mode 100644 index 0000000..b882230 --- /dev/null +++ b/pkgs/scenario/mkder.nix @@ -0,0 +1,31 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, +}: + +stdenv.mkDerivation rec { + pname = "scenario"; + version = "unstable-2024-10-08"; + + src = fetchFromGitHub { + owner = "movefasta"; + repo = "scenario"; + rev = "6bf8f7227778a55aef335599e8d127c061af5bf6"; + hash = "sha256-QWBVIr4WaPHLzoRNm8p781k3obvywP+s0YbqP1+Tzd0="; + }; + + nativeBuildInputs = [ + cmake + ]; + + meta = { + description = ""; + homepage = "https://github.com/movefasta/scenario"; + license = lib.licenses.unfree; # FIXME: nix-init did not find a license + maintainers = with lib.maintainers; [ ]; + mainProgram = "scenario"; + platforms = lib.platforms.all; + }; +} diff --git a/pkgs/scenario/tiny-process-library.nix b/pkgs/scenario/tiny-process-library.nix new file mode 100644 index 0000000..646a233 --- /dev/null +++ b/pkgs/scenario/tiny-process-library.nix @@ -0,0 +1,31 @@ +{ + lib, + stdenv, + fetchFromGitLab, + cmake, +}: + +stdenv.mkDerivation rec { + pname = "tiny-process-library"; + version = "2.0.4"; + + src = fetchFromGitLab { + owner = "eidheim"; + repo = "tiny-process-library"; + rev = "v${version}"; + hash = "sha256-ntg0e3Ox5swCoimZG6gwpD2eKKFQx5+vXq77cK+wT1Y="; + }; + + nativeBuildInputs = [ + cmake + ]; + + meta = { + description = "A small platform independent library making it simple to create and stop new processes in C++, as well as writing to stdin and reading from stdout and stderr of a new process"; + homepage = "https://gitlab.com/eidheim/tiny-process-library"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ]; + mainProgram = "tiny-process-library"; + platforms = lib.platforms.all; + }; +} diff --git a/pkgs/scenario/ycm.nix b/pkgs/scenario/ycm.nix new file mode 100644 index 0000000..085caae --- /dev/null +++ b/pkgs/scenario/ycm.nix @@ -0,0 +1,42 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + pkg-config +}: +let + ycm-src = +in + +stdenv.mkDerivation rec { + pname = "ycm"; + version = "0.16.9"; + + src = fetchFromGitHub { + owner = "robotology"; + repo = "ycm"; + rev = "v${version}"; + hash = "sha256-39DH8plnksLOz2XNcE3qQClD81NIGeJGQszBxVAAsUE="; + }; + + + + nativeBuildInputs = [ + cmake + ]; + + propagatedBuildInputs = [ cmake pkg-config ]; + + # setupHook = ./setup-hook.sh; + + meta = { + description = "YCM (YCM CMake modules) is a collection of various useful CMake modules"; + homepage = "https://github.com/robotology/ycm"; + changelog = "https://github.com/robotology/ycm/blob/${src.rev}/CHANGELOG.md"; + license = lib.licenses.unfree; # FIXME: nix-init did not find a license + maintainers = with lib.maintainers; [ ]; + mainProgram = "ycm"; + platforms = lib.platforms.all; + }; +} diff --git a/pkgs/ultralytics-thop/default.nix b/pkgs/ultralytics-thop/default.nix new file mode 100644 index 0000000..7ff10dc --- /dev/null +++ b/pkgs/ultralytics-thop/default.nix @@ -0,0 +1,43 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + wheel, + numpy, + torch, +}: + +buildPythonPackage rec { + pname = "thop"; + version = "2.0.9"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ultralytics"; + repo = "thop"; + rev = "v${version}"; + hash = "sha256-FzjxEk6yiG+IWwQEzsHcEAB4iVQT1QsyoGlG4I9lSwU="; + }; + + build-system = [ + setuptools + wheel + ]; + + dependencies = [ + numpy + torch + ]; + + pythonImportsCheck = [ + "ultralytics_thop" + ]; + + meta = { + description = "Profile PyTorch models for FLOPs and parameters, helping to evaluate computational efficiency and memory usage"; + homepage = "https://github.com/ultralytics/thop"; + license = lib.licenses.agpl3Only; + maintainers = with lib.maintainers; [ ]; + }; +} diff --git a/pkgs/ultralytics/default.nix b/pkgs/ultralytics/default.nix new file mode 100644 index 0000000..e85ff25 --- /dev/null +++ b/pkgs/ultralytics/default.nix @@ -0,0 +1,142 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + wheel, + matplotlib, + numpy, + opencv4, + pandas, + pillow, + psutil, + py-cpuinfo, + pyyaml, + requests, + scipy, + seaborn, + torch, + torchvision, + tqdm, + ultralytics-thop, + coverage, + ipython, + mkdocs, + mkdocs-jupyter, + #mkdocs-macros-plugin, + mkdocs-material, + mkdocs-redirects, + #mkdocs-ultralytics-plugin, + mkdocstrings, + pytest, + pytest-cov, + coremltools, + flatbuffers, + h5py, + keras, + onnx, + openvino, + scikit-learn, + tensorflow, + #tensorflowjs, + tensorstore, + albumentations, + #hub-sdk, + pycocotools, + #comet, + dvclive, + tensorboard, + shapely, + streamlit, +}: + +buildPythonPackage rec { + pname = "ultralytics"; + version = "8.3.14"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ultralytics"; + repo = "ultralytics"; + rev = "v${version}"; + hash = "sha256-Hg8nUUVbwtXYXcrOkDKQ7IZSo4qqJPcXL4JGeRvsbIY="; + }; + + build-system = [ + setuptools + wheel + ]; + + dependencies = [ + matplotlib + numpy + opencv4 + pandas + pillow + psutil + py-cpuinfo + pyyaml + requests + scipy + seaborn + torch + torchvision + tqdm + ultralytics-thop + ]; + + optional-dependencies = { + dev = [ + coverage + ipython + mkdocs + mkdocs-jupyter + #mkdocs-macros-plugin + mkdocs-material + mkdocs-redirects + #mkdocs-ultralytics-plugin + mkdocstrings + pytest + pytest-cov + ]; + export = [ + coremltools + flatbuffers + h5py + keras + numpy + onnx + openvino + scikit-learn + tensorflow + #tensorflowjs + tensorstore + ]; + extra = [ + albumentations + #hub-sdk + ipython + pycocotools + ]; + logging = [ + # comet + dvclive + tensorboard + ]; + solutions = [ + shapely + streamlit + ]; + }; + + pythonImportsCheck = [ + "ultralytics" + ]; + + meta = { + description = "Ultralytics YOLO11"; + homepage = "https://github.com/ultralytics/ultralytics"; + license = lib.licenses.agpl3Only; + maintainers = with lib.maintainers; [ ]; + }; +} From 7a2e4f914487416d80dffd3d8b9fbf7b15eb9e94 Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Fri, 20 Dec 2024 17:02:14 +0300 Subject: [PATCH 08/11] cmake_build_extention & other scenario deps --- pkgs/default.nix | 2 +- pkgs/scenario/default.nix | 22 +++----------------- pkgs/scenario/ycm-cmake-modules.nix | 32 +++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 20 deletions(-) create mode 100644 pkgs/scenario/ycm-cmake-modules.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 76042d3..8e9eede 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -57,7 +57,7 @@ in { }; tiny-process-library = self.callPackage ./scenario/tiny-process-library.nix { }; - ycm = self.callPackage ./scenario/ycm.nix { }; + ycm = self.callPackage ./scenario/ycm-cmake-modules.nix { }; # Python packages diff --git a/pkgs/scenario/default.nix b/pkgs/scenario/default.nix index daf2a52..a71b7b8 100644 --- a/pkgs/scenario/default.nix +++ b/pkgs/scenario/default.nix @@ -12,25 +12,9 @@ tiny-process-library, ycm, pkg-config, - fetchFromGitLab + fetchgit }: -let - ycm-src = fetchFromGitHub { - owner = "robotology"; - repo = "ycm"; - rev = "0.16.9"; - hash = "sha256-39DH8plnksLOz2XNcE3qQClD81NIGeJGQszBxVAAsUE="; - }; - - tpl-src = fetchFromGitLab { - owner = "eidheim"; - repo = "tiny-process-library"; - rev = "2.0.4"; - hash = "sha256-ntg0e3Ox5swCoimZG6gwpD2eKKFQx5+vXq77cK+wT1Y="; - }; -in - buildPythonPackage rec { pname = "scenario"; version = "1.4.0"; @@ -47,8 +31,8 @@ buildPythonPackage rec { postPatch = '' substituteInPlace deps/CMakeLists.txt \ - --replace "GIT_REPOSITORY https://github.com/robotology/ycm.git" "SOURCE_DIR ${ycm-src}" \ - --replace "GIT_REPOSITORY https://gitlab.com/eidheim/tiny-process-library.git" "SOURCE_DIR ${tpl-src}" \ + --replace "GIT_REPOSITORY https://github.com/robotology/ycm.git" "SOURCE_DIR ${ycm.src}" \ + --replace "GIT_REPOSITORY https://gitlab.com/eidheim/tiny-process-library.git" "SOURCE_DIR ${tiny-process-library.src}" \ --replace "SCENARIO_CALL_FROM_SETUP_PY AND NOT USE_IGNITION" "FALSE" substituteInPlace pyproject.toml --replace-fail '"idyntree>=3.1",' "" substituteInPlace setup.py --replace-fail 'cmake_depends_on=["idyntree"],' "" diff --git a/pkgs/scenario/ycm-cmake-modules.nix b/pkgs/scenario/ycm-cmake-modules.nix new file mode 100644 index 0000000..13435c7 --- /dev/null +++ b/pkgs/scenario/ycm-cmake-modules.nix @@ -0,0 +1,32 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, +}: + +stdenv.mkDerivation rec { + pname = "ycm-cmake-modules"; + version = "0.18.1"; + + src = fetchFromGitHub { + owner = "robotology"; + repo = "ycm-cmake-modules"; + rev = "v${version}"; + hash = "sha256-7kmXvFrb4HFZyie5FurYeChCEivfkxBe+X5bYXirQqc="; + }; + + nativeBuildInputs = [ + cmake + ]; + + meta = { + description = "YCM (YCM CMake modules) is a collection of various useful CMake modules"; + homepage = "https://github.com/robotology/ycm-cmake-modules"; + changelog = "https://github.com/robotology/ycm-cmake-modules/blob/${src.rev}/CHANGELOG.md"; + license = lib.licenses.unfree; # FIXME: nix-init did not find a license + maintainers = with lib.maintainers; [ ]; + mainProgram = "ycm-cmake-modules"; + platforms = lib.platforms.all; + }; +} From c876f7be7b0468467031bd3154d5f09f47903966 Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Mon, 23 Dec 2024 13:17:28 +0300 Subject: [PATCH 09/11] ycm replace --- pkgs/scenario/ycm.nix | 42 ------------------------------------------ 1 file changed, 42 deletions(-) delete mode 100644 pkgs/scenario/ycm.nix diff --git a/pkgs/scenario/ycm.nix b/pkgs/scenario/ycm.nix deleted file mode 100644 index 085caae..0000000 --- a/pkgs/scenario/ycm.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - lib, - stdenv, - fetchFromGitHub, - cmake, - pkg-config -}: -let - ycm-src = -in - -stdenv.mkDerivation rec { - pname = "ycm"; - version = "0.16.9"; - - src = fetchFromGitHub { - owner = "robotology"; - repo = "ycm"; - rev = "v${version}"; - hash = "sha256-39DH8plnksLOz2XNcE3qQClD81NIGeJGQszBxVAAsUE="; - }; - - - - nativeBuildInputs = [ - cmake - ]; - - propagatedBuildInputs = [ cmake pkg-config ]; - - # setupHook = ./setup-hook.sh; - - meta = { - description = "YCM (YCM CMake modules) is a collection of various useful CMake modules"; - homepage = "https://github.com/robotology/ycm"; - changelog = "https://github.com/robotology/ycm/blob/${src.rev}/CHANGELOG.md"; - license = lib.licenses.unfree; # FIXME: nix-init did not find a license - maintainers = with lib.maintainers; [ ]; - mainProgram = "ycm"; - platforms = lib.platforms.all; - }; -} From d6abd32dea626dc85d4de28ff3afb64a578b8622 Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Tue, 21 Jan 2025 20:40:43 +0300 Subject: [PATCH 10/11] ultralytics build --- flake.lock | 38 +++++++++---------- flake.nix | 6 ++- pkgs/default.nix | 8 +++- pkgs/lap/default.nix | 38 +++++++++++++++++++ pkgs/pybboxes/default.nix | 47 ++++++++++++++++++++++++ pkgs/sahi/default.nix | 61 +++++++++++++++++++++++++++++++ pkgs/ultralytics-thop/default.nix | 7 ++-- pkgs/ultralytics/default.nix | 25 +++++++++++-- 8 files changed, 200 insertions(+), 30 deletions(-) create mode 100644 pkgs/lap/default.nix create mode 100644 pkgs/pybboxes/default.nix create mode 100644 pkgs/sahi/default.nix diff --git a/flake.lock b/flake.lock index 4696916..a836350 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -95,27 +95,26 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1725556229, - "narHash": "sha256-7gaswQP81pDcri4naPXQuZBvqklWfGO3Os8QOl38nsg=", + "lastModified": 1737476217, + "narHash": "sha256-N8ICMzgIYhFkCPIe8P+D1ElyzlUcpU61Gl7N1De+lbo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4764ce988357a7f7ce0b4a562145977c5efbc712", + "rev": "1cd1cb9db83427de1a1efdb387f886fe274af01c", "type": "github" }, "original": { "owner": "nixos", "repo": "nixpkgs", - "rev": "4764ce988357a7f7ce0b4a562145977c5efbc712", "type": "github" } }, "nixpkgs_3": { "locked": { - "lastModified": 1726243404, - "narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=", + "lastModified": 1733581040, + "narHash": "sha256-Qn3nPMSopRQJgmvHzVqPcE3I03zJyl8cSbgnnltfFDY=", "owner": "lopsided98", "repo": "nixpkgs", - "rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059", + "rev": "22c3f2cf41a0e70184334a958e6b124fb0ce3e01", "type": "github" }, "original": { @@ -146,18 +145,17 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1728663989, - "narHash": "sha256-UEe1F1gmSOeTdJKfaZt/OFQtqghgtTFSodSn3TnV+Zc=", - "owner": "lopsided98", - "repo": "nix-ros-overlay", - "rev": "9ddc986b4dfc9655040563ad07f53cf71e75d6a8", - "type": "github" + "lastModified": 1735117936, + "narHash": "sha256-J5WgFLgX1inf+H9b2fqbPvRpT63BQ38Hh81F2tYjEmc=", + "ref": "refs/heads/gz-transport-libsodium", + "rev": "1496b71c0d57026c3d33a74b8c5b78762e506895", + "revCount": 1111, + "type": "git", + "url": "file:///home/movefasta/Documents/nix-ros-overlay" }, "original": { - "owner": "lopsided98", - "ref": "develop", - "repo": "nix-ros-overlay", - "type": "github" + "type": "git", + "url": "file:///home/movefasta/Documents/nix-ros-overlay" } }, "systems": { diff --git a/flake.nix b/flake.nix index 8193695..4eaa59d 100644 --- a/flake.nix +++ b/flake.nix @@ -1,9 +1,10 @@ { description = "Robossembler Development Environments on Nix"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/4764ce988357a7f7ce0b4a562145977c5efbc712"; + nixpkgs.url = "github:nixos/nixpkgs"; flake-utils.follows = "ros-overlay/flake-utils"; - ros-overlay.url = "github:lopsided98/nix-ros-overlay?ref=develop"; + # ros-overlay.url = "github:lopsided98/nix-ros-overlay?ref=develop"; + ros-overlay.url = "/home/movefasta/Documents/nix-ros-overlay"; ros-nixpkgs.follows = "ros-overlay/nixpkgs"; gazebo-overlay = { url = "github:movefasta/gazebo-sim-overlay"; @@ -75,6 +76,7 @@ packages = [ pkgs.vcstool ros.colcon + pkgs.scenario (with ros.rosPackages.humble; buildEnv { paths = [ ros-core diff --git a/pkgs/default.nix b/pkgs/default.nix index 8e9eede..70ec705 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -101,7 +101,13 @@ in { }; ultralytics-thop = self.python3Packages.callPackage ./ultralytics-thop { torch = python-final.pytorchWithCuda; }; coremltools = self.python3Packages.callPackage ./coremltools { }; - ultralytics = self.python3Packages.callPackage ./ultralytics { inherit (python-final) coremltools ultralytics-thop; torch = python-final.pytorchWithCuda; }; + lap = self.python3Packages.callPackage ./lap { }; + pybboxes = self.python3Packages.callPackage ./pybboxes { }; + sahi = self.python3Packages.callPackage ./sahi { inherit (python-final) pybboxes; }; + ultralytics = self.python3Packages.callPackage ./ultralytics { + inherit (python-final) coremltools lap ultralytics-thop; + torch = python-final.pytorchWithCuda; + }; unified-planning = self.python3Packages.callPackage ./unified-planning { }; bpy-wheel = self.python3Packages.callPackage ./bpy-wheel { }; pysdf = self.python3Packages.callPackage ./pysdf { }; diff --git a/pkgs/lap/default.nix b/pkgs/lap/default.nix new file mode 100644 index 0000000..0ed0160 --- /dev/null +++ b/pkgs/lap/default.nix @@ -0,0 +1,38 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + cython, + numpy, + setuptools, +}: + +buildPythonPackage rec { + pname = "lap"; + version = "0.5.12"; + pyproject = true; + + src = fetchFromGitHub { + owner = "gatagat"; + repo = "lap"; + rev = "v${version}"; + hash = "sha256-ktLwdeb7UWhdihOhdeYIi6Geyp7aJsVPPec22MtI9Jo="; + }; + + build-system = [ + cython + numpy + setuptools + ]; + + pythonImportsCheck = [ + "lap" + ]; + + meta = { + description = "Linear Assignment Problem solver (LAPJV/LAPMOD"; + homepage = "https://github.com/gatagat/lap"; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ ]; + }; +} diff --git a/pkgs/pybboxes/default.nix b/pkgs/pybboxes/default.nix new file mode 100644 index 0000000..8d401da --- /dev/null +++ b/pkgs/pybboxes/default.nix @@ -0,0 +1,47 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + wheel, + numpy, + pycocotools, + pyyaml, +}: + +buildPythonPackage rec { + pname = "pybboxes"; + version = "0.2.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "devrimcavusoglu"; + repo = "pybboxes"; + rev = version; + hash = "sha256-3JP6gLm62Atq8RJYb4AMPUcGyzyrXMG/ayqvMCNk9g8="; + }; + + build-system = [ + setuptools + wheel + ]; + + dependencies = [ + numpy + pycocotools + pyyaml + ]; + + doCheck = false; + + pythonImportsCheck = [ + "pybboxes" + ]; + + meta = { + description = "Light weight toolkit for bounding boxes providing conversion between bounding box types and simple computations"; + homepage = "https://github.com/devrimcavusoglu/pybboxes"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ]; + }; +} diff --git a/pkgs/sahi/default.nix b/pkgs/sahi/default.nix new file mode 100644 index 0000000..38f2194 --- /dev/null +++ b/pkgs/sahi/default.nix @@ -0,0 +1,61 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + wheel, + click, + fire, + numpy, + opencv-python, + pillow, + pybboxes, + pyyaml, + requests, + shapely, + terminaltables, + tqdm, +}: + +buildPythonPackage rec { + pname = "sahi"; + version = "0.11.20"; + pyproject = true; + + src = fetchFromGitHub { + owner = "obss"; + repo = "sahi"; + rev = version; + hash = "sha256-TFphsF55El32siGdE1WJLnyVXGfaE32Nttvdcy/oqk0="; + }; + + build-system = [ + setuptools + wheel + ]; + + dependencies = [ + click + fire + numpy + opencv-python + pillow + pybboxes + pyyaml + requests + shapely + terminaltables + tqdm + ]; + + pythonImportsCheck = [ + "sahi" + ]; + + meta = { + description = "Framework agnostic sliced/tiled inference + interactive ui + error analysis plots"; + homepage = "https://github.com/obss/sahi"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ]; + }; +} diff --git a/pkgs/ultralytics-thop/default.nix b/pkgs/ultralytics-thop/default.nix index 7ff10dc..9be3b2c 100644 --- a/pkgs/ultralytics-thop/default.nix +++ b/pkgs/ultralytics-thop/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "thop"; - version = "2.0.9"; + version = "2.0.13"; pyproject = true; src = fetchFromGitHub { owner = "ultralytics"; repo = "thop"; rev = "v${version}"; - hash = "sha256-FzjxEk6yiG+IWwQEzsHcEAB4iVQT1QsyoGlG4I9lSwU="; + hash = "sha256-VgHRDXKRZjCE8RR+77GgTGiXeq5e1Bo4l4N72DMRc+s="; }; build-system = [ @@ -27,11 +27,12 @@ buildPythonPackage rec { dependencies = [ numpy + setuptools torch ]; pythonImportsCheck = [ - "ultralytics_thop" + "thop" ]; meta = { diff --git a/pkgs/ultralytics/default.nix b/pkgs/ultralytics/default.nix index e85ff25..51195ef 100644 --- a/pkgs/ultralytics/default.nix +++ b/pkgs/ultralytics/default.nix @@ -4,9 +4,13 @@ fetchFromGitHub, setuptools, wheel, + beautifulsoup4, + onnxruntime, + # sahi, + lap, matplotlib, numpy, - opencv4, + opencv-python, pandas, pillow, psutil, @@ -48,18 +52,19 @@ tensorboard, shapely, streamlit, + pytestCheckHook, }: buildPythonPackage rec { pname = "ultralytics"; - version = "8.3.14"; + version = "8.3.61"; pyproject = true; src = fetchFromGitHub { owner = "ultralytics"; repo = "ultralytics"; rev = "v${version}"; - hash = "sha256-Hg8nUUVbwtXYXcrOkDKQ7IZSo4qqJPcXL4JGeRvsbIY="; + hash = "sha256-0BMOFjVSYDFj3vfDccMCHnM1FqHesXYMWR4yCSs4oac="; }; build-system = [ @@ -68,9 +73,10 @@ buildPythonPackage rec { ]; dependencies = [ + lap matplotlib numpy - opencv4 + opencv-python pandas pillow psutil @@ -129,6 +135,17 @@ buildPythonPackage rec { ]; }; + preBuild = '' + sed -i '/torchvision>=0.9.0/d' pyproject.toml + ''; + + nativeCheckInputs = [ + beautifulsoup4 + onnxruntime + shapely + # sahi + ]; + pythonImportsCheck = [ "ultralytics" ]; From 1c43879f4fd26a85d2a74a7ff18688584c871bd8 Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Wed, 22 Jan 2025 16:36:06 +0300 Subject: [PATCH 11/11] flake update --- flake.lock | 25 +++++++++++++------------ flake.nix | 4 +--- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index a836350..1d7f127 100644 --- a/flake.lock +++ b/flake.lock @@ -95,11 +95,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1737476217, - "narHash": "sha256-N8ICMzgIYhFkCPIe8P+D1ElyzlUcpU61Gl7N1De+lbo=", + "lastModified": 1737552376, + "narHash": "sha256-Dh3mcaPiZr/1Bd3+LXDO0Izxku3w1mXKEkCr3hVs8Jg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1cd1cb9db83427de1a1efdb387f886fe274af01c", + "rev": "a910ca0ea5b9ae5079d689e641a368d819f2b710", "type": "github" }, "original": { @@ -145,17 +145,18 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1735117936, - "narHash": "sha256-J5WgFLgX1inf+H9b2fqbPvRpT63BQ38Hh81F2tYjEmc=", - "ref": "refs/heads/gz-transport-libsodium", - "rev": "1496b71c0d57026c3d33a74b8c5b78762e506895", - "revCount": 1111, - "type": "git", - "url": "file:///home/movefasta/Documents/nix-ros-overlay" + "lastModified": 1736986092, + "narHash": "sha256-HdVJ5cCIORyy7m57VnunC8kBd6r5B680M8sUhAr7mzo=", + "owner": "lopsided98", + "repo": "nix-ros-overlay", + "rev": "503be406769b14b7907c52000d41a3e6a3531f08", + "type": "github" }, "original": { - "type": "git", - "url": "file:///home/movefasta/Documents/nix-ros-overlay" + "owner": "lopsided98", + "ref": "develop", + "repo": "nix-ros-overlay", + "type": "github" } }, "systems": { diff --git a/flake.nix b/flake.nix index 4eaa59d..504a0d3 100644 --- a/flake.nix +++ b/flake.nix @@ -3,8 +3,7 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs"; flake-utils.follows = "ros-overlay/flake-utils"; - # ros-overlay.url = "github:lopsided98/nix-ros-overlay?ref=develop"; - ros-overlay.url = "/home/movefasta/Documents/nix-ros-overlay"; + ros-overlay.url = "github:lopsided98/nix-ros-overlay?ref=develop"; ros-nixpkgs.follows = "ros-overlay/nixpkgs"; gazebo-overlay = { url = "github:movefasta/gazebo-sim-overlay"; @@ -52,7 +51,6 @@ let my-python-packages = p: with p; [ unified-planning - pybullet scipy spatialmath rcg-pipeline