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`.
This commit is contained in:
Jules Aguillon 2023-07-04 15:54:16 +02:00
parent 499149ef95
commit 187d777aad
2 changed files with 30 additions and 0 deletions

View file

@ -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;
};
})

View file

@ -1890,6 +1890,8 @@ let
buildOasisPackage = callPackage ../build-support/ocaml/oasis.nix { };
buildTopkgPackage = callPackage ../build-support/ocaml/topkg.nix { };
# Apps from all-packages, to be eventually removed
google-drive-ocamlfuse = callPackage ../applications/networking/google-drive-ocamlfuse { };