depot/third_party/nixpkgs/pkgs/development/ocaml-modules/ppx_tools/default.nix
Default email 5c370c0b2a Project import generated by Copybara.
GitOrigin-RevId: 33d1e753c82ffc557b4a585c77de43d4c922ebb5
2024-05-15 17:35:15 +02:00

81 lines
2.1 KiB
Nix

{ lib, stdenv, fetchFromGitHub, buildDunePackage, ocaml, findlib, cppo }:
if lib.versionAtLeast ocaml.version "5.2"
then throw "ppx_tools is not available for OCaml ${ocaml.version}"
else
let param =
let v6_6 = {
version = "6.6";
sha256 = "sha256-QhuaQ9346a3neoRM4GrOVzjR8fg9ysMZR1VzNgyIQtc=";
nativeBuildInputs = [cppo];
buildInputs = [cppo];
}; in
{
"4.02" = {
version = "5.0+4.02.0";
sha256 = "16drjk0qafjls8blng69qiv35a84wlafpk16grrg2i3x19p8dlj8"; };
"4.03" = {
version = "5.0+4.03.0";
sha256 = "061v1fl5z7z3ywi4ppryrlcywnvnqbsw83ppq72qmkc7ma4603jg"; };
"4.04" = {
version = "unstable-20161114";
rev = "49c08e2e4ea8fef88692cd1dcc1b38a9133f17ac";
sha256 = "0ywzfkf5brj33nwh49k9if8x8v433ral25f3nbklfc9vqr06zrfl"; };
"4.05" = {
version = "5.0+4.05.0";
sha256 = "1jvvhk6wnkvm7b9zph309ihsc0hyxfpahmxxrq19vx8c674jsdm4"; };
"4.06" = {
version = "5.1+4.06.0";
sha256 = "1ww4cspdpgjjsgiv71s0im5yjkr3544x96wsq1vpdacq7dr7zwiw"; };
"4.07" = {
version = "5.1+4.06.0";
sha256 = "1ww4cspdpgjjsgiv71s0im5yjkr3544x96wsq1vpdacq7dr7zwiw"; };
"4.08" = v6_6;
"4.09" = v6_6;
"4.10" = v6_6;
"4.11" = v6_6;
"4.12" = v6_6;
"4.13" = v6_6;
"4.14" = v6_6;
"5.0" = v6_6;
"5.1" = v6_6;
}.${ocaml.meta.branch};
in
let src = fetchFromGitHub {
owner = "alainfrisch";
repo = pname;
rev = param.rev or param.version;
inherit (param) sha256;
};
pname = "ppx_tools";
meta = with lib; {
description = "Tools for authors of ppx rewriters";
homepage = "https://www.lexifi.com/ppx_tools";
license = licenses.mit;
maintainers = with maintainers; [ vbgl ];
};
in
if lib.versionAtLeast param.version "6.0"
then
buildDunePackage {
inherit pname src meta;
inherit (param) version buildInputs nativeBuildInputs;
}
else
stdenv.mkDerivation {
name = "ocaml${ocaml.version}-${pname}-${param.version}";
inherit src;
nativeBuildInputs = [ ocaml findlib ];
strictDeps = true;
createFindlibDestdir = true;
dontStrip = true;
meta = meta // { inherit (ocaml.meta) platforms; };
}