Declare several versions of OCamlformat (#88799)
OCamlformat is still a bit unstable and it's common to work on several projects that each use a different version. Define every versions at once and share code * ocamlformat: add dependency on base OCamlformat always required Base. This will be important in the future as Base may make breaking changes.
This commit is contained in:
parent
658b78e9b6
commit
c4cb4c226e
2 changed files with 101 additions and 17 deletions
|
@ -1,19 +1,49 @@
|
|||
{ lib, fetchurl, ocamlPackages }:
|
||||
{ lib, fetchurl, fetchzip, ocamlPackages }:
|
||||
|
||||
with ocamlPackages; buildDunePackage rec {
|
||||
pname = "ocamlformat";
|
||||
version = "0.15.0";
|
||||
with ocamlPackages;
|
||||
|
||||
minimumOCamlVersion = "4.06";
|
||||
let
|
||||
mkOCamlformat = {
|
||||
version,
|
||||
sha256,
|
||||
buildInputs,
|
||||
useDune2 ? true,
|
||||
tarballName ? "ocamlformat-${version}.tbz",
|
||||
# The 'src' argument can be removed when 0.11.0 is pruned
|
||||
src ? fetchurl {
|
||||
url = "https://github.com/ocaml-ppx/ocamlformat/releases/download/${version}/${tarballName}";
|
||||
inherit sha256;
|
||||
}
|
||||
}:
|
||||
buildDunePackage rec {
|
||||
pname = "ocamlformat";
|
||||
|
||||
useDune2 = true;
|
||||
minimumOCamlVersion = "4.06";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ocaml-ppx/ocamlformat/releases/download/${version}/ocamlformat-${version}.tbz";
|
||||
sha256 = "0190vz59n6ma9ca1m3syl3mc8i1smj1m3d8x1jp21f710y4llfr6";
|
||||
};
|
||||
inherit src version useDune2 buildInputs;
|
||||
|
||||
buildInputs = [
|
||||
meta = {
|
||||
homepage = "https://github.com/ocaml-ppx/ocamlformat";
|
||||
description = "Auto-formatter for OCaml code";
|
||||
maintainers = [ lib.maintainers.Zimmi48 lib.maintainers.marsam ];
|
||||
license = lib.licenses.mit;
|
||||
};
|
||||
};
|
||||
|
||||
post_0_11_buildInputs = [
|
||||
base
|
||||
cmdliner
|
||||
fpath
|
||||
ocaml-migrate-parsetree
|
||||
odoc
|
||||
re
|
||||
stdio
|
||||
uuseg
|
||||
uutf
|
||||
];
|
||||
|
||||
post_0_14_buildInputs = [
|
||||
base
|
||||
cmdliner
|
||||
fpath
|
||||
ocaml-migrate-parsetree
|
||||
|
@ -25,11 +55,62 @@ with ocamlPackages; buildDunePackage rec {
|
|||
fix
|
||||
menhir
|
||||
];
|
||||
in
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/ocaml-ppx/ocamlformat";
|
||||
description = "Auto-formatter for OCaml code";
|
||||
maintainers = [ lib.maintainers.Zimmi48 lib.maintainers.marsam ];
|
||||
license = lib.licenses.mit;
|
||||
# Older versions should be removed when their usage decrease
|
||||
# This script scraps Github looking for OCamlformat's options and versions usage:
|
||||
# https://gist.github.com/Julow/110dc94308d6078225e0665e3eccd433
|
||||
|
||||
rec {
|
||||
ocamlformat_0_11_0 = mkOCamlformat rec {
|
||||
version = "0.11.0";
|
||||
src = fetchzip {
|
||||
url = "https://github.com/ocaml-ppx/ocamlformat/archive/0.11.0.tar.gz";
|
||||
inherit sha256;
|
||||
};
|
||||
sha256 = "0zvjn71jd4d3znnpgh0yphb2w8ggs457b6bl6cg1fmpdgxnds6yx";
|
||||
useDune2 = false;
|
||||
buildInputs = post_0_11_buildInputs;
|
||||
};
|
||||
|
||||
ocamlformat_0_12 = mkOCamlformat {
|
||||
version = "0.12";
|
||||
sha256 = "1zi8x597dhp2822j6j28s84yyiqppl7kykpwqqclx6ybypvlzdpj";
|
||||
useDune2 = false;
|
||||
buildInputs = post_0_11_buildInputs;
|
||||
};
|
||||
|
||||
ocamlformat_0_13_0 = mkOCamlformat rec {
|
||||
version = "0.13.0";
|
||||
sha256 = "0ki2flqi3xkhw9mfridivb6laxm7gml8rj9qz42vqmy9yx76jjxq";
|
||||
tarballName = "ocamlformat-${version}-2.tbz";
|
||||
useDune2 = false;
|
||||
buildInputs = post_0_11_buildInputs;
|
||||
};
|
||||
|
||||
ocamlformat_0_14_0 = mkOCamlformat {
|
||||
version = "0.14.0";
|
||||
sha256 = "070c0x6z5y0lyls56zm34g8lyc093wkr0jfp50dvrkr9fk1sx2wi";
|
||||
buildInputs = post_0_14_buildInputs;
|
||||
};
|
||||
|
||||
ocamlformat_0_14_1 = mkOCamlformat {
|
||||
version = "0.14.1";
|
||||
sha256 = "03wn46xib63748157xchj7gflkw5000fcjw6n89h9g82q9slazaa";
|
||||
buildInputs = post_0_14_buildInputs;
|
||||
};
|
||||
|
||||
ocamlformat_0_14_2 = mkOCamlformat {
|
||||
version = "0.14.2";
|
||||
sha256 = "16phz1sg9b070p6fm8d42j0piizg05vghdjmw8aj7xm82b1pm7sz";
|
||||
buildInputs = post_0_14_buildInputs;
|
||||
};
|
||||
|
||||
ocamlformat_0_15_0 = mkOCamlformat {
|
||||
version = "0.15.0";
|
||||
sha256 = "0190vz59n6ma9ca1m3syl3mc8i1smj1m3d8x1jp21f710y4llfr6";
|
||||
buildInputs = post_0_14_buildInputs;
|
||||
};
|
||||
|
||||
ocamlformat = ocamlformat_0_15_0;
|
||||
}
|
||||
|
|
|
@ -9549,7 +9549,10 @@ in
|
|||
|
||||
ocaml-crunch = ocamlPackages.crunch.bin;
|
||||
|
||||
ocamlformat = callPackage ../development/tools/ocaml/ocamlformat { };
|
||||
inherit (callPackage ../development/tools/ocaml/ocamlformat { })
|
||||
ocamlformat # latest version
|
||||
ocamlformat_0_11_0 ocamlformat_0_12 ocamlformat_0_13_0 ocamlformat_0_14_0
|
||||
ocamlformat_0_14_1 ocamlformat_0_14_2 ocamlformat_0_15_0;
|
||||
|
||||
orc = callPackage ../development/compilers/orc { };
|
||||
|
||||
|
|
Loading…
Reference in a new issue