about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorThomas Heijligen <src@posteo.de>2024-02-19 20:03:13 +0000
committersternenseemann <sternenseemann@systemli.org>2024-02-25 18:19:50 +0100
commitd22ba0a2a71cb6136115ca91999409d6498c9936 (patch)
tree861bcd7b8cee04f52cd38b8509461f3b075cbe5d /pkgs
parentc1b5933e79e45dd7f75075075f6248af8362da08 (diff)
gnatprove: Make src dependend on gcc version
Gnatprove is tightly bound to a specific gcc version. Use the gcc input
version to determin which gnatprove/spark2014 sources should be used.
For now gcc 12 is the only working option. gcc 13 will work as soon as
all ada buildInputs can be provided as gcc 13 build.
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/libraries/ada/gnatprove/default.nix47
1 files changed, 35 insertions, 12 deletions
diff --git a/pkgs/development/libraries/ada/gnatprove/default.nix b/pkgs/development/libraries/ada/gnatprove/default.nix
index ce0f3cc432c1c..4e7c4d964af60 100644
--- a/pkgs/development/libraries/ada/gnatprove/default.nix
+++ b/pkgs/development/libraries/ada/gnatprove/default.nix
@@ -1,29 +1,52 @@
 { stdenv
 , lib
 , fetchFromGitHub
-, gnat12
+, gnat
 , gnatcoll-core
 , gprbuild
 , python3
 , ocamlPackages
 , makeWrapper
 }:
+let
+  gnat_version = lib.versions.major gnat.version;
 
-stdenv.mkDerivation rec {
-  pname = "gnatprove";
-  version = "unstable-2022-05-25";
-
-  src = fetchFromGitHub {
+  fetchSpark2014 = { rev, sha256 } : fetchFromGitHub {
     owner = "AdaCore";
     repo = "spark2014";
-    # commit on fsf-12 branch
-    rev = "ab34e07080a769b63beacc141707b5885c49d375";
-    sha256 = "sha256-7pe3eWitpxmqzjW6qEIEuN0qr2IR+kJ7Ssc9pTBcCD8=";
     fetchSubmodules = true;
+    inherit rev sha256;
+  };
+
+  spark2014 = {
+    "12" = {
+      src = fetchSpark2014 {
+        rev = "ab34e07080a769b63beacc141707b5885c49d375"; # branch fsf-12
+        sha256 = "sha256-7pe3eWitpxmqzjW6qEIEuN0qr2IR+kJ7Ssc9pTBcCD8=";
+      };
+      commit_date = "2022-05-25";
+    };
+    "13" = {
+      src = fetchSpark2014 {
+        rev = "12db22e854defa9d1c993ef904af1e72330a68ca"; # branch fsf-13
+        sha256 = "sha256-mZWP9yF1O4knCiXx8CqolnS+93bM+hTQy40cd0HZmwI=";
+      };
+      commit_date = "2023-01-05";
+    };
   };
 
+  thisSpark = spark2014.${gnat_version} or
+    (builtins.throw "GNATprove depend on a specific GNAT version and can't be built using GNAT ${gnat_version}.");
+
+in
+stdenv.mkDerivation rec {
+  pname = "gnatprove";
+  version = "fsf-${gnat_version}_${thisSpark.commit_date}";
+
+  src = thisSpark.src;
+
   nativeBuildInputs = [
-    gnat12
+    gnat
     gprbuild
     python3
     ocamlPackages.ocaml
@@ -43,8 +66,8 @@ stdenv.mkDerivation rec {
 
   postPatch = ''
     # gnat2why/gnat_src points to the GNAT sources
-    tar xf ${gnat12.cc.src} gcc-${gnat12.cc.version}/gcc/ada
-    mv gcc-${gnat12.cc.version}/gcc/ada gnat2why/gnat_src
+    tar xf ${gnat.cc.src} gcc-${gnat.cc.version}/gcc/ada
+    mv gcc-${gnat.cc.version}/gcc/ada gnat2why/gnat_src
   '';
 
   configurePhase = ''