diff --git a/pkgs/development/tools/ocaml/dune/3.nix b/pkgs/development/tools/ocaml/dune/3.nix new file mode 100644 index 000000000000..59ea9c43512f --- /dev/null +++ b/pkgs/development/tools/ocaml/dune/3.nix @@ -0,0 +1,40 @@ +{ lib, stdenv, fetchurl, ocaml, findlib, darwin }: + +if lib.versionOlder ocaml.version "4.08" +then throw "dune 3 is not available for OCaml ${ocaml.version}" +else + +stdenv.mkDerivation rec { + pname = "dune"; + version = "3.0.2"; + + src = fetchurl { + url = "https://github.com/ocaml/dune/releases/download/${version}/fiber-${version}.tbz"; + sha256 = "sha256-o108qIeWMOX0VU/wWdc5bg/UDCT2CCcw/Xx3nFiDbes="; + }; + + nativeBuildInputs = [ ocaml findlib ]; + + buildInputs = lib.optionals stdenv.isDarwin [ + darwin.apple_sdk.frameworks.Foundation + ]; + + strictDeps = true; + + buildFlags = "release"; + + dontAddPrefix = true; + dontAddStaticConfigureFlags = true; + configurePlatforms = []; + + installFlags = [ "PREFIX=${placeholder "out"}" "LIBDIR=$(OCAMLFIND_DESTDIR)" ]; + + meta = { + homepage = "https://dune.build/"; + description = "A composable build system"; + changelog = "https://github.com/ocaml/dune/raw/${version}/CHANGES.md"; + maintainers = [ lib.maintainers.vbgl lib.maintainers.marsam ]; + license = lib.licenses.mit; + inherit (ocaml.meta) platforms; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index be3a38a94ebd..d7596f735fd6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2921,7 +2921,7 @@ with pkgs; duf = callPackage ../tools/misc/duf { }; inherit (ocaml-ng.ocamlPackages_4_10) dune_1; - inherit (ocamlPackages) dune_2 dune-release; + inherit (ocamlPackages) dune_2 dune_3 dune-release; duperemove = callPackage ../tools/filesystems/duperemove { }; diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index a29602dfb7d6..fe7fd7d856ae 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -310,6 +310,8 @@ let then pkgs.dune_2 else throw "dune_2 is not available for OCaml ${ocaml.version}"; + dune_3 = callPackage ../development/tools/ocaml/dune/3.nix { }; + dune-action-plugin = callPackage ../development/ocaml-modules/dune-action-plugin { }; dune-build-info = callPackage ../development/ocaml-modules/dune-build-info { };