buildDunePackage: new support function; use it to refactor some OCaml derivations

This commit is contained in:
Théo Zimmermann
2018-11-07 10:08:03 +01:00
parent 5fc73fd52e
commit 794158fcd5
64 changed files with 506 additions and 828 deletions
@@ -1,23 +1,17 @@
{ stdenv, fetchzip, ocaml, findlib, dune, yojson }:
{ stdenv, fetchzip, buildDunePackage, yojson }:
assert stdenv.lib.versionAtLeast ocaml.version "4.02";
let
buildDunePackage rec {
pname = "merlin";
version = "3.2.2";
in
stdenv.mkDerivation {
name = "merlin-${version}";
minimumOCamlVersion = "4.02";
src = fetchzip {
url = "https://github.com/ocaml/merlin/archive/v${version}.tar.gz";
sha256 = "15ssgmwdxylbwhld9p1cq8x6kadxyhll5bfyf11dddj6cldna3hb";
};
buildInputs = [ ocaml findlib dune yojson ];
inherit (dune) installPhase;
buildInputs = [ yojson ];
meta = with stdenv.lib; {
description = "An editor-independent tool to ease the development of programs in OCaml";
@@ -1,33 +1,25 @@
{ stdenv, fetchzip, ncurses
, ocamlPackages
, dune
}:
{ stdenv, fetchzip, ncurses, ocamlPackages }:
stdenv.mkDerivation rec {
with ocamlPackages; buildDunePackage rec {
pname = "ocaml-top";
version = "1.1.5";
name = "ocaml-top-${version}";
src = fetchzip {
url = "https://github.com/OCamlPro/ocaml-top/archive/${version}.tar.gz";
sha256 = "1d4i6aanrafgrgk4mh154k6lkwk0b6mh66rykz33awlf5pfqd8yv";
};
buildInputs = [ ncurses dune ]
++ (with ocamlPackages; [ ocaml ocp-build findlib lablgtk ocp-index ]);
buildInputs = [ ncurses ocp-build lablgtk ocp-index ];
configurePhase = ''
export TERM=xterm
ocp-build -init
'';
buildPhase = "jbuilder build";
inherit (dune) installPhase;
meta = {
homepage = https://www.typerex.org/ocaml-top.html;
license = stdenv.lib.licenses.gpl3;
description = "A simple cross-platform OCaml code editor built for top-level evaluation";
platforms = ocamlPackages.ocaml.meta.platforms or [];
maintainers = with stdenv.lib.maintainers; [ vbgl ];
};
}
@@ -1,15 +1,10 @@
{ stdenv, fetchFromGitHub, ocamlPackages, dune }:
{ stdenv, fetchFromGitHub, ocamlPackages }:
with ocamlPackages;
if !stdenv.lib.versionAtLeast ocaml.version "4.05"
then throw "ocamlformat is not available for OCaml ${ocaml.version}"
else
stdenv.mkDerivation rec {
version = "0.8";
with ocamlPackages; buildDunePackage rec {
pname = "ocamlformat";
name = "${pname}-${version}";
version = "0.8";
minimumOCamlVersion = "4.05";
src = fetchFromGitHub {
owner = "ocaml-ppx";
@@ -19,9 +14,6 @@ stdenv.mkDerivation rec {
};
buildInputs = [
ocaml
dune
findlib
base
cmdliner
fpath
@@ -34,17 +26,10 @@ stdenv.mkDerivation rec {
tools/gen_version.sh src/Version.ml version
'';
buildPhase = ''
dune build -p ocamlformat
'';
inherit (dune) installPhase;
meta = {
homepage = "https://github.com/ocaml-ppx/ocamlformat";
inherit (src.meta) homepage;
description = "Auto-formatter for OCaml code";
maintainers = [ stdenv.lib.maintainers.Zimmi48 ];
license = stdenv.lib.licenses.mit;
inherit (ocamlPackages.ocaml.meta) platforms;
};
}