diff options
author | Jules Aguillon <jules@j3s.fr> | 2023-07-04 15:54:16 +0200 |
---|---|---|
committer | Jules Aguillon <jules@j3s.fr> | 2023-09-28 12:03:20 +0200 |
commit | 187d777aada735b5793f78b9b62726ce0752d739 (patch) | |
tree | 7d2158fb4fe7daebaf24190e2d958ce999e2fcd0 /pkgs/build-support | |
parent | 499149ef950c54c669e4a1d6cdf6f4cc121f543e (diff) |
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`.
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/ocaml/topkg.nix | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/pkgs/build-support/ocaml/topkg.nix b/pkgs/build-support/ocaml/topkg.nix new file mode 100644 index 0000000000000..73be5815e44c7 --- /dev/null +++ b/pkgs/build-support/ocaml/topkg.nix @@ -0,0 +1,28 @@ +{ 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; + }; + +}) |