nixpkgs-suyu/pkgs/build-support/ocaml/topkg.nix
Jules Aguillon 187d777aad ocamlPackages.buildTopkgPackage: Added
This function helps building an OCaml package that builds with topkg.
There are currently many such packages in nixpkgs and this function
would greatly simplify adding more.

This is heavily inspired by `ocamlPackages.buildDunePackage`.
2023-09-28 12:03:20 +02:00

28 lines
827 B
Nix

{ lib, stdenv, fetchurl, ocaml, findlib, topkg, ocamlbuild, cmdliner, odoc, b0
}:
{ pname, version, nativeBuildInputs ? [ ], buildInputs ? [ ], ... }@args:
lib.throwIf (args ? minimalOCamlVersion
&& lib.versionOlder ocaml.version args.minimalOCamlVersion)
"${pname}-${version} is not available for OCaml ${ocaml.version}"
stdenv.mkDerivation ({
dontAddStaticConfigureFlags = true;
configurePlatforms = [ ];
strictDeps = true;
inherit (topkg) buildPhase installPhase;
} // (builtins.removeAttrs args [ "minimalOCamlVersion" ]) // {
name = "ocaml${ocaml.version}-${pname}-${version}";
nativeBuildInputs = [ ocaml findlib ocamlbuild topkg ] ++ nativeBuildInputs;
buildInputs = [ topkg ] ++ buildInputs;
meta = (args.meta or { }) // {
platforms = args.meta.platforms or ocaml.meta.platforms;
};
})