diff options
Diffstat (limited to 'pkgs/tools/misc/esptool/3.nix')
-rw-r--r-- | pkgs/tools/misc/esptool/3.nix | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/pkgs/tools/misc/esptool/3.nix b/pkgs/tools/misc/esptool/3.nix new file mode 100644 index 0000000000000..3ffa79b8c8bb2 --- /dev/null +++ b/pkgs/tools/misc/esptool/3.nix @@ -0,0 +1,63 @@ +{ lib, fetchFromGitHub, python3, openssl }: + +python3.pkgs.buildPythonApplication rec { + pname = "esptool"; + version = "3.3.2"; + + src = fetchFromGitHub { + owner = "espressif"; + repo = "esptool"; + rev = "v${version}"; + hash = "sha256-hpPL9KNPA+S57SJoKnQewBCOybDbKep0t5RKw9a9GjM="; + }; + + postPatch = '' + substituteInPlace test/test_imagegen.py \ + --replace "sys.executable, ESPTOOL_PY" "ESPTOOL_PY" + ''; + + propagatedBuildInputs = with python3.pkgs; [ + bitstring + cryptography + ecdsa + pyserial + reedsolo + ]; + + # wrapPythonPrograms will overwrite esptool.py with a bash script, + # but espefuse.py tries to import it. Since we don't add any binary paths, + # use patchPythonScript directly. + dontWrapPythonPrograms = true; + postFixup = '' + buildPythonPath "$out $pythonPath" + for f in $out/bin/*.py; do + echo "Patching $f" + patchPythonScript "$f" + done + ''; + + checkInputs = with python3.pkgs; [ + pyelftools + ]; + + # tests mentioned in `.github/workflows/test_esptool.yml` + checkPhase = '' + runHook preCheck + + export ESPTOOL_PY=$out/bin/esptool.py + ${python3.interpreter} test/test_imagegen.py + ${python3.interpreter} test/test_espsecure.py + ${python3.interpreter} test/test_merge_bin.py + ${python3.interpreter} test/test_modules.py + + runHook postCheck + ''; + + meta = with lib; { + description = "ESP8266 and ESP32 serial bootloader utility"; + homepage = "https://github.com/espressif/esptool"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ hexa ]; + platforms = platforms.linux; + }; +} |