diff options
Diffstat (limited to 'pkgs/development/tools/pyre/default.nix')
-rw-r--r-- | pkgs/development/tools/pyre/default.nix | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/pkgs/development/tools/pyre/default.nix b/pkgs/development/tools/pyre/default.nix new file mode 100644 index 000000000000..7cbfc4385048 --- /dev/null +++ b/pkgs/development/tools/pyre/default.nix @@ -0,0 +1,71 @@ +{ stdenv, fetchFromGitHub, ocamlPackages, makeWrapper, writeScript }: +let + # Manually set version - the setup script requires + # hg and git + keeping the .git directory around. + version = "0.0.8"; + versionFile = writeScript "version.ml" '' + cat > "./version.ml" <<EOF + let build_info () = + "pyre-nixpkgs ${version}" + let version () = + "${version}" + EOF + ''; +in stdenv.mkDerivation { + name = "pyre-${version}"; + + src = fetchFromGitHub { + owner = "facebook"; + repo = "pyre-check"; + rev = "v${version}"; + sha256 = "0c4km27xnzsqcqvjqxmqak37x473z6azlbldy7f05ghkms7mchrw"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + buildInputs = with ocamlPackages; [ + ocaml + findlib + menhir + yojson + core + sedlex + ppx_deriving_yojson + ocamlbuild + ppxlib + ]; + + buildPhase = '' + # build requires HOME to be set + export HOME=. + + # "external" because https://github.com/facebook/pyre-check/pull/8/files + sed "s/%VERSION%/external ${version}/" Makefile.template > Makefile + + cp ${versionFile} ./scripts/generate-version-number.sh + + mkdir $(pwd)/build + export OCAMLFIND_DESTDIR=$(pwd)/build + export OCAMLPATH=$OCAMLPATH:$(pwd)/build + make release + ''; + + checkPhase = '' + make test + ''; + + # Note that we're not installing the typeshed yet. + # Improvement for a future version. + installPhase = '' + mkdir -p $out/bin + cp _build/all/main.native $out/bin/pyre + ''; + + meta = with stdenv.lib; { + description = "A performant type-checker for Python 3"; + homepage = https://pyre-check.org; + license = licenses.mit; + platforms = with platforms; linux; + maintainers = with maintainers; [ teh ]; + }; +} |