about summary refs log tree commit diff
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
parentc1b5933e79e45dd7f75075075f6248af8362da08 (diff)
downloadnixlib-d22ba0a2a71cb6136115ca91999409d6498c9936.tar
nixlib-d22ba0a2a71cb6136115ca91999409d6498c9936.tar.gz
nixlib-d22ba0a2a71cb6136115ca91999409d6498c9936.tar.bz2
nixlib-d22ba0a2a71cb6136115ca91999409d6498c9936.tar.lz
nixlib-d22ba0a2a71cb6136115ca91999409d6498c9936.tar.xz
nixlib-d22ba0a2a71cb6136115ca91999409d6498c9936.tar.zst
nixlib-d22ba0a2a71cb6136115ca91999409d6498c9936.zip
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.
-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 ce0f3cc432c1..4e7c4d964af6 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 = ''