about summary refs log tree commit diff
path: root/pkgs/development/python-modules/rns
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/rns')
-rw-r--r--pkgs/development/python-modules/rns/default.nix37
-rw-r--r--pkgs/development/python-modules/rns/unvendor-esptool.patch263
2 files changed, 284 insertions, 16 deletions
diff --git a/pkgs/development/python-modules/rns/default.nix b/pkgs/development/python-modules/rns/default.nix
index 0df16e875cf18..d77410a53a8b9 100644
--- a/pkgs/development/python-modules/rns/default.nix
+++ b/pkgs/development/python-modules/rns/default.nix
@@ -1,16 +1,19 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, netifaces
-, pyserial
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  esptool,
+  fetchFromGitHub,
+  netifaces,
+  pyserial,
+  pythonOlder,
+  replaceVars,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "rns";
-  version = "0.7.3";
+  version = "0.7.9";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,14 +22,18 @@ buildPythonPackage rec {
     owner = "markqvist";
     repo = "Reticulum";
     rev = "refs/tags/${version}";
-    hash = "sha256-QcYjqqeXBKx+Ef00Bw1OJMWDMdQgp/fqh3r5yhsa0Kg=";
+    hash = "sha256-O3dxfO8MrTKaYRCBNygZlXKuIA3rjEr8TCtR/vrUYmo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    (replaceVars ./unvendor-esptool.patch {
+      esptool = lib.getExe esptool;
+    })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cryptography
     netifaces
     pyserial
@@ -35,9 +42,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "RNS"
-  ];
+  pythonImportsCheck = [ "RNS" ];
 
   meta = with lib; {
     description = "Cryptography-based networking stack for wide-area networks";
diff --git a/pkgs/development/python-modules/rns/unvendor-esptool.patch b/pkgs/development/python-modules/rns/unvendor-esptool.patch
new file mode 100644
index 0000000000000..ed05812ddd5ae
--- /dev/null
+++ b/pkgs/development/python-modules/rns/unvendor-esptool.patch
@@ -0,0 +1,263 @@
+diff --git a/RNS/Utilities/rnodeconf.py b/RNS/Utilities/rnodeconf.py
+index 566df60..8f6201d 100755
+--- a/RNS/Utilities/rnodeconf.py
++++ b/RNS/Utilities/rnodeconf.py
+@@ -1453,18 +1453,17 @@ def main():
+                         print("\nReady to extract firmware images from the RNode")
+                         print("Press enter to start the extraction process")
+                         input()
+-                        extract_recovery_esptool()
+ 
+                         hash_f = open(EXT_DIR+"/extracted_rnode_firmware.version", "wb")
+                         hash_f.write(v_str.encode("utf-8"))
+                         hash_f.close()
+ 
+                         extraction_parts = [
+-                            ("bootloader", "python \""+CNF_DIR+"/recovery_esptool.py\" --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x1000 0x4650 \""+EXT_DIR+"/extracted_rnode_firmware.bootloader\""),
+-                            ("partition table", "python \""+CNF_DIR+"/recovery_esptool.py\" --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x8000 0xC00 \""+EXT_DIR+"/extracted_rnode_firmware.partitions\""),
+-                            ("app boot", "python \""+CNF_DIR+"/recovery_esptool.py\" --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0xe000 0x2000 \""+EXT_DIR+"/extracted_rnode_firmware.boot_app0\""),
+-                            ("application image", "python \""+CNF_DIR+"/recovery_esptool.py\" --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x10000 0x200000 \""+EXT_DIR+"/extracted_rnode_firmware.bin\""),
+-                            ("console image", "python \""+CNF_DIR+"/recovery_esptool.py\" --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x210000 0x1F0000 \""+EXT_DIR+"/extracted_console_image.bin\""),
++                            ("bootloader", "@esptool@ --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x1000 0x4650 \""+EXT_DIR+"/extracted_rnode_firmware.bootloader\""),
++                            ("partition table", "@esptool@ --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x8000 0xC00 \""+EXT_DIR+"/extracted_rnode_firmware.partitions\""),
++                            ("app boot", "@esptool@ --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0xe000 0x2000 \""+EXT_DIR+"/extracted_rnode_firmware.boot_app0\""),
++                            ("application image", "@esptool@ --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x10000 0x200000 \""+EXT_DIR+"/extracted_rnode_firmware.bin\""),
++                            ("console image", "@esptool@ --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x210000 0x1F0000 \""+EXT_DIR+"/extracted_console_image.bin\""),
+                         ]
+                         import subprocess, shlex
+                         for part, command in extraction_parts:
+@@ -2290,25 +2289,12 @@ def main():
+                     graceful_exit()
+             elif platform == ROM.PLATFORM_ESP32:
+                 numeric_version = float(selected_version)
+-                flasher_dir = UPD_DIR+"/"+selected_version
+-                flasher = flasher_dir+"/esptool.py"
+-                if not os.path.isfile(flasher):
+-                    if os.path.isfile(CNF_DIR+"/recovery_esptool.py"):
+-                        import shutil
+-                        if not os.path.isdir(flasher_dir):
+-                            os.makedirs(flasher_dir)
+-                        shutil.copy(CNF_DIR+"/recovery_esptool.py", flasher)
+-                        RNS.log("No flasher present, using recovery flasher to write firmware to device")
+-
+-                if os.path.isfile(flasher):
+-                    import stat
+-                    os.chmod(flasher, stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP)
+ 
+-                if which(flasher) is not None:
++                if True:
+                     if fw_filename == "rnode_firmware_tbeam.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2326,7 +2312,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2344,7 +2330,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_tbeam_sx1262.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2362,7 +2348,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2380,7 +2366,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_lora32v10.zip":
+                         if numeric_version >= 1.59:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2398,7 +2384,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2416,7 +2402,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_lora32v20.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2434,7 +2420,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2452,7 +2438,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_lora32v21.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2470,7 +2456,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2487,7 +2473,7 @@ def main():
+                             ]
+                     elif fw_filename == "rnode_firmware_lora32v21_tcxo.zip":
+                         return [
+-                            sys.executable, flasher,
++                            "@esptool@",
+                             "--chip", "esp32",
+                             "--port", args.port,
+                             "--baud", args.baud_flash,
+@@ -2506,7 +2492,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_heltec32v2.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2524,7 +2510,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2541,7 +2527,7 @@ def main():
+                             ]
+                     elif fw_filename == "rnode_firmware_heltec32v3.zip":
+                         return [
+-                            sys.executable, flasher,
++                            "@esptool@",
+                             "--chip", "esp32-s3",
+                             "--port", args.port,
+                             "--baud", args.baud_flash,
+@@ -2559,7 +2545,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_featheresp32.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                               sys.executable,  flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2577,7 +2563,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2595,7 +2581,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_esp32_generic.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2613,7 +2599,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2631,7 +2617,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_ng20.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2649,7 +2635,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2667,7 +2653,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_ng21.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2685,7 +2671,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2702,7 +2688,7 @@ def main():
+                             ]
+                     elif fw_filename == "rnode_firmware_t3s3.zip":
+                         return [
+-                            sys.executable, flasher,
++                            "@esptool@",
+                             "--chip", "esp32s3",
+                             "--port", args.port,
+                             "--baud", args.baud_flash,
+@@ -2720,7 +2706,7 @@ def main():
+                         ]
+                     elif fw_filename == "extracted_rnode_firmware.zip":
+                         return [
+-                            sys.executable, flasher,
++                            "@esptool@",
+                             "--chip", "esp32",
+                             "--port", args.port,
+                             "--baud", args.baud_flash,