This patch allows bootstrapping GHC 9.8.2 with itself. The patch includes a fix for a bug in Hadrian as well as as a few additional changes to version constraints in Cabal files. Specifically, it is a (partial) backport of the following commits: * https://gitlab.haskell.org/ghc/ghc/-/commit/ef3d20f83499cf129b1cacac07906b8d6188fc17 * https://gitlab.haskell.org/ghc/ghc/-/commit/fa97703474602a079f63e3be4bd48695de33a60d * https://gitlab.haskell.org/ghc/ghc/-/commit/471b267294bc5f17e4864ce9bb2f221c4d47eac8 I have high hopes that this will be fixed in the 9.8.3 upstream release. See also: https://gitlab.haskell.org/ghc/ghc/-/issues/24605 diff --git a/hadrian/src/Settings/Packages.hs b/hadrian/src/Settings/Packages.hs index 9840ae9db2..ab1cd8021b 100644 --- a/hadrian/src/Settings/Packages.hs +++ b/hadrian/src/Settings/Packages.hs @@ -6,6 +6,7 @@ import Oracles.Setting import Oracles.Flag import Packages import Settings +import Data.Version.Extra -- | Package-specific command-line arguments. packageArgs :: Args @@ -29,6 +30,7 @@ packageArgs = do cursesLibraryDir <- getSetting CursesLibDir ffiIncludeDir <- getSetting FfiIncludeDir ffiLibraryDir <- getSetting FfiLibDir + stageVersion <- readVersion <$> (expr $ ghcVersionStage stage) mconcat --------------------------------- base --------------------------------- @@ -79,7 +81,7 @@ packageArgs = do -- not being fixed to `ghc`, when building stage0, we must set -- -this-unit-id to `ghc` because the boot compiler expects that. -- We do it through a cabal flag in ghc.cabal - , stage0 ? arg "+hadrian-stage0" + , stageVersion < makeVersion [9,8,1] ? arg "+hadrian-stage0" , flag StaticLibzstd `cabalFlag` "static-libzstd" ] diff --git a/linters/lint-whitespace/lint-whitespace.cabal b/linters/lint-whitespace/lint-whitespace.cabal index 61e376d1f9..e4fab0631e 100644 --- a/linters/lint-whitespace/lint-whitespace.cabal +++ b/linters/lint-whitespace/lint-whitespace.cabal @@ -28,4 +28,4 @@ executable lint-whitespace base >= 4.14 && < 5, text - >= 1.2 && < 2.1, + >= 1.2 && < 3, diff --git a/linters/linters-common/linters-common.cabal b/linters/linters-common/linters-common.cabal index 02245750dd..eea509a207 100644 --- a/linters/linters-common/linters-common.cabal +++ b/linters/linters-common/linters-common.cabal @@ -16,7 +16,7 @@ library base >= 4.14 && < 5, text - >= 1.2 && < 2.1, + >= 1.2 && < 3, deepseq >= 1.1, diff --git a/hadrian/hadrian.cabal b/hadrian/hadrian.cabal --- ghc-9.8.2.orig/hadrian/hadrian.cabal 2024-03-15 22:58:30.689145289 +0000 +++ ghc-9.8.2/hadrian/hadrian.cabal 2024-03-15 22:59:33.660843297 +0000 @@ -151,7 +151,7 @@ executable hadrian , TypeOperators other-extensions: MultiParamTypeClasses , TypeFamilies - build-depends: Cabal >= 3.2 && < 3.9 + build-depends: Cabal >= 3.2 && < 3.11 , base >= 4.11 && < 5 , bytestring >= 0.10 && < 0.13 , containers >= 0.5 && < 0.7 diff --git a/linters/lint-submodule-refs/lint-submodule-refs.cabal b/linters/lint-submodule-refs/lint-submodule-refs.cabal --- ghc-9.8.2.orig/linters/lint-submodule-refs/lint-submodule-refs.cabal 2024-03-16 08:15:17.641021635 +0000 +++ ghc-9.8.2/linters/lint-submodule-refs/lint-submodule-refs.cabal 2024-03-16 08:15:32.758094822 +0000 @@ -15,7 +15,7 @@ executable lint-submodule-refs base >= 4.14 && < 5, text - >= 1.2 && < 2.1, + >= 1.2 && < 2.2, linters-common ghc-options: diff --git a/linters/lint-commit-msg/lint-commit-msg.cabal b/linters/lint-commit-msg/lint-commit-msg.cabal --- ghc-9.8.2.orig/linters/lint-commit-msg/lint-commit-msg.cabal 2024-03-16 08:15:17.641021635 +0000 +++ ghc-9.8.2/linters/lint-commit-msg/lint-commit-msg.cabal 2024-03-16 08:15:41.945008537 +0000 @@ -26,4 +26,4 @@ executable lint-commit-msg base >= 4.14 && < 5, text - >= 1.2 && < 2.1 + >= 1.2 && < 2.2