python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / tools / misc / esptool / default.nix
blobe48e026940525667371433f50ca0cd677d96ec74
1 { lib, fetchFromGitHub, python3, openssl }:
3 python3.pkgs.buildPythonApplication rec {
4   pname = "esptool";
5   version = "3.3.1";
7   src = fetchFromGitHub {
8     owner = "espressif";
9     repo = "esptool";
10     rev = "v${version}";
11     hash = "sha256-9WmiLji7Zoad5WIzgkpvkI9t96sfdkCtFh6zqVxF7qo=";
12   };
14   postPatch = ''
15     substituteInPlace test/test_imagegen.py \
16       --replace "sys.executable, ESPTOOL_PY" "ESPTOOL_PY"
17   '';
19   propagatedBuildInputs = with python3.pkgs; [
20     bitstring
21     cryptography
22     ecdsa
23     pyserial
24     reedsolo
25   ];
27   # wrapPythonPrograms will overwrite esptool.py with a bash script,
28   # but espefuse.py tries to import it. Since we don't add any binary paths,
29   # use patchPythonScript directly.
30   dontWrapPythonPrograms = true;
31   postFixup = ''
32     buildPythonPath "$out $pythonPath"
33     for f in $out/bin/*.py; do
34         echo "Patching $f"
35         patchPythonScript "$f"
36     done
37   '';
39   checkInputs = with python3.pkgs; [
40     pyelftools
41   ];
43   # tests mentioned in `.github/workflows/test_esptool.yml`
44   checkPhase = ''
45     runHook preCheck
47     export ESPTOOL_PY=$out/bin/esptool.py
48     ${python3.interpreter} test/test_imagegen.py
49     ${python3.interpreter} test/test_espsecure.py
50     ${python3.interpreter} test/test_merge_bin.py
51     ${python3.interpreter} test/test_modules.py
53     runHook postCheck
54   '';
56   meta = with lib; {
57     description = "ESP8266 and ESP32 serial bootloader utility";
58     homepage = "https://github.com/espressif/esptool";
59     license = licenses.gpl2Plus;
60     maintainers = with maintainers; [ dezgeg dotlambda ] ++ teams.lumiguide.members;
61     platforms = platforms.linux;
62   };