summary refs log tree commit diff
diff options
context:
space:
mode:
authorOtavio Salvador <otavio@ossystems.com.br>2023-05-24 14:14:55 -0300
committerAnderson Torres <torres.anderson.85@protonmail.com>2023-05-30 12:37:30 +0000
commitc8cc8f57b6f58f9b7fba119370018e15d4995f62 (patch)
tree369bf1f35f000195409edaf20aff889025ed10f7
parentb88f160f5772c99d634f72489223d19eae0e10ac (diff)
snagboot: init at 1.0
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
(cherry picked from commit cf377038df027b2e676c15b813d0e0fffd2c552d)
-rw-r--r--pkgs/applications/misc/snagboot/default.nix76
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 78 insertions, 0 deletions
diff --git a/pkgs/applications/misc/snagboot/default.nix b/pkgs/applications/misc/snagboot/default.nix
new file mode 100644
index 0000000000000..143b5c1c6a41f
--- /dev/null
+++ b/pkgs/applications/misc/snagboot/default.nix
@@ -0,0 +1,76 @@
+{ lib
+, stdenv
+, fetchPypi
+, pythonRelaxDepsHook
+, python3
+, snagboot
+, testers
+, gitUpdater
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "snagboot";
+  version = "1.0";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-wtIcrd3s/ZfdYqi2a2+IvVYnJie5txJy6d2m+GjuhxU=";
+  };
+
+  passthru = {
+    updateScript = gitUpdater {
+      rev-prefix = "v";
+      ignoredVersions = ".(rc|beta).*";
+    };
+
+    tests.version = testers.testVersion {
+      package = snagboot;
+      command = "snagrecover --version";
+      version = "v${version}";
+    };
+  };
+
+  nativeBuildInputs = [
+    pythonRelaxDepsHook
+  ];
+
+  pythonRemoveDeps = [
+    "pylibfdt"
+    "swig"
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    setuptools
+    pyusb
+    pyserial
+    hid
+    crccheck
+    six
+    xmodem
+    pyyaml
+    libfdt
+    tftpy
+  ];
+
+  postInstall = lib.optionalString stdenv.isLinux ''
+    rules="src/snagrecover/80-snagboot.rules"
+    if [ ! -f "$rules" ]; then
+        echo "$rules is missing, must update the Nix file."
+        exit 1
+    fi
+
+    mkdir -p "$out/lib/udev/rules.d"
+    cp "$rules" "$out/lib/udev/rules.d/80-snagboot.rules"
+  '';
+
+  # There are no tests
+  doCheck = false;
+
+  meta = {
+    homepage = "https://github.com/bootlin/snagboot";
+    description = "Generic recovery and reflashing tool for embedded platforms";
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ otavio ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 8f23cb279bd57..1815ca07902c6 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1699,6 +1699,8 @@ with pkgs;
 
   shell-genie = callPackage  ../applications/misc/shell-genie { };
 
+  snagboot = python3.pkgs.callPackage  ../applications/misc/snagboot { };
+
   simple-dlna-browser = callPackage ../tools/networking/simple-dlna-browser { };
 
   sorted-grep = callPackage ../tools/text/sorted-grep { };