From 3d34ebd54992b09a017231f95c5604a521a1f186 Mon Sep 17 00:00:00 2001
From: Allan Blanchard <allan.blanchard@cea.fr>
Date: Mon, 21 Feb 2022 15:50:53 +0100
Subject: [PATCH] [ci] Partially enable lint

---
 .gitlab-ci.yml | 16 ++++++++--------
 nix/lint.nix   | 41 +++++++++++++++++++++++++++++++++++++++++
 nix/pkgs.nix   |  1 +
 3 files changed, 50 insertions(+), 8 deletions(-)
 create mode 100644 nix/lint.nix

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 400fac41e1e..2a1d7c13655 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -49,6 +49,14 @@ frama-c:
   tags:
     - nix
 
+lint:
+  stage: build
+  script:
+   - nix-build nix/pkgs.nix -A ocamlPackages.lint
+  coverage: '/lint coverage: \d+\.\d+/'
+  tags:
+   - nix
+
 ################################################################################
 ### TESTS
 
@@ -72,14 +80,6 @@ plugins-tests:
 ################################################################################
 ### PUBLIC
 
-# lint:
-#   stage: build
-#   script:
-#    - nix/frama-ci.sh build -A frama-c.lint
-#   coverage: '/lint coverage: \d+\.\d+/'
-#   tags:
-#    - nix
-
 # wp-qualif:
 #   stage: tests
 #   script:
diff --git a/nix/lint.nix b/nix/lint.nix
new file mode 100644
index 00000000000..6f79ef2ff81
--- /dev/null
+++ b/nix/lint.nix
@@ -0,0 +1,41 @@
+# TODO:
+# - enable lint E-ACSL C files
+# - enable check-headers
+
+{ lib
+, stdenv
+, bc
+# , clang_10
+, frama-c
+# , headache
+, ocp-indent
+} :
+
+stdenv.mkDerivation rec {
+  pname = "lint";
+  version = frama-c.version;
+  slang = frama-c.slang;
+
+  src = frama-c.src;
+
+  nativeBuildInputs = frama-c.nativeBuildInputs;
+
+  buildInputs = frama-c.buildInputs ++ [
+    bc
+    # headache
+    ocp-indent
+    # clang_10
+  ];
+
+  preConfigure = frama-c.preConfigure;
+
+  buildPhase = ''
+    make lint
+    make stats-lint
+    # STRICT_HEADERS=yes make check-headers
+  '';
+
+  installPhase = ''
+    touch $out
+  '';
+}
diff --git a/nix/pkgs.nix b/nix/pkgs.nix
index b14ed53562f..a36dae2d38b 100644
--- a/nix/pkgs.nix
+++ b/nix/pkgs.nix
@@ -9,6 +9,7 @@ let
     why3 = oself.callPackage ./why3.nix {};
     # Builds
     frama-c = oself.callPackage ./frama-c.nix {};
+    lint = oself.callPackage ./lint.nix {};
     # Tests
     main-tests = oself.callPackage ./main-tests.nix {};
     plugins-tests = oself.callPackage ./plugins-tests.nix {};
-- 
GitLab