diff --git a/nix/default.nix b/nix/default.nix index 9484f9c80ec3b0078666a1e745f4039691a3e370..1364faadb7543b9976740cd5a03ea9718b2da4da 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -2,18 +2,18 @@ { pkgs, stdenv, src ? ../., opam2nix, ocaml ? "ocaml-ng.ocamlPackages_4_08.ocaml", plugins ? { } }: let mydir = builtins.getEnv("PWD"); - opam-selection = { + mk-opam-selection = name: { inherit ocaml; - selection = "${mydir}/opam-selection.nix"; + selection = "${mydir}/${name}-${ocaml.version}-opam-selection.nix"; }; - mk_opam_derivations = packages: opam2nix.resolve opam-selection packages; opamPackages = [ "ocamlfind" "zarith" "ocamlgraph" "yojson" "zmq" "ppx_deriving" "ppx_deriving_yojson" "coq=8.12.0" "alt-ergo=2.2.0" "why3=1.4.0" "why3-coq=1.4.0" ]; + # only pure nix packages. See mk_deriv below for adding opam2nix packages mk_buildInputs = { nixPackages ? [] } : - [ pkgs.gnugrep pkgs.gnused pkgs.autoconf pkgs.gnumake pkgs.gcc pkgs.ncurses pkgs.time pkgs.python3 pkgs.perl pkgs.file pkgs.which pkgs.dos2unix] ++ nixPackages ++ opam2nix.buildInputs opam-selection; + [ pkgs.gnugrep pkgs.gnused pkgs.autoconf pkgs.gnumake pkgs.gcc pkgs.ncurses pkgs.time pkgs.python3 pkgs.perl pkgs.file pkgs.which pkgs.dos2unix] ++ nixPackages; # Extends the call to stdenv.mkDerivation with parameters common for all # frama-c derivations mk_deriv = args: @@ -22,20 +22,25 @@ let mydir = builtins.getEnv("PWD"); opamPackages ++ args.opamPackages else opamPackages ; + opam-selection = mk-opam-selection args.name; + buildInputs = args.buildInputs ++ opam2nix.buildInputs opam-selection; in - stdenv.mkDerivation ({ + stdenv.mkDerivation ( + args // + { # Disable Nix's GCC hardening hardeningDisable = [ "all" ]; - } // args) + inherit buildInputs; + }) // - { gen-opam-selection = mk_opam_derivations my_opam_packages; } + { gen-opam-selection = + opam2nix.resolve opam-selection my_opam_packages; } ; in pkgs.lib.makeExtensible (self: { - inherit src mk_buildInputs mk_opam_derivations opamPackages mk_deriv; - gen-opam-selection = self.mk_opam_derivations self.opamPackages; + inherit src mk_buildInputs opamPackages mk_deriv; buildInputs = mk_buildInputs {}; installed = self.main.out; main = mk_deriv { diff --git a/nix/frama-ci.nix b/nix/frama-ci.nix index c2ddb4a5610233f260bd555b732f09661f104d77..c26b5fa8d42ac00667c4f2e36e2c909b15b077dd 100644 --- a/nix/frama-ci.nix +++ b/nix/frama-ci.nix @@ -5,7 +5,7 @@ let src = builtins.fetchGit { "url" = "https://bobot:${password}@git.frama-c.com/frama-c/Frama-CI.git"; "name" = "Frama-CI"; - "rev" = "0f3e686bcec6f8aa9a4d3da797759a1052513ca3"; + "rev" = "28e429a18df17f911cdbc2ad757e2b549e629d0d"; "ref" = "feature/upgrade-opam2nix"; }; in