From 4aacce3977a1369b52015cdee1566abdff68f719 Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Thu, 16 May 2024 16:24:18 +0200 Subject: [PATCH] nix: Build with OCaml 5.2 This changes flake.nix to build Merlin with OCaml 5.2 in order to support 5.2-only features. Nixpkgs needed to be updated too. --- flake.lock | 6 +++--- flake.nix | 50 ++++++++++++++++++++------------------------------ 2 files changed, 23 insertions(+), 33 deletions(-) diff --git a/flake.lock b/flake.lock index 577a32e8c8..d5a6035d22 100644 --- a/flake.lock +++ b/flake.lock @@ -39,11 +39,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1688587528, - "narHash": "sha256-a1WlbVZyFtXVwqU/Ut+tl8aTgexp/GKloQtGA1Hfwjw=", + "lastModified": 1715867414, + "narHash": "sha256-cu4UEffKkBByyGR6CFs9XP6iSNsKTkq1r66DA5BkYnE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "08c696c8d702e98d6693efea6d0be94b54849a16", + "rev": "bf446f08bff6814b569265bef8374cfdd3d8f0e0", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d5f1604c68..f3594b481e 100644 --- a/flake.nix +++ b/flake.nix @@ -11,17 +11,20 @@ outputs = { self, nixpkgs, flake-utils, menhir-repository }: flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages."${system}".extend (_: super: { - ocamlPackages = super.ocamlPackages.overrideScope' (_: osuper: { + pkgs = nixpkgs.legacyPackages."${system}"; + + # Build with OCaml 5.2 + ocamlPackages = pkgs.ocaml-ng.ocamlPackages_5_2.overrideScope' + (_: osuper: { + # Override menhirLib to the pinned version menhirLib = osuper.menhirLib.overrideAttrs (_: { version = "20201216"; src = menhir-repository; }); }); - }); - inherit (pkgs.ocamlPackages) buildDunePackage; - in - rec { + + inherit (ocamlPackages) buildDunePackage; + in rec { packages = rec { default = merlin; merlin-lib = buildDunePackage { @@ -29,9 +32,7 @@ version = "dev"; src = ./.; duneVersion = "3"; - propagatedBuildInputs = with pkgs.ocamlPackages; [ - csexp - ]; + propagatedBuildInputs = with ocamlPackages; [ csexp ]; doCheck = true; }; dot-merlin-reader = buildDunePackage { @@ -39,12 +40,8 @@ version = "dev"; src = ./.; duneVersion = "3"; - propagatedBuildInputs = [ - pkgs.ocamlPackages.findlib - ]; - buildInputs = [ - merlin-lib - ]; + propagatedBuildInputs = [ ocamlPackages.findlib ]; + buildInputs = [ merlin-lib ]; doCheck = true; }; merlin = buildDunePackage { @@ -55,33 +52,26 @@ buildInputs = [ merlin-lib dot-merlin-reader - pkgs.ocamlPackages.menhirLib - pkgs.ocamlPackages.menhirSdk - pkgs.ocamlPackages.yojson - ]; - nativeBuildInputs = [ - pkgs.ocamlPackages.menhir - pkgs.jq + ocamlPackages.menhirLib + ocamlPackages.menhirSdk + ocamlPackages.yojson ]; + nativeBuildInputs = [ ocamlPackages.menhir pkgs.jq ]; nativeCheckInputs = [ dot-merlin-reader ]; - checkInputs = with pkgs.ocamlPackages; [ - ppxlib - ]; + checkInputs = with ocamlPackages; [ ppxlib ]; doCheck = true; checkPhase = '' runHook preCheck patchShebangs tests/merlin-wrapper dune build @check @runtest runHook postCheck - ''; - meta = with pkgs; { - mainProgram = "ocamlmerlin"; - }; + ''; + meta = with pkgs; { mainProgram = "ocamlmerlin"; }; }; }; devShells.default = pkgs.mkShell { inputsFrom = pkgs.lib.attrValues packages; - buildInputs = with pkgs.ocamlPackages; [ ocaml-lsp ]; + buildInputs = with ocamlPackages; [ ocaml-lsp ]; }; }); }