summary refs log tree commit diff
path: root/maintainers
diff options
context:
space:
mode:
authorsternenseemann <sternenseemann@systemli.org>2023-01-25 16:47:46 +0100
committersternenseemann <sternenseemann@systemli.org>2023-02-13 14:42:03 +0100
commit3dfbe2b6a31b01f9bb4ab6e1a84c6ebf505dddfd (patch)
treee23673fb67b1f0ebd03c0ae47295883896a09aff /maintainers
parent994a371e430c7cd8c0a04e88cdc566afbdf87f36 (diff)
downloadnixpkgs-3dfbe2b6a31b01f9bb4ab6e1a84c6ebf505dddfd.tar
nixpkgs-3dfbe2b6a31b01f9bb4ab6e1a84c6ebf505dddfd.tar.gz
nixpkgs-3dfbe2b6a31b01f9bb4ab6e1a84c6ebf505dddfd.tar.bz2
nixpkgs-3dfbe2b6a31b01f9bb4ab6e1a84c6ebf505dddfd.tar.lz
nixpkgs-3dfbe2b6a31b01f9bb4ab6e1a84c6ebf505dddfd.tar.xz
nixpkgs-3dfbe2b6a31b01f9bb4ab6e1a84c6ebf505dddfd.tar.zst
nixpkgs-3dfbe2b6a31b01f9bb4ab6e1a84c6ebf505dddfd.zip
maintainers/haskell/test-configurations.nix: support ghcHEAD
Since we now have a versioned configuration-ghc-*.nix file for GHC HEAD,
we don't need to add a super special case to the package set logic in
test-configurations.nix anymore. We can just create a versioned
attribute for the ghcHEAD package set (which is not exposed) and keep
using the normal discovery logic.

The only tricky bit is that GHC HEAD's configuration file is named after
the GHC release that will be branched off from it, so a little bit of
arithmetic is involved.
Diffstat (limited to 'maintainers')
-rw-r--r--maintainers/scripts/haskell/test-configurations.nix26
1 files changed, 24 insertions, 2 deletions
diff --git a/maintainers/scripts/haskell/test-configurations.nix b/maintainers/scripts/haskell/test-configurations.nix
index 12287896b50..8473ed4db8a 100644
--- a/maintainers/scripts/haskell/test-configurations.nix
+++ b/maintainers/scripts/haskell/test-configurations.nix
@@ -66,6 +66,28 @@ let
     if !builtins.isList files then [ files ] else files
   );
 
+  packageSetsWithVersionedHead = pkgs.haskell.packages // (
+    let
+      headSet = pkgs.haskell.packages.ghcHEAD;
+      # Determine the next GHC release version following GHC HEAD.
+      # GHC HEAD always has an uneven, tentative version number, e.g. 9.7.
+      # GHC releases always have even numbers, i.e. GHC 9.8 is branched off from
+      # GHC HEAD 9.7. Since we use the to be release number for GHC HEAD's
+      # configuration file, we need to calculate this here.
+      headVersion = lib.pipe headSet.ghc.version [
+        lib.versions.splitVersion
+        (lib.take 2)
+        lib.concatStrings
+        lib.strings.toInt
+        (builtins.add 1)
+        toString
+      ];
+    in
+    {
+      "ghc${headVersion}" = headSet;
+    }
+  );
+
   setsForFile = fileName:
     let
       # extract the unique part of the config's file name
@@ -77,12 +99,12 @@ let
         builtins.match "ghc-([0-9]+).([0-9]+).x" configName
       );
       # return all package sets under haskell.packages matching the version components
-      setsForVersion =  builtins.map (name: pkgs.haskell.packages.${name}) (
+      setsForVersion =  builtins.map (name: packageSetsWithVersionedHead.${name}) (
         builtins.filter (setName:
           lib.hasPrefix "ghc${configVersion}" setName
           && (skipBinaryGHCs -> !(lib.hasInfix "Binary" setName))
         ) (
-          builtins.attrNames pkgs.haskell.packages
+          builtins.attrNames packageSetsWithVersionedHead
         )
       );