diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/reason')
6 files changed, 102 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/reason/default.nix b/nixpkgs/pkgs/development/compilers/reason/default.nix new file mode 100644 index 000000000000..12e58b6739ad --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/reason/default.nix @@ -0,0 +1,65 @@ +{ lib, callPackage, stdenv, makeWrapper, fetchurl, ocaml, findlib, dune_3 +, ncurses +, fix, menhir, menhirLib, menhirSdk, merlin-extend, ppxlib, utop, cppo, ppx_derivers +, dune-build-info +}: + +stdenv.mkDerivation rec { + pname = "ocaml${ocaml.version}-reason"; + version = "3.10.0"; + + src = fetchurl { + url = "https://github.com/reasonml/reason/releases/download/${version}/reason-${version}.tbz"; + hash = "sha256-F+rUwoZK9yc/VtCtYsRWS+Lq3nbT2oex04HtW0T0Zss="; + }; + + strictDeps = true; + nativeBuildInputs = [ + makeWrapper + menhir + ocaml + menhir + cppo + dune_3 + findlib + ]; + + buildInputs = [ + dune-build-info + fix + menhirSdk + ppxlib + utop + ] ++ lib.optional (lib.versionOlder ocaml.version "4.07") ncurses; + + propagatedBuildInputs = [ + menhirLib + merlin-extend + ppx_derivers + ]; + + buildFlags = [ "build" ]; # do not "make tests" before reason lib is installed + + installPhase = '' + runHook preInstall + dune install --prefix=$out --libdir=$OCAMLFIND_DESTDIR + wrapProgram $out/bin/rtop \ + --prefix PATH : "${utop}/bin" \ + --prefix CAML_LD_LIBRARY_PATH : "$CAML_LD_LIBRARY_PATH" \ + --prefix OCAMLPATH : "$OCAMLPATH:$OCAMLFIND_DESTDIR" + runHook postInstall + ''; + + passthru.tests = { + hello = callPackage ./tests/hello { }; + }; + + meta = with lib; { + homepage = "https://reasonml.github.io/"; + downloadPage = "https://github.com/reasonml/reason"; + description = "Facebook's friendly syntax to OCaml"; + license = licenses.mit; + inherit (ocaml.meta) platforms; + maintainers = with maintainers; [ ]; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/reason/tests/hello/default.nix b/nixpkgs/pkgs/development/compilers/reason/tests/hello/default.nix new file mode 100644 index 000000000000..3def42ec08f7 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/reason/tests/hello/default.nix @@ -0,0 +1,26 @@ +{ buildDunePackage, ppxlib, reason }: + +buildDunePackage rec { + pname = "helloreason"; + version = "0.0.1"; + + src = ./.; + + nativeBuildInputs = [ + reason + ]; + + buildInputs = [ + ppxlib + reason + ]; + + doCheck = true; + + doInstallCheck = true; + postInstallCheck = '' + $out/bin/${pname} | grep -q "Hello From Reason" > /dev/null + ''; + + meta.timeout = 60; +} diff --git a/nixpkgs/pkgs/development/compilers/reason/tests/hello/dune b/nixpkgs/pkgs/development/compilers/reason/tests/hello/dune new file mode 100644 index 000000000000..578a56dc6de4 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/reason/tests/hello/dune @@ -0,0 +1,4 @@ +(executable + (name helloreason) + (public_name helloreason) + (libraries reason)) diff --git a/nixpkgs/pkgs/development/compilers/reason/tests/hello/dune-project b/nixpkgs/pkgs/development/compilers/reason/tests/hello/dune-project new file mode 100644 index 000000000000..2f602c3083f4 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/reason/tests/hello/dune-project @@ -0,0 +1 @@ +(lang dune 3.10) diff --git a/nixpkgs/pkgs/development/compilers/reason/tests/hello/helloreason.opam b/nixpkgs/pkgs/development/compilers/reason/tests/hello/helloreason.opam new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/reason/tests/hello/helloreason.opam diff --git a/nixpkgs/pkgs/development/compilers/reason/tests/hello/helloreason.re b/nixpkgs/pkgs/development/compilers/reason/tests/hello/helloreason.re new file mode 100644 index 000000000000..795bd314dcfb --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/reason/tests/hello/helloreason.re @@ -0,0 +1,6 @@ +let sayHello = () => { + let fromWhom = "From Reason"; + print_endline("Hello " ++ fromWhom); +}; + +sayHello(); |