Skip to content
Snippets Groups Projects
Commit 2a91cd12 authored by Virgile Prevosto's avatar Virgile Prevosto
Browse files

Merge branch 'feature/upgrade-opam2nix' into 'master'

Update Frama-CI data

See merge request frama-c/frama-c!3150
parents 8bc6b809 bf1feec2
No related branches found
No related tags found
No related merge requests found
...@@ -30,7 +30,13 @@ git-update: ...@@ -30,7 +30,13 @@ git-update:
frama-c: frama-c:
stage: build stage: build
script: script:
- nix/frama-ci.sh build -A frama-c.installed - nix/frama-ci.sh build -A frama-c.main
artifacts:
when: on_failure
paths:
- commits.nix
- results.log
expire_in: 1 day
tags: tags:
- nix - nix
......
# paramaterised derivation with dependencies injected (callPackage style) # paramaterised derivation with dependencies injected (callPackage style)
{ pkgs, stdenv, src ? ../., opam2nix, ocaml_version ? "ocaml-ng.ocamlPackages_4_08.ocaml", plugins ? { } }: { pkgs, stdenv, src ? ../., opam2nix, ocaml ? pkgs.ocaml-ng.ocamlPackages_4_08.ocaml, plugins ? { } }:
let mk_buildInputs = { opamPackages ? [], nixPackages ? [] } : let mydir = builtins.getEnv("PWD");
[ 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.build { mk-opam-selection = { name, opamSrc?null, ... }: {
specs = opam2nix.toSpecs ([ "ocamlfind" "zarith" "ocamlgraph" "yojson" "zmq" inherit ocaml;
"ppx_deriving" "ppx_deriving_yojson" src = opamSrc;
{ name = "coq"; constraint = "=8.12.0"; } selection = "${mydir}/${name}-${ocaml.version}-opam-selection.nix";
{ name = "alt-ergo" ; constraint = "=2.2.0"; } };
{ name = "why3" ; constraint = "=1.4.0"; } opamPackages =
{ name = "why3-coq" ; constraint = "=1.4.0"; } [ "ocamlfind" "zarith" "ocamlgraph" "yojson" "zmq"
] ++ opamPackages "ppx_deriving" "ppx_deriving_yojson"
); "coq=8.12.0" "alt-ergo=2.2.0" "why3=1.4.0" "why3-coq=1.4.0" ];
ocamlAttr = ocaml_version;
};
# 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;
# Extends the call to stdenv.mkDerivation with parameters common for all # Extends the call to stdenv.mkDerivation with parameters common for all
# frama-c derivations # frama-c derivations
mk_deriv = args: mk_deriv = args:
stdenv.mkDerivation ({ let my_opam_packages =
if args?opamPackages then
opamPackages ++ args.opamPackages
else opamPackages
;
opam-selection = mk-opam-selection args;
buildInputs = args.buildInputs ++ opam2nix.buildInputs opam-selection;
in
stdenv.mkDerivation (
args //
{
# Disable Nix's GCC hardening # Disable Nix's GCC hardening
hardeningDisable = [ "all" ]; hardeningDisable = [ "all" ];
} // args); inherit buildInputs;
})
//
{ gen-opam-selection =
opam2nix.resolve opam-selection my_opam_packages; }
;
in in
pkgs.lib.makeExtensible pkgs.lib.makeExtensible
(self: { (self: {
inherit src mk_buildInputs; inherit src mk_buildInputs opamPackages mk_deriv;
buildInputs = mk_buildInputs {}; buildInputs = mk_buildInputs {};
installed = self.main.out; installed = self.main.out;
main = mk_deriv { main = mk_deriv {
...@@ -74,13 +90,9 @@ pkgs.lib.makeExtensible ...@@ -74,13 +90,9 @@ pkgs.lib.makeExtensible
lint = mk_deriv { lint = mk_deriv {
name = "frama-c-lint"; name = "frama-c-lint";
src = self.src; src = self.src;
opamPackages = [ "ocp-indent=1.7.0" "headache=1.05"];
buildInputs = buildInputs =
(self.mk_buildInputs { self.mk_buildInputs { nixPackages = [ pkgs.bc ]; };
nixPackages = [ pkgs.bc ];
opamPackages = [
{ name = "ocp-indent"; constraint = "=1.7.0"; }
{ name = "headache"; constraint = "=1.05"; }
];} );
outputs = [ "out" ]; outputs = [ "out" ];
postPatch = '' postPatch = ''
patchShebangs . patchShebangs .
...@@ -120,16 +132,13 @@ pkgs.lib.makeExtensible ...@@ -120,16 +132,13 @@ pkgs.lib.makeExtensible
installPhase = '' installPhase = ''
true true
''; '';
}; } // { other-opam-selection = "main"; };
build-distrib-tarball = mk_deriv { build-distrib-tarball = mk_deriv {
name = "frama-c-build-distrib-tarball"; name = "frama-c-build-distrib-tarball";
src = self.src; src = self.src;
buildInputs = buildInputs = self.buildInputs;
(self.mk_buildInputs { opamPackages = [ "headache=1.05" ];
opamPackages = [
{ name = "headache"; constraint = "=1.05"; }
];} );
outputs = [ "out" ]; outputs = [ "out" ];
postPatch = '' postPatch = ''
patchShebangs . patchShebangs .
...@@ -152,6 +161,7 @@ pkgs.lib.makeExtensible ...@@ -152,6 +161,7 @@ pkgs.lib.makeExtensible
build-from-distrib-tarball = mk_deriv { build-from-distrib-tarball = mk_deriv {
name = "frama-c-build-from-distrib-tarball"; name = "frama-c-build-from-distrib-tarball";
buildInputs = self.buildInputs; buildInputs = self.buildInputs;
opamPackages = self.build-distrib-tarball.opamPackages;
src = self.build-distrib-tarball.out ; src = self.build-distrib-tarball.out ;
outputs = [ "out" ]; outputs = [ "out" ];
configurePhase = '' configurePhase = ''
...@@ -165,7 +175,7 @@ pkgs.lib.makeExtensible ...@@ -165,7 +175,7 @@ pkgs.lib.makeExtensible
installPhase = '' installPhase = ''
true true
''; '';
}; } // { other-opam-selection = "build-distrib-tarball"; };
wp-qualif = mk_deriv { wp-qualif = mk_deriv {
name = "frama-c-wp-qualif"; name = "frama-c-wp-qualif";
...@@ -193,7 +203,7 @@ pkgs.lib.makeExtensible ...@@ -193,7 +203,7 @@ pkgs.lib.makeExtensible
installPhase = '' installPhase = ''
true true
''; '';
}; } // { other-opam-selection = "main"; };
aorai-prove = mk_deriv { aorai-prove = mk_deriv {
name = "frama-c-aorai-prove"; name = "frama-c-aorai-prove";
...@@ -221,7 +231,7 @@ pkgs.lib.makeExtensible ...@@ -221,7 +231,7 @@ pkgs.lib.makeExtensible
installPhase = '' installPhase = ''
true true
''; '';
}; } // { other-opam-selection = "main"; };
eva-tests = mk_deriv { eva-tests = mk_deriv {
name = "frama-c-eva-tests"; name = "frama-c-eva-tests";
...@@ -266,17 +276,18 @@ pkgs.lib.makeExtensible ...@@ -266,17 +276,18 @@ pkgs.lib.makeExtensible
installPhase = '' installPhase = ''
true true
''; '';
}; } // { other-opam-selection = "main"; };
internal = mk_deriv { internal = mk_deriv {
name = "frama-c-internal"; name = "frama-c-internal";
src = self.src; src = self.src;
buildInputs = (self.mk_buildInputs { opamPackages = [ "xml-light" ]; } ) ++ opamPackages = [ "xml-light" ];
[ pkgs.getopt buildInputs =
pkgs.libxslt pkgs.libxml2 pkgs.autoPatchelfHook self.mk_buildInputs
pkgs.swiProlog { nixPackages =
stdenv.cc.cc.lib [ pkgs.getopt pkgs.libxslt pkgs.libxml2 pkgs.autoPatchelfHook
]; pkgs.swiProlog stdenv.cc.cc.lib ];
};
counter_examples_src = plugins.counter-examples.src; counter_examples_src = plugins.counter-examples.src;
genassigns_src = plugins.genassigns.src; genassigns_src = plugins.genassigns.src;
frama_clang_src = plugins.frama-clang.src; frama_clang_src = plugins.frama-clang.src;
......
#To copy in other repository #To copy in other repository
{ pkgs ? import <nixpkgs> {}, password}: { password}:
let let
src = builtins.fetchGit { src = builtins.fetchGit {
"url" = "https://bobot:${password}@git.frama-c.com/frama-c/Frama-CI.git"; "url" = "https://bobot:${password}@git.frama-c.com/frama-c/Frama-CI.git";
"name" = "Frama-CI"; "name" = "Frama-CI";
"rev" = "f86e807d6f440ac4479b78f8419dfd817803419d"; "rev" = "c573f802c66f3821d0bac5f0b71eceaed26b26f1";
"ref" = "feature/wp/versions-bump"; "ref" = "feature/upgrade-opam2nix";
}; };
pkgs = import "${src}/pkgs.nix" {};
in in
{ {
src = src; src = src;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment