unsplash / intlc

Compile ICU messages into code. Supports TypeScript and JSX. No runtime.
MIT License
56 stars 2 forks source link

GHC 9.4 #201

Closed samhh closed 11 months ago

samhh commented 11 months ago

Edit: As below this PR not only bumps GHC but also resolves HLS for Apple Silicon users, meaning all contributors can now source all dependencies straight from Nix! :tada:

Notes for reviewers (given divergent OS/arch):

  1. Ensure that none of the dependencies need to build. They should download and just work via the binary cache.
  2. Double check that HLS still doesn't work on macOS AArch64 *.
  3. Assuming HLS doesn't work, ensure that you can source GHC 9.4.6 and HLS from ghcup. From a quick look I think it should be available. HLS can now be sourced from Nix for all contributors! :tada:

* Try this patch and see if it yells at you (it'd fail on master, and GitHub has no ARM runners for us to nix flake check against):

diff --git a/flake.nix b/flake.nix
index 9f53c66..18d0f4d 100644
--- a/flake.nix
+++ b/flake.nix
@@ -44,9 +44,7 @@
           ghcVer = "ghc946";
           haskPkgs = pkgs.haskell.packages."${ghcVer}";

-          hask = if system == flake-utils.lib.system.aarch64-darwin
-            then [ ]
-            else [
+          hask = [
               pkgs.haskell.compiler."${ghcVer}"
               haskPkgs.haskell-language-server
             ];
astlouisf commented 11 months ago

Is there a more systematic way of ensuring that nothing build than monitoring the output of nix develop? Unless I missed it, everything was fetching * from https://cache.nixos.org.

The patch doesn't have nix screaming at me and hls seems to have been fetched just fine:

% nix flake check
warning: Git tree '/Users/astlouisf/un/intlc' is dirty
astlouisf@lithium intlc % echo $?
0
% nix develop
warning: Git tree '/Users/astlouisf/un/intlc' is dirty
$ which haskell-language-server-9.4.6
/nix/store/zc2hsxns5jz3jha9j5v3lp69l07mraix-haskell-language-server-2.0.0.1/bin/haskell-language-server-9.4.6

ghcup has no knowledge of ghc-9.4.6

$ ghcup list -c installed 2>/dev/null
   Tool  Version  Tags               Notes
✔✔ ghc   9.2.5    base-4.16.4.0      hls-powered
✓  ghc   9.4.4    base-4.17.0.0      hls-powered
✓  cabal 3.6.2.0  recommended
✔✔ cabal 3.8.1.0
✓  hls   1.9.0.0
✔✔ hls   1.9.1.0
✓  stack 2.9.1
✔✔ stack 2.9.3    recommended
✔✔ ghcup 0.1.19.4 latest,recommended

and yet cabal build used ghc-9.4.6

...
Building library for intlc-0.8.1..
[ 1 of 18] Compiling Intlc.Error      ( lib/Intlc/Error.hs, /Users/astlouisf/un/intlc/dist-newstyle/build/aarch64-osx/ghc-9.4.6/intlc-0.8.1/build/Intlc/Error.o, /Users/astlouisf/un/intlc/dist-newstyle/build/aarch64-osx/ghc-9.4.6/intlc-0.8.1/build/Intlc/Error.dyn_o )
[ 2 of 18] Compiling Intlc.ICU        ( lib/Intlc/ICU.hs, /Users/astlouisf/un/intlc/dist-newstyle/build/aarch64-osx/ghc-9.4.6/intlc-0.8.1/build/Intlc/ICU.o, /Users/astlouisf/un/intlc/dist-newstyle/build/aarch64-osx/ghc-9.4.6/intlc-0.8.1/build/Intlc/ICU.dyn_o )
[
...

so I assume it used the nix provided compiler

I still need to confirm that hls is actually working. But it seems to be looking good so far 🤔

astlouisf commented 11 months ago

I got hls working with VS Code by configuring the Haskell plugin "haskell.manageHLS": "PATH"

samhh commented 11 months ago

Is there a more systematic way of ensuring that nothing build than monitoring the output of nix develop? Unless I missed it, everything was fetching * from https://cache.nixos.org.

That's a good question, I've never checked. It was obvious for GHC/HLS though as it takes ages to build :stuck_out_tongue: