Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ghc 9.2.7, ghc 9.6.1 and replace old-ghc-nix with nixpkgs ghc #1854

Merged
merged 119 commits into from
Mar 16, 2023

Conversation

hamishmack
Copy link
Collaborator

@hamishmack hamishmack commented Feb 21, 2023

This PR started out adding GHC 9.6.1 (alpha). To make it now also switches the boot compilers from old-ghc-nix (which is unmaintained) to use the native compilers in nixpkgs. This means we can boot the haskell.nix versions of the compilers with more recent GHC versions. Hopefully this will allow us to stop maintaining support for old compilers (like 8.4.4 and 8.6.5). It should also reduce the depth of GHC recompilation that results from changes in haskell.nix.

Now 9.2.7 is available we are also adding that to this PR.

Once this is merged, let's merge

@hamishmack hamishmack changed the title ghc 9.6.1 ghc 9.2.7, ghc 9.6.1 (alpha) and replace old-ghc-nix with nixpkgs ghc Mar 3, 2023
@hamishmack hamishmack marked this pull request as ready for review March 15, 2023 10:48
@hamishmack hamishmack requested a review from angerman March 15, 2023 10:48
@dhess
Copy link
Contributor

dhess commented Mar 15, 2023

Hi, thanks for all your hard work on this. There's a fix here for evaluating this branch with the nixpkgs-unstable pin: #1878

@hamishmack hamishmack merged commit cfd757a into master Mar 16, 2023
@iohk-bors iohk-bors bot deleted the hkm/ghc961 branch March 16, 2023 03:51
@amesgen
Copy link
Member

amesgen commented Mar 16, 2023

Cross compilers (e.g. musl and mingw) are no longer be built after this change, probably due to the change in flake.nix:

diff --git a/flake.nix b/flake.nix
index 9b23b26f..f6df9ee8 100644
--- a/flake.nix
+++ b/flake.nix
@@ -68,7 +68,7 @@
   };
 
   outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-2105, nixpkgs-2111, nixpkgs-2205, nixpkgs-2211, flake-utils, tullia, ... }@inputs:
-    let compiler = "ghc926";
+    let compiler = "ghc927";
       config = import ./config.nix;
 
       traceNames = prefix: builtins.mapAttrs (n: v:
@@ -163,13 +163,13 @@
           ci = import ./ci.nix { inherit (self.internal) compat; inherit system; };
         in stripAttrsForHydra (filterDerivations ci);
 
-      ciJobs =
+      requiredJobs =
         let
           inherit (legacyPackages) lib;
           names = x: lib.filter (n: n != "recurseForDerivations" && n != "meta")
               (builtins.attrNames x);
-          requiredJobs =
-            builtins.listToAttrs (
+        in
+          builtins.listToAttrs (
               lib.concatMap (nixpkgsVer:
                 let nixpkgsJobs = allJobs.${nixpkgsVer};
                 in lib.concatMap (compiler-nix-name:
@@ -185,9 +185,8 @@
                    }) (names ghcJobs))
                 ) (names nixpkgsJobs)
               ) (names allJobs));
-        in lib.optionalAttrs (system == "x86_64-linux") {
-          latest = allJobs.unstable.ghc8107.native or {};
-        } // requiredJobs;
+
+      ciJobs = allJobs;
 
       hydraJobs = ciJobs;

Before this PR:

 $ nix eval --json .#hydraJobs --apply __attrNames
["latest","required-R2205-ghc8107-native","required-R2205-ghc865-native","required-R2211-ghc8107-native","required-R2211-ghc865-native","required-R2211-ghc902-native","required-R2211-ghc926-native","required-R2211-ghc944-native","required-unstable-ghc8107-aarch64-multiplatform","required-unstable-ghc8107-ghcjs","required-unstable-ghc8107-mingwW64","required-unstable-ghc8107-musl64","required-unstable-ghc8107-native","required-unstable-ghc865-ghcjs","required-unstable-ghc865-native","required-unstable-ghc884-ghcjs","required-unstable-ghc884-native","required-unstable-ghc902-aarch64-multiplatform","required-unstable-ghc902-mingwW64","required-unstable-ghc902-musl64","required-unstable-ghc902-native","required-unstable-ghc926-aarch64-multiplatform","required-unstable-ghc926-mingwW64","required-unstable-ghc926-musl64","required-unstable-ghc926-native","required-unstable-ghc944-mingwW64","required-unstable-ghc944-native"]

Note that this contains entries such as "required-unstable-ghc926-musl64".

After this PR:

 $ nix eval --json .#hydraJobs --apply __attrNames
["R2205","R2211","meta","unstable"]
~/git/iog/haskell.nix on  master
 $ nix eval --json .#hydraJobs.unstable --apply __attrNames
["ghc8107","ghc902","ghc927","ghc944","ghc96020230302","ghc961","meta","recurseForDerivations"]
~/git/iog/haskell.nix on  master
 $ nix eval --json .#hydraJobs.unstable.ghc927 --apply __attrNames
["meta","native","recurseForDerivations"]

Only "native" GHCs are built.

@angerman
Copy link
Collaborator

@amesgen thabks for the report. This PR ended up being way too large :-( we will focus on speeding up CI so that this kinda of PRs don't end up taking 1-2days per iteration :-/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants