mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-03 11:33:31 +00:00
a13cdfe520
To keep this for the future we also strictDeps where possible, including for janePackages, topkg, oasis and ocamlbuild. This makes some closures significantly smaller and makes cross compilation easier
90 lines
1.9 KiB
Nix
90 lines
1.9 KiB
Nix
{ lib
|
|
, substituteAll
|
|
, fetchurl
|
|
, ocaml
|
|
, dune_2
|
|
, buildDunePackage
|
|
, yojson
|
|
, csexp
|
|
, result
|
|
, dot-merlin-reader
|
|
, jq
|
|
, menhir
|
|
, menhirLib
|
|
, menhirSdk
|
|
}:
|
|
|
|
let
|
|
merlinVersion = "4.4";
|
|
|
|
hashes = {
|
|
"4.4-411" = "sha256:0chx28098mmnjbnaz5wgzsn82rh1w9dhzqmsykb412cq13msl1q4";
|
|
"4.4-412" = "sha256:18xjpsiz7xbgjdnsxfc52l7yfh22harj0birlph4xm42d14pkn0n";
|
|
"4.4-413" = "sha256:1ilmh2gqpwgr51w2ba8r0s5zkj75h00wkw4az61ssvivn9jxr7k0";
|
|
};
|
|
|
|
ocamlVersionShorthand = lib.concatStrings
|
|
(lib.take 2 (lib.splitVersion ocaml.version));
|
|
|
|
version = "${merlinVersion}-${ocamlVersionShorthand}";
|
|
in
|
|
|
|
if !lib.hasAttr version hashes
|
|
then builtins.throw "merlin ${merlinVersion} is not available for OCaml ${ocaml.version}"
|
|
else
|
|
|
|
buildDunePackage {
|
|
pname = "merlin";
|
|
inherit version;
|
|
|
|
src = fetchurl {
|
|
url = "https://github.com/ocaml/merlin/releases/download/v${version}/merlin-${version}.tbz";
|
|
sha256 = hashes."${version}";
|
|
};
|
|
|
|
patches = [
|
|
(substituteAll {
|
|
src = ./fix-paths.patch;
|
|
dot_merlin_reader = "${dot-merlin-reader}/bin/dot-merlin-reader";
|
|
dune = "${dune_2}/bin/dune";
|
|
})
|
|
] ++ lib.optional (!lib.versionAtLeast ocaml.version "4.12")
|
|
# This fixes the test-suite on macOS
|
|
# See https://github.com/ocaml/merlin/pull/1399
|
|
# Fixed in 4.4 for OCaml ≥ 4.12
|
|
./test.patch
|
|
;
|
|
|
|
useDune2 = true;
|
|
|
|
strictDeps = true;
|
|
|
|
nativeBuildInputs = [
|
|
menhir
|
|
jq
|
|
];
|
|
buildInputs = [
|
|
dot-merlin-reader
|
|
yojson
|
|
csexp
|
|
result
|
|
menhirSdk
|
|
menhirLib
|
|
];
|
|
|
|
doCheck = true;
|
|
checkPhase = ''
|
|
runHook preCheck
|
|
patchShebangs tests/merlin-wrapper
|
|
dune runtest # filtering with -p disables tests
|
|
runHook postCheck
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "An editor-independent tool to ease the development of programs in OCaml";
|
|
homepage = "https://github.com/ocaml/merlin";
|
|
license = licenses.mit;
|
|
maintainers = [ maintainers.vbgl maintainers.sternenseemann ];
|
|
};
|
|
}
|