From 62bb19547e75720e786f623b2d21630998abf8e1 Mon Sep 17 00:00:00 2001 From: Mango The Fourth <40720523+MangoIV@users.noreply.github.com> Date: Wed, 12 Jun 2024 23:16:42 +0200 Subject: [PATCH 1/2] add the applicable new (version 9.10) GHC flags to normaliseGhcArgs (#10014) * add the applicable new (versions 9.2 - 9.10) GHC flags to normaliseGhcArgs Actionable flags are: - fdiagnostics-as-json (changes the format GHC outputs its diagnostics) - fprint-error-index-lists (changes the way GHC displays compile time) - fbreak-points (enables/disables break-points in GHCi) - dipe-stats (dumps information about which info tables have IPE information) - ffamily-application-cache (only changes the speed of the compiler) - fprint-redundant-promotion-ticks - show-error-context - unoptimized-core-for-interpreter (only applies to GHCi) * [chore] correct the flag names and add a FUTUREWORK (cherry picked from commit be10be836a80c1226926d9b53f6fc3e5d86e4af0) # Conflicts: # Cabal/src/Distribution/Simple/Program.hs --- Cabal/src/Distribution/Simple/Program.hs | 11 +++++++ Cabal/src/Distribution/Simple/Program/GHC.hs | 31 +++++++++++++++++--- changelog.d/pr-10014 | 11 +++++++ 3 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 changelog.d/pr-10014 diff --git a/Cabal/src/Distribution/Simple/Program.hs b/Cabal/src/Distribution/Simple/Program.hs index 4514bc0fd94..b13231d5719 100644 --- a/Cabal/src/Distribution/Simple/Program.hs +++ b/Cabal/src/Distribution/Simple/Program.hs @@ -1,3 +1,14 @@ +<<<<<<< HEAD +======= +{- FUTUREWORK: + - + - Currently the logic in this module is not tested. + - + - Ideally, a set of unit tests that check whether certain + - flags trigger recompilation should be added. + - -} +{-# LANGUAGE DataKinds #-} +>>>>>>> be10be836 (add the applicable new (version 9.10) GHC flags to normaliseGhcArgs (#10014)) {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} diff --git a/Cabal/src/Distribution/Simple/Program/GHC.hs b/Cabal/src/Distribution/Simple/Program/GHC.hs index 9fa70feb5a2..71a32c4f50c 100644 --- a/Cabal/src/Distribution/Simple/Program/GHC.hs +++ b/Cabal/src/Distribution/Simple/Program/GHC.hs @@ -1,5 +1,6 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE MultiWayIf #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -223,8 +224,27 @@ normaliseGhcArgs (Just ghcVersion) PackageDescription{..} ghcArgs , "keep-going" -- try harder, the build will still fail if it's erroneous , "print-axiom-incomps" -- print more debug info for closed type families ] + , from + [9, 2] + [ "family-application-cache" + ] + , from + [9, 6] + [ "print-redundant-promotion-ticks" + , "show-error-context" + ] + , from + [9, 8] + [ "unoptimized-core-for-interpreter" + ] + , from + [9, 10] + [ "diagnostics-as-json" + , "print-error-index-links" + , "break-points" + ] ] - , flagIn . invertibleFlagSet "-d" $ ["ppr-case-as-let", "ppr-ticks"] + , flagIn $ invertibleFlagSet "-d" ["ppr-case-as-let", "ppr-ticks"] , isOptIntFlag , isIntFlag , if safeToFilterWarnings @@ -285,6 +305,7 @@ normaliseGhcArgs (Just ghcVersion) PackageDescription{..} ghcArgs , from [8, 6] ["-dhex-word-literals"] , from [8, 8] ["-fshow-docs-of-hole-fits", "-fno-show-docs-of-hole-fits"] , from [9, 0] ["-dlinear-core-lint"] + , from [9, 10] ["-dipe-stats"] ] isOptIntFlag :: String -> Any @@ -694,7 +715,10 @@ renderGhcOptions comp _platform@(Platform _arch os) opts | flagProfAuto implInfo -> ["-fprof-auto-exported"] | otherwise -> ["-auto"] , ["-split-sections" | flagBool ghcOptSplitSections] - , ["-split-objs" | flagBool ghcOptSplitObjs] + , case compilerCompatVersion GHC comp of + -- the -split-objs flag was removed in GHC 9.8 + Just ver | ver >= mkVersion [9, 8] -> [] + _ -> ["-split-objs" | flagBool ghcOptSplitObjs] , case flagToMaybe (ghcOptHPCDir opts) of Nothing -> [] Just hpcdir -> ["-fhpc", "-hpcdir", hpcdir] @@ -784,8 +808,7 @@ renderGhcOptions comp _platform@(Platform _arch os) opts -- Packages concat - [ [ case () of - _ + [ [ if | unitIdSupported comp -> "-this-unit-id" | packageKeySupported comp -> "-this-package-key" | otherwise -> "-package-name" diff --git a/changelog.d/pr-10014 b/changelog.d/pr-10014 new file mode 100644 index 00000000000..541b4c72d18 --- /dev/null +++ b/changelog.d/pr-10014 @@ -0,0 +1,11 @@ +synopsis: Update ghc args normalization and ghc option rendering +packages: Cabal +issues: #9729 +prs: #10014 + +description: { + +The flags -fdiagnostics-as-json, -fprint-error-index-lists, -fbreak-points, -dipe-stats, -ffamily-application-cache, -fprint-redundant-promotion-ticks, -fshow-error-context and -funoptimized-core-for-interpreter have been added to the flags that do not cause recompilation. + +--{enable,disable}-split-objs is not shown on in the helper for GHC >= 9.8 +} From ced2eb9578cf731bb767b88b52a304da43ea6a44 Mon Sep 17 00:00:00 2001 From: brandon s allbery kf8nh Date: Wed, 12 Jun 2024 17:27:02 -0400 Subject: [PATCH 2/2] fixup! add the applicable new (version 9.10) GHC flags to normaliseGhcArgs (#10014) --- Cabal/src/Distribution/Simple/Program.hs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/Cabal/src/Distribution/Simple/Program.hs b/Cabal/src/Distribution/Simple/Program.hs index b13231d5719..4514bc0fd94 100644 --- a/Cabal/src/Distribution/Simple/Program.hs +++ b/Cabal/src/Distribution/Simple/Program.hs @@ -1,14 +1,3 @@ -<<<<<<< HEAD -======= -{- FUTUREWORK: - - - - Currently the logic in this module is not tested. - - - - Ideally, a set of unit tests that check whether certain - - flags trigger recompilation should be added. - - -} -{-# LANGUAGE DataKinds #-} ->>>>>>> be10be836 (add the applicable new (version 9.10) GHC flags to normaliseGhcArgs (#10014)) {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-}