@@ -24,7 +24,8 @@ import System.FilePath
2424data Opsys
2525 = Linux Distro
2626 | Darwin
27- | Windows deriving (Eq )
27+ | Windows
28+ deriving (Show , Eq )
2829
2930osName :: Opsys -> String
3031osName Darwin = " mac"
@@ -36,16 +37,16 @@ data Distro
3637 | Debian11
3738 | Debian12
3839 | Debian13
39- | Ubuntu1804
4040 | Ubuntu2004
4141 | Ubuntu2204
42- | Mint193
42+ | Ubuntu2404
4343 | Mint202
4444 | Mint213
45+ | Mint222
4546 | Fedora33
4647 | Fedora40
4748 | Rocky8
48- deriving (Eq , Enum , Bounded )
49+ deriving (Show , Eq , Enum , Bounded )
4950
5051allDistros :: [Distro ]
5152allDistros = [minBound .. maxBound ]
@@ -66,13 +67,15 @@ data GHC
6667 | GHC984
6768 | GHC9103
6869 | GHC9122
69- deriving (Eq , Enum , Bounded )
70+ | GHC9141
71+ deriving (Show , Eq , Ord , Enum , Bounded )
7072
7173ghcVersion :: GHC -> String
7274ghcVersion GHC967 = " 9.6.7"
7375ghcVersion GHC984 = " 9.8.4"
7476ghcVersion GHC9103 = " 9.10.3"
7577ghcVersion GHC9122 = " 9.12.2"
78+ ghcVersion GHC9141 = " 9.14.1"
7679
7780ghcVersionIdent :: GHC -> String
7881ghcVersionIdent = filter (/= ' .' ) . ghcVersion
@@ -81,6 +84,7 @@ allGHCs :: [GHC]
8184allGHCs = [minBound .. maxBound ]
8285
8386data Stage = Build GHC | Bindist | Test
87+ deriving (Show , Eq )
8488
8589-------------------------------------------------------------------------------
8690-- Distro Configuration
@@ -91,12 +95,12 @@ distroImage Debian10 = "debian:10"
9195distroImage Debian11 = " debian:11"
9296distroImage Debian12 = " debian:12"
9397distroImage Debian13 = " debian:13"
94- distroImage Ubuntu1804 = " ubuntu:18.04"
9598distroImage Ubuntu2004 = " ubuntu:20.04"
9699distroImage Ubuntu2204 = " ubuntu:22.04"
97- distroImage Mint193 = " linuxmintd/mint19.3-amd64 "
100+ distroImage Ubuntu2404 = " ubuntu:24.04 "
98101distroImage Mint202 = " linuxmintd/mint20.2-amd64"
99102distroImage Mint213 = " linuxmintd/mint21.3-amd64"
103+ distroImage Mint222 = " linuxmintd/mint22.2-amd64"
100104distroImage Fedora33 = " fedora:33"
101105distroImage Fedora40 = " fedora:40"
102106distroImage Rocky8 = " rockylinux:8"
@@ -106,12 +110,12 @@ distroName Debian10 = "deb10"
106110distroName Debian11 = " deb11"
107111distroName Debian12 = " deb12"
108112distroName Debian13 = " deb13"
109- distroName Ubuntu1804 = " ubuntu1804"
110113distroName Ubuntu2004 = " ubuntu2004"
111114distroName Ubuntu2204 = " ubuntu2204"
112- distroName Mint193 = " mint193 "
115+ distroName Ubuntu2404 = " ubuntu2404 "
113116distroName Mint202 = " mint202"
114117distroName Mint213 = " mint213"
118+ distroName Mint222 = " mint222"
115119distroName Fedora33 = " fedora33"
116120distroName Fedora40 = " fedora40"
117121distroName Rocky8 = " unknown"
@@ -121,12 +125,12 @@ distroInstall Debian10 = "sed -i s/deb.debian.org/archive.debian.org/g /etc/apt/
121125distroInstall Debian11 = " apt-get update && apt-get install -y"
122126distroInstall Debian12 = " apt-get update && apt-get install -y"
123127distroInstall Debian13 = " apt-get update && apt-get install -y"
124- distroInstall Ubuntu1804 = " apt-get update && apt-get install -y"
125128distroInstall Ubuntu2004 = " apt-get update && apt-get install -y"
126129distroInstall Ubuntu2204 = " apt-get update && apt-get install -y"
127- distroInstall Mint193 = " apt-get update && apt-get install -y"
130+ distroInstall Ubuntu2404 = " apt-get update && apt-get install -y"
128131distroInstall Mint202 = " apt-get update && apt-get install -y"
129132distroInstall Mint213 = " apt-get update && apt-get install -y"
133+ distroInstall Mint222 = " apt-get update && apt-get install -y"
130134distroInstall Fedora33 = " dnf install -y"
131135distroInstall Fedora40 = " dnf install -y"
132136distroInstall Rocky8 = " yum -y install epel-release && yum install -y --allowerasing"
@@ -136,12 +140,12 @@ distroTools Debian10 = "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev
136140distroTools Debian11 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
137141distroTools Debian12 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
138142distroTools Debian13 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev patchelf"
139- distroTools Ubuntu1804 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
140143distroTools Ubuntu2004 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
141144distroTools Ubuntu2204 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
142- distroTools Mint193 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
145+ distroTools Ubuntu2404 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev patchelf curl "
143146distroTools Mint202 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
144147distroTools Mint213 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
148+ distroTools Mint222 = " libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev patchelf curl"
145149distroTools Fedora33 = " autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf"
146150distroTools Fedora40 = " autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf"
147151distroTools Rocky8 = " autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf"
@@ -185,8 +189,8 @@ envVars arch os = object $
185189-- | Runner selection
186190runner :: Arch -> Opsys -> [Value ]
187191runner Amd64 (Linux _) = [" ubuntu-latest" ]
188- runner AArch64 (Linux _) = [" self-hosted " , " Linux " , " ARM64 " , " maerwald " ]
189- runner Amd64 Darwin = [" macOS-13 " ]
192+ runner AArch64 (Linux _) = [" ubuntu-22.04-arm " ]
193+ runner Amd64 Darwin = [" macOS-15 " ]
190194runner AArch64 Darwin = [" self-hosted" , " macOS" , " ARM64" ]
191195runner Amd64 Windows = [" windows-latest" ]
192196runner AArch64 Windows = error " aarch64 windows not supported"
@@ -195,7 +199,7 @@ runner AArch64 Windows = error "aarch64 windows not supported"
195199bindistRunner :: Arch -> Opsys -> [Value ]
196200bindistRunner Amd64 (Linux _) = [" self-hosted" , " linux-space" , " maerwald" ]
197201bindistRunner AArch64 (Linux _) = [" self-hosted" , " Linux" , " ARM64" , " maerwald" ]
198- bindistRunner Amd64 Darwin = [" macOS-13 " ]
202+ bindistRunner Amd64 Darwin = [" macOS-15 " ]
199203bindistRunner AArch64 Darwin = [" self-hosted" , " macOS" , " ARM64" ]
200204bindistRunner Amd64 Windows = [" windows-latest" ]
201205bindistRunner AArch64 Windows = error " aarch64 windows not supported"
@@ -392,15 +396,15 @@ buildJob arch os v =
392396 | Windows <- os = " ./out/*"
393397 | otherwise = (" out-" ++ art++ " -" ++ ghcVersion v++ " .tar" )
394398 buildStep Amd64 (Linux d) = [customAction d (Build v)]
395- buildStep AArch64 (Linux Ubuntu2004 ) =
399+ buildStep AArch64 (Linux Ubuntu2204 ) =
396400 [ ghAction " Build aarch64-linux binaries" " docker://hasufell/arm64v8-ubuntu-haskell:focal"
397401 [ " args" .= str " bash .github/scripts/build.sh" ]
398402 [ " GHC_VERSION" .= ghcVersion v ]
399403 , ghAction " Tar aarch64-linux binaries" " docker://hasufell/arm64v8-ubuntu-haskell:focal"
400404 [ " args" .= str " bash .github/scripts/tar.sh" ]
401405 [ " GHC_VERSION" .= ghcVersion v ]
402406 ]
403- buildStep AArch64 (Linux _ ) = error " aarch64-linux non-ubuntu not supported"
407+ buildStep AArch64 (Linux d ) = error $ " aarch64-linux non-ubuntu " ++ show d ++ " not supported"
404408
405409 buildStep Amd64 Darwin = [ghRun " Run build" " sh" [" GHC_VERSION" .= ghcVersion v] $ unlines $
406410 [ " brew install coreutils tree"
@@ -447,7 +451,7 @@ mkBindistJob arch os vs =
447451 | otherwise = " ./"
448452
449453 bindistStep Amd64 (Linux d) = [customAction d Bindist ]
450- bindistStep AArch64 (Linux Ubuntu2004 ) =
454+ bindistStep AArch64 (Linux Ubuntu2204 ) =
451455 [ ghAction " Unpack aarch64-linux binaries" " docker://hasufell/arm64v8-ubuntu-haskell:focal"
452456 [ " args" .= str " bash .github/scripts/untar.sh" ]
453457 [ ]
@@ -510,7 +514,7 @@ mkTestJob arch os =
510514 where thisEnv = envVars arch os
511515
512516 testStep Amd64 (Linux d) = [customAction d Test ]
513- testStep AArch64 (Linux Ubuntu2004 ) =
517+ testStep AArch64 (Linux Ubuntu2204 ) =
514518 [ ghAction " Run test" " docker://hasufell/arm64v8-ubuntu-haskell:focal"
515519 [ " args" .= str " bash .github/scripts/test.sh" ]
516520 [ ]
@@ -555,7 +559,7 @@ ciConfigs =
555559 [ MkConfig Amd64 Darwin allGHCs
556560 , MkConfig AArch64 Darwin allGHCs
557561 , MkConfig Amd64 Windows allGHCs
558- , MkConfig AArch64 (Linux Ubuntu2004 ) allGHCs]
562+ , MkConfig AArch64 (Linux Ubuntu2204 ) allGHCs]
559563 ++ [ MkConfig Amd64 (Linux distro) allGHCs | distro <- allDistros ]
560564
561565main :: IO ()
@@ -607,12 +611,12 @@ checkoutAction :: Value
607611checkoutAction = ghAction " Checkout" " actions/checkout@v4" [] []
608612
609613uploadArtifacts :: String -> String -> Value
610- uploadArtifacts name path = ghAction " Upload artifact" " actions/upload-artifact@v4 "
614+ uploadArtifacts name path = ghAction " Upload artifact" " actions/upload-artifact@v5 "
611615 [ " if-no-files-found" .= str " error"
612616 , " retention-days" .= (2 :: Int )
613617 , " name" .= name
614618 , " path" .= path
615619 ] []
616620
617621downloadArtifacts :: String -> String -> Value
618- downloadArtifacts name path = ghAction " Download artifacts" " actions/download-artifact@v4 " [ " name" .= name, " path" .= path ] []
622+ downloadArtifacts name path = ghAction " Download artifacts" " actions/download-artifact@v6 " [ " name" .= name, " path" .= path ] []
0 commit comments