From bc23b0837d38c90185d2dab2954b273082c9b8d4 Mon Sep 17 00:00:00 2001 From: Allan Blanchard <allan.blanchard@cea.fr> Date: Wed, 16 Mar 2022 15:35:18 +0100 Subject: [PATCH] [nix] Ocaml Dune 3 overlay --- nix/dune-dyn.nix | 20 ++++++++++++++++++++ nix/dune-ordering.nix | 19 +++++++++++++++++++ nix/dune-private-libs.nix | 20 ++++++++++++++++++++ nix/dune-stdune.nix | 20 ++++++++++++++++++++ nix/frama-c.nix | 20 +++++++++++++++++--- nix/pkgs.nix | 37 +++++++++++++++++++++++++++++++++++++ nix/sources.json | 6 +++--- 7 files changed, 136 insertions(+), 6 deletions(-) create mode 100644 nix/dune-dyn.nix create mode 100644 nix/dune-ordering.nix create mode 100644 nix/dune-private-libs.nix create mode 100644 nix/dune-stdune.nix diff --git a/nix/dune-dyn.nix b/nix/dune-dyn.nix new file mode 100644 index 00000000000..663d90c0a8b --- /dev/null +++ b/nix/dune-dyn.nix @@ -0,0 +1,20 @@ +{ lib, buildDunePackage, dune_2, dune-ordering, pp }: + +buildDunePackage rec { + pname = "dyn"; + + useDune2 = true; + + inherit (dune_2) src version patches; + buildInputs = dune_2.buildInputs ++ [ dune-ordering pp ] ; + + minimumOCamlVersion = "4.08"; + + dontAddPrefix = true; + + meta = with lib; { + description = "Private libraries of Dune"; + maintainers = []; + license = licenses.mit; + }; +} diff --git a/nix/dune-ordering.nix b/nix/dune-ordering.nix new file mode 100644 index 00000000000..5c5ee063667 --- /dev/null +++ b/nix/dune-ordering.nix @@ -0,0 +1,19 @@ +{ lib, buildDunePackage, dune_2 }: + +buildDunePackage rec { + pname = "ordering"; + + useDune2 = true; + + inherit (dune_2) src version patches; + + minimumOCamlVersion = "4.08"; + + dontAddPrefix = true; + + meta = with lib; { + description = "Private libraries of Dune"; + maintainers = []; + license = licenses.mit; + }; +} diff --git a/nix/dune-private-libs.nix b/nix/dune-private-libs.nix new file mode 100644 index 00000000000..57ab7265ec0 --- /dev/null +++ b/nix/dune-private-libs.nix @@ -0,0 +1,20 @@ +{ lib, buildDunePackage, dune_2, csexp, pp, dune-dyn, dune-stdune, dune-ordering }: + +buildDunePackage rec { + pname = "dune-private-libs"; + + useDune2 = true; + + inherit (dune_2) src version patches; + buildInputs = dune_2.buildInputs ++ [ dune-stdune dune-dyn dune-ordering csexp pp ] ; + + minimumOCamlVersion = "4.08"; + + dontAddPrefix = true; + + meta = with lib; { + description = "Private libraries of Dune"; + maintainers = [ maintainers.marsam ]; + license = licenses.mit; + }; +} diff --git a/nix/dune-stdune.nix b/nix/dune-stdune.nix new file mode 100644 index 00000000000..f203355847f --- /dev/null +++ b/nix/dune-stdune.nix @@ -0,0 +1,20 @@ +{ lib, buildDunePackage, dune_2, dune-ordering, dune-dyn, csexp, pp }: + +buildDunePackage rec { + pname = "stdune"; + + useDune2 = true; + + inherit (dune_2) src version patches; + buildInputs = dune_2.buildInputs ++ [ dune-ordering dune-dyn csexp pp ] ; + + minimumOCamlVersion = "4.08"; + + dontAddPrefix = true; + + meta = with lib; { + description = "Private libraries of Dune"; + maintainers = []; + license = licenses.mit; + }; +} diff --git a/nix/frama-c.nix b/nix/frama-c.nix index b2c05af1256..c03f5616024 100644 --- a/nix/frama-c.nix +++ b/nix/frama-c.nix @@ -11,11 +11,25 @@ , autoconf , findlib # Frama-C build +, apron +, camlzip +, dune_3 +, dune-site-3 , graphviz +, lablgtk3 +, lablgtk3-sourceview3 , ltl2ba -, ocamlPackages +, menhirLib +, mlgmpidl +, ocaml +, ocamlgraph +, ppx_deriving +, ppx_deriving_yojson +, yojson , which , why3 +, zarith +, zmq # Frama-C extra (other targets do not reconfigure) , dos2unix , doxygen @@ -37,11 +51,11 @@ stdenv.mkDerivation rec { wrapGAppsHook ]; - buildInputs = with ocamlPackages; [ + buildInputs = [ apron camlzip dune_3 - dune-site + dune-site-3 findlib graphviz lablgtk3 diff --git a/nix/pkgs.nix b/nix/pkgs.nix index 46ce47e4a8d..410524ec23f 100644 --- a/nix/pkgs.nix +++ b/nix/pkgs.nix @@ -8,6 +8,43 @@ let ocp-indent = oself.callPackage ./ocp-indent.nix {}; psmt2-frontend = oself.callPackage ./psmt2-frontend.nix {}; why3 = oself.callPackage ./why3.nix {}; + # Nix + Dune 3 + dune-build-3 = + osuper.buildDunePackage.override { + dune_2 = oself.dune_3; + }; + dune-ordering-3 = + oself.callPackage ./dune-ordering.nix { + dune_2 = oself.dune_3; + buildDunePackage = oself.dune-build-3; + }; + dune-dyn-3 = + oself.callPackage ./dune-dyn.nix { + dune_2 = oself.dune_3; + buildDunePackage = oself.dune-build-3; + dune-ordering = oself.dune-ordering-3; + }; + dune-stdune-3 = + oself.callPackage ./dune-stdune.nix { + dune_2 = oself.dune_3; + buildDunePackage = oself.dune-build-3; + dune-ordering = oself.dune-ordering-3; + dune-dyn = oself.dune-dyn-3; + }; + dune-private-libs-3 = + oself.callPackage ./dune-private-libs.nix { + dune_2 = oself.dune_3; + buildDunePackage = oself.dune-build-3; + dune-ordering = oself.dune-ordering-3; + dune-stdune = oself.dune-stdune-3; + dune-dyn = oself.dune-dyn-3; + }; + dune-site-3 = + osuper.dune-site.override { + dune_2 = oself.dune_3; + buildDunePackage = oself.dune-build-3; + dune-private-libs = oself.dune-private-libs-3; + }; # Builds frama-c = oself.callPackage ./frama-c.nix {}; lint = oself.callPackage ./lint.nix {}; diff --git a/nix/sources.json b/nix/sources.json index 660c236a9c0..7611438ae2e 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -29,10 +29,10 @@ "homepage": "https://github.com/NixOS/nixpkgs", "owner": "NixOS", "repo": "nixpkgs", - "rev": "18bd82edcc752d6a0e6cce1401ba0c81353a03ca", - "sha256": "0wcc8y7c055hlx20m8x0ap6kqalfrfiw2addvlnvxlw69299rci0", + "rev": "73ad5f9e147c0d2a2061f1d4bd91e05078dc0b58", + "sha256": "01j7nhxbb2kjw38yk4hkjkkbmz50g3br7fgvad6b1cjpdvfsllds", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/18bd82edcc752d6a0e6cce1401ba0c81353a03ca.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/73ad5f9e147c0d2a2061f1d4bd91e05078dc0b58.tar.gz", "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz" }, "why3": { -- GitLab