From be92f500caf1db039f4a3c4db28558e1ead17a68 Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Thu, 14 Nov 2024 21:22:30 +0100 Subject: [PATCH 1/4] coqPackages.coq-lsp: add missing dependency (result) --- pkgs/development/coq-modules/coq-lsp/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/coq-modules/coq-lsp/default.nix b/pkgs/development/coq-modules/coq-lsp/default.nix index d9ddb25636fd..c47cb75dda55 100644 --- a/pkgs/development/coq-modules/coq-lsp/default.nix +++ b/pkgs/development/coq-modules/coq-lsp/default.nix @@ -32,7 +32,7 @@ ''; propagatedBuildInputs = - with coq.ocamlPackages; [ dune-build-info menhir uri yojson ]; + with coq.ocamlPackages; [ dune-build-info menhir result uri yojson ]; meta = with lib; { description = "Language Server Protocol and VS Code Extension for Coq"; From 785e208ce7e912ea10a28c1d9202aec1e020a7f5 Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Thu, 14 Nov 2024 21:22:35 +0100 Subject: [PATCH 2/4] ocamlPackages.ppx_deriving: simplify version selection --- .../ocaml-modules/ppx_deriving/default.nix | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/pkgs/development/ocaml-modules/ppx_deriving/default.nix b/pkgs/development/ocaml-modules/ppx_deriving/default.nix index a2f002071748..c38f79a071f7 100644 --- a/pkgs/development/ocaml-modules/ppx_deriving/default.nix +++ b/pkgs/development/ocaml-modules/ppx_deriving/default.nix @@ -10,31 +10,27 @@ , ounit , ounit2 , ocaml-migrate-parsetree +, version ? + if lib.versionAtLeast ppxlib.version "0.32" then "6.0.3" + else if lib.versionAtLeast ppxlib.version "0.20" then "5.2.1" + else if lib.versionAtLeast ppxlib.version "0.15" then "5.1" + else "5.0" }: -let params = - if lib.versionAtLeast ppxlib.version "0.32" then { - version = "6.0.3"; - sha256 = "sha256-N0qpezLF4BwJqXgQpIv6IYwhO1tknkRSEBRVrBnJSm0="; - } else if lib.versionAtLeast ppxlib.version "0.20" then { - version = "5.2.1"; - sha256 = "11h75dsbv3rs03pl67hdd3lbim7wjzh257ij9c75fcknbfr5ysz9"; - } else if lib.versionAtLeast ppxlib.version "0.15" then { - version = "5.1"; - sha256 = "1i64fd7qrfzbam5hfbl01r0sx4iihsahcwqj13smmrjlnwi3nkxh"; - } else { - version = "5.0"; - sha256 = "0fkzrn4pdyvf1kl0nwvhqidq01pnq3ql8zk1jd56hb0cxaw851w3"; - } -; in +let hash = { + "6.0.3" = "sha256-N0qpezLF4BwJqXgQpIv6IYwhO1tknkRSEBRVrBnJSm0="; + "5.2.1" = "sha256:11h75dsbv3rs03pl67hdd3lbim7wjzh257ij9c75fcknbfr5ysz9"; + "5.1" = "sha256:1i64fd7qrfzbam5hfbl01r0sx4iihsahcwqj13smmrjlnwi3nkxh"; + "5.0" = "sha256:0fkzrn4pdyvf1kl0nwvhqidq01pnq3ql8zk1jd56hb0cxaw851w3"; +}."${version}"; in buildDunePackage rec { pname = "ppx_deriving"; - inherit (params) version; + inherit version; src = fetchurl { url = "https://github.com/ocaml-ppx/ppx_deriving/releases/download/v${version}/ppx_deriving-${lib.optionalString (lib.versionOlder version "6.0") "v"}${version}.tbz"; - inherit (params) sha256; + inherit hash; }; strictDeps = true; From 8530d4c332ae8719deb2bed4c1b3c16425f09d48 Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Thu, 14 Nov 2024 21:22:39 +0100 Subject: [PATCH 3/4] coqPackages.serapi: fix build Use older version of ppx_deriving where relevant and fix to newer version of findlib. --- pkgs/development/coq-modules/serapi/default.nix | 15 ++++++++++----- pkgs/development/coq-modules/serapi/sertop.patch | 11 +++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 pkgs/development/coq-modules/serapi/sertop.patch diff --git a/pkgs/development/coq-modules/serapi/default.nix b/pkgs/development/coq-modules/serapi/default.nix index 126fcbf1ae7a..3b7cc6c73032 100644 --- a/pkgs/development/coq-modules/serapi/default.nix +++ b/pkgs/development/coq-modules/serapi/default.nix @@ -42,8 +42,6 @@ in with coq.ocamlPackages; [ cmdliner findlib # run time dependency of SerAPI - ppx_deriving - ppx_import ppx_sexp_conv ppx_hash sexplib @@ -63,6 +61,7 @@ in }; }).overrideAttrs(o: if lib.versions.isLe "8.19.0+0.19.3" o.version && o.version != "dev" then + let ppx_deriving = coq.ocamlPackages.ppx_deriving.override { version = "5.2.1"; }; in let inherit (o) version; in { src = fetchzip { url = @@ -73,7 +72,7 @@ if lib.versions.isLe "8.19.0+0.19.3" o.version && o.version != "dev" then sha256 = release."${version}".sha256; }; - patches = + patches = lib.optional (lib.versions.isGe "8.16" version) ./sertop.patch ++ ( if version == "8.10.0+0.7.2" then [ ./8.10.0+0.7.2.patch @@ -95,10 +94,16 @@ if lib.versions.isLe "8.19.0+0.19.3" o.version && o.version != "dev" then ./janestreet-0.16.patch ] else [ - ]; + ]); propagatedBuildInputs = o.propagatedBuildInputs - ++ (with coq.ocamlPackages; [ ppx_deriving_yojson yojson zarith ]) # zarith needed because of Coq + ++ (with coq.ocamlPackages; [ + ppx_deriving + (ppx_deriving_yojson.override { inherit ppx_deriving; }) + (ppx_import.override { inherit ppx_deriving; }) + yojson + zarith # zarith needed because of Coq + ]) ; } else { propagatedBuildInputs = o.propagatedBuildInputs ++ [ coq-lsp ]; } diff --git a/pkgs/development/coq-modules/serapi/sertop.patch b/pkgs/development/coq-modules/serapi/sertop.patch new file mode 100644 index 000000000000..2aabe687f855 --- /dev/null +++ b/pkgs/development/coq-modules/serapi/sertop.patch @@ -0,0 +1,11 @@ +--- a/sertop/sertop_loader.ml 2024-11-14 11:49:00.887576232 +0100 ++++ b/sertop/sertop_loader.ml 2024-11-14 11:49:32.433659096 +0100 +@@ -51,7 +51,7 @@ + else None + + let plugin_handler user_handler = +- let loader = Option.default (Fl_dynload.load_packages ~debug:false) user_handler in ++ let loader = Option.default (Fl_dynload.load_packages ?loadfile:None ~debug:false) user_handler in + fun fl_pkg -> + try + let _, fl_pkg = Mltop.PluginSpec.repr fl_pkg in From c459597ac0620939ee9debeea0bfb740168ae958 Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Thu, 14 Nov 2024 21:22:42 +0100 Subject: [PATCH 4/4] coqPackages_8_16.coq-lsp: fix for recent findlib --- pkgs/development/coq-modules/coq-lsp/coq-loader.patch | 11 +++++++++++ pkgs/development/coq-modules/coq-lsp/default.nix | 2 ++ 2 files changed, 13 insertions(+) create mode 100644 pkgs/development/coq-modules/coq-lsp/coq-loader.patch diff --git a/pkgs/development/coq-modules/coq-lsp/coq-loader.patch b/pkgs/development/coq-modules/coq-lsp/coq-loader.patch new file mode 100644 index 000000000000..0bda42043afa --- /dev/null +++ b/pkgs/development/coq-modules/coq-lsp/coq-loader.patch @@ -0,0 +1,11 @@ +--- a/coq/loader.ml 2024-11-14 17:54:36.562137810 +0100 ++++ b/coq/loader.ml 2024-11-14 17:55:01.485154767 +0100 +@@ -81,7 +81,7 @@ + Exninfo.iraise iexn + + let plugin_handler user_loader = +- let loader = Option.default (Fl_dynload.load_packages ~debug:false) user_loader in ++ let loader = Option.default (Fl_dynload.load_packages ?loadfile:None ~debug:false) user_loader in + let safe_loader = safe_loader loader in + fun fl_pkg -> + let _, fl_pkg = Mltop.PluginSpec.repr fl_pkg in diff --git a/pkgs/development/coq-modules/coq-lsp/default.nix b/pkgs/development/coq-modules/coq-lsp/default.nix index c47cb75dda55..8103d28f86bd 100644 --- a/pkgs/development/coq-modules/coq-lsp/default.nix +++ b/pkgs/development/coq-modules/coq-lsp/default.nix @@ -49,4 +49,6 @@ else [ cmdliner ppx_deriving ppx_deriving_yojson ppx_import ppx_sexp_conv ppx_compare ppx_hash sexplib ]); + + patches = lib.optional (lib.versions.isEq "0.1.8" o.version) ./coq-loader.patch; })