about summary refs log tree commit diff
path: root/pkgs/development/compilers/fstar/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/fstar/default.nix')
-rw-r--r--pkgs/development/compilers/fstar/default.nix54
1 files changed, 42 insertions, 12 deletions
diff --git a/pkgs/development/compilers/fstar/default.nix b/pkgs/development/compilers/fstar/default.nix
index 7abdf132b51e..fec71dc46fdc 100644
--- a/pkgs/development/compilers/fstar/default.nix
+++ b/pkgs/development/compilers/fstar/default.nix
@@ -1,36 +1,66 @@
 { lib, stdenv, fetchFromGitHub, z3, ocamlPackages, makeWrapper, installShellFiles }:
 
+let
+  # FStar requires sedlex < 2.4
+  # see https://github.com/FStarLang/FStar/issues/2343
+  sedlex-2_3 = ocamlPackages.sedlex_2.overrideAttrs (_: rec {
+    pname = "sedlex";
+    version = "2.3";
+    src = fetchFromGitHub {
+       owner = "ocaml-community";
+       repo = "sedlex";
+       rev = "v${version}";
+       sha256 = "WXUXUuIaBUrFPQOKtZ7dgDZYdpEVnoJck0dkrCi8g0c=";
+    };
+  });
+in
+
 stdenv.mkDerivation rec {
   pname = "fstar";
-  version = "0.9.6.0";
+  version = "2021.07.31";
 
   src = fetchFromGitHub {
     owner = "FStarLang";
     repo = "FStar";
     rev = "v${version}";
-    sha256 = "0wix7l229afkn6c6sk4nwkfq0nznsiqdkds4ixi2yyf72immwmmb";
+    sha256 = "KZTmphpt8nYpOd8EReAZ6iIkS4uY3ZziKQ3A70BL/90=";
   };
 
   nativeBuildInputs = [ makeWrapper installShellFiles ];
 
-  buildInputs = with ocamlPackages; [
-    z3 ocaml findlib batteries menhir menhirLib stdint
-    zarith camlp4 yojson pprint
-    ulex ocaml-migrate-parsetree process ppx_deriving ppx_deriving_yojson ocamlbuild
-  ];
+  buildInputs = [
+    z3
+  ] ++ (with ocamlPackages; [
+    ocaml
+    findlib
+    ocamlbuild
+    batteries
+    zarith
+    stdint
+    yojson
+    fileutils
+    menhir
+    menhirLib
+    pprint
+    sedlex-2_3
+    ppxlib
+    ppx_deriving
+    ppx_deriving_yojson
+    process
+  ]);
 
   makeFlags = [ "PREFIX=$(out)" ];
 
-  preBuild = ''
-    patchShebangs src/tools
-    patchShebangs bin
+  buildFlags = [ "libs" ];
+
+  postPatch = ''
+    patchShebangs ulib/gen_mllib.sh
+    substituteInPlace src/ocaml-output/Makefile --replace '$(COMMIT)' 'v${version}'
   '';
-  buildFlags = [ "-C" "src/ocaml-output" ];
 
   preInstall = ''
     mkdir -p $out/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib/fstarlib
   '';
-  installFlags = [ "-C" "src/ocaml-output" ];
   postInstall = ''
     wrapProgram $out/bin/fstar.exe --prefix PATH ":" "${z3}/bin"
     installShellCompletion --bash .completion/bash/fstar.exe.bash