Merge pull request #329823 from ExpidusOS/fix/pkgsllvm/elfutils
[NixPkgs.git] / pkgs / development / interpreters / micropython / default.nix
blob25097e0876061d62e8972452a32d03c5fbb13ef2
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , pkg-config
5 , python3
6 , libffi
7 , readline
8 }:
10 stdenv.mkDerivation rec {
11   pname = "micropython";
12   version = "1.23.0";
14   src = fetchFromGitHub {
15     owner = "micropython";
16     repo = "micropython";
17     rev = "v${version}";
18     hash = "sha256-sfJohmsqq5FumUoVE8x3yWv12DiCJJXae62br0j+190=";
19     fetchSubmodules = true;
20   };
22   nativeBuildInputs = [ pkg-config python3 ];
24   buildInputs = [ libffi readline ];
26   buildPhase = ''
27     runHook preBuild
28     make -C mpy-cross
29     make -C ports/unix
30     runHook postBuild
31   '';
33   doCheck = true;
35   skippedTests = " -e select_poll_fd"
36     + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) " -e ffi_callback"
37     + lib.optionalString (stdenv.isLinux && stdenv.isAarch64) " -e float_parse"
38   ;
40   checkPhase = ''
41     runHook preCheck
42     pushd tests
43     ${python3.interpreter} ./run-tests.py ${skippedTests}
44     popd
45     runHook postCheck
46   '';
48   installPhase = ''
49     runHook preInstall
50     mkdir -p $out/bin
51     install -Dm755 ports/unix/build-standard/micropython -t $out/bin
52     install -Dm755 mpy-cross/build/mpy-cross -t $out/bin
53     runHook postInstall
54   '';
56   meta = with lib; {
57     description = "Lean and efficient Python implementation for microcontrollers and constrained systems";
58     homepage = "https://micropython.org";
59     platforms = platforms.unix;
60     license = licenses.mit;
61     maintainers = with maintainers; [ prusnak sgo ];
62   };