diff --git a/Cabal/src/Distribution/Utils/LogProgress.hs b/Cabal/src/Distribution/Utils/LogProgress.hs index b8484eecc14..ff90d47983c 100644 --- a/Cabal/src/Distribution/Utils/LogProgress.hs +++ b/Cabal/src/Distribution/Utils/LogProgress.hs @@ -16,6 +16,7 @@ import Prelude () import Distribution.Simple.Utils import Distribution.Utils.Progress import Distribution.Verbosity +import GHC.Stack (HasCallStack, callStack, prettyCallStack) import System.IO (hPutStrLn) import Text.PrettyPrint @@ -76,10 +77,14 @@ infoProgress s = LogProgress $ \env -> stepProgress s -- | Fail the computation with an error message. -dieProgress :: Doc -> LogProgress a +dieProgress :: HasCallStack => Doc -> LogProgress a dieProgress s = LogProgress $ \env -> failProgress $ - hang (text "Error:") 4 (formatMsg (le_context env) s) + hang (text "Error:") 4 $ + vcat + [ formatMsg (le_context env) s + , vcat (map text (lines (prettyCallStack callStack))) + ] -- | Format a message with context. (Something simple for now.) formatMsg :: [CtxMsg] -> Doc -> Doc diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning.hs b/cabal-install/src/Distribution/Client/ProjectPlanning.hs index f6d97a8f8fa..3a32814e8b3 100644 --- a/cabal-install/src/Distribution/Client/ProjectPlanning.hs +++ b/cabal-install/src/Distribution/Client/ProjectPlanning.hs @@ -232,6 +232,7 @@ import qualified Data.Map as Map import qualified Data.Set as Set import Distribution.Client.Errors import Distribution.Solver.Types.ProjectConfigPath +import GHC.Stack (HasCallStack) import System.Directory (getCurrentDirectory) import System.FilePath import qualified Text.PrettyPrint as Disp @@ -352,7 +353,8 @@ sanityCheckElaboratedPackage -- | Return the up-to-date project config and information about the local -- packages within the project. rebuildProjectConfig - :: Verbosity + :: HasCallStack + => Verbosity -> HttpTransport -> DistDirLayout -> ProjectConfig @@ -633,7 +635,8 @@ See #9840 for more information about the problems surrounding the lossy -- dependencies of executables and setup scripts. -- rebuildInstallPlan - :: Verbosity + :: HasCallStack + => Verbosity -> DistDirLayout -> CabalDirLayout -> ProjectConfig @@ -874,7 +877,8 @@ rebuildInstallPlan -- version of the plan has the final nix-style hashed ids. -- phaseElaboratePlan - :: ProjectConfig + :: HasCallStack + => ProjectConfig -> (Compiler, Platform, ProgramDb) -> Maybe PkgConfigDb -> SolverInstallPlan @@ -1629,7 +1633,8 @@ planPackages -- In theory should be able to make an elaborated install plan with a policy -- matching that of the classic @cabal install --user@ or @--global@ elaborateInstallPlan - :: Verbosity + :: HasCallStack + => Verbosity -> Platform -> Compiler -> ProgramDb @@ -1688,8 +1693,7 @@ elaborateInstallPlan ) f _ = Nothing - elaboratedInstallPlan - :: LogProgress (InstallPlan.GenericInstallPlan IPI.InstalledPackageInfo ElaboratedConfiguredPackage) + elaboratedInstallPlan :: HasCallStack => LogProgress ElaboratedInstallPlan elaboratedInstallPlan = flip InstallPlan.fromSolverInstallPlanWithProgress solverPlan $ \mapDep planpkg -> case planpkg of diff --git a/cabal-testsuite/PackageTests/Backpack/Fail1/setup.cabal.out b/cabal-testsuite/PackageTests/Backpack/Fail1/setup.cabal.out index 7c4901d3bea..0c1c239a88c 100644 --- a/cabal-testsuite/PackageTests/Backpack/Fail1/setup.cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/Fail1/setup.cabal.out @@ -5,3 +5,5 @@ Error: MissingReq In mixins: Fail1:sig requires (MissingReq as A) In the stanza library + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/Backpack/Fail1/setup.out b/cabal-testsuite/PackageTests/Backpack/Fail1/setup.out index 7c4901d3bea..e0208376508 100644 --- a/cabal-testsuite/PackageTests/Backpack/Fail1/setup.out +++ b/cabal-testsuite/PackageTests/Backpack/Fail1/setup.out @@ -5,3 +5,5 @@ Error: MissingReq In mixins: Fail1:sig requires (MissingReq as A) In the stanza library + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/Backpack/Fail2/setup.cabal.out b/cabal-testsuite/PackageTests/Backpack/Fail2/setup.cabal.out index e865213bc56..96fc63ec0d4 100644 --- a/cabal-testsuite/PackageTests/Backpack/Fail2/setup.cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/Fail2/setup.cabal.out @@ -3,3 +3,5 @@ Configuring Fail2-0.1.0.0... Error: Mix-in refers to non-existent library 'non-existent' (did you forget to add the package to build-depends?) + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/ConfiguredComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.ConfiguredComponent diff --git a/cabal-testsuite/PackageTests/Backpack/Fail2/setup.out b/cabal-testsuite/PackageTests/Backpack/Fail2/setup.out index e865213bc56..b2d0eb2dd97 100644 --- a/cabal-testsuite/PackageTests/Backpack/Fail2/setup.out +++ b/cabal-testsuite/PackageTests/Backpack/Fail2/setup.out @@ -3,3 +3,5 @@ Configuring Fail2-0.1.0.0... Error: Mix-in refers to non-existent library 'non-existent' (did you forget to add the package to build-depends?) + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/ConfiguredComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.ConfiguredComponent diff --git a/cabal-testsuite/PackageTests/Backpack/Fail3/setup.cabal.out b/cabal-testsuite/PackageTests/Backpack/Fail3/setup.cabal.out index cdf8656f78f..0f222d9dbd9 100644 --- a/cabal-testsuite/PackageTests/Backpack/Fail3/setup.cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/Fail3/setup.cabal.out @@ -4,3 +4,5 @@ Error: Non-library component has unfilled requirements: UnfilledSig brought into scope by build-depends: Fail1 In the stanza executable foo + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/Backpack/Fail3/setup.out b/cabal-testsuite/PackageTests/Backpack/Fail3/setup.out index cdf8656f78f..61f9d54b319 100644 --- a/cabal-testsuite/PackageTests/Backpack/Fail3/setup.out +++ b/cabal-testsuite/PackageTests/Backpack/Fail3/setup.out @@ -4,3 +4,5 @@ Error: Non-library component has unfilled requirements: UnfilledSig brought into scope by build-depends: Fail1 In the stanza executable foo + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/setup-internal-fail.cabal.out b/cabal-testsuite/PackageTests/Backpack/Includes2/setup-internal-fail.cabal.out index e16f8623d52..fe2575ed881 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes2/setup-internal-fail.cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes2/setup-internal-fail.cabal.out @@ -13,3 +13,5 @@ Error: brought into scope by mixins: fail:postgresql (Database.PostgreSQL as Database) While filling requirements of build-depends: fail:mylib In the stanza library + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/setup-internal-fail.out b/cabal-testsuite/PackageTests/Backpack/Includes2/setup-internal-fail.out index e16f8623d52..c543464a616 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes2/setup-internal-fail.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes2/setup-internal-fail.out @@ -13,3 +13,5 @@ Error: brought into scope by mixins: fail:postgresql (Database.PostgreSQL as Database) While filling requirements of build-depends: fail:mylib In the stanza library + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/Backpack/Reexport2/cabal.out b/cabal-testsuite/PackageTests/Backpack/Reexport2/cabal.out index 31c9428dcaf..feda7699ab6 100644 --- a/cabal-testsuite/PackageTests/Backpack/Reexport2/cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/Reexport2/cabal.out @@ -8,3 +8,5 @@ Error: nor any of its 'build-depends' dependencies. In the stanza 'library' In the inplace package 'Reexport2-1.0' + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/Backpack/T4447/setup.cabal.out b/cabal-testsuite/PackageTests/Backpack/T4447/setup.cabal.out index ff9ad4456e6..3590040a9f0 100644 --- a/cabal-testsuite/PackageTests/Backpack/T4447/setup.cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/T4447/setup.cabal.out @@ -7,3 +7,5 @@ Error: Try moving this module to a separate library, e.g., create a new stanza: library 'sublib'. In the stanza executable foo-exe + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/Backpack/T4447/setup.out b/cabal-testsuite/PackageTests/Backpack/T4447/setup.out index ff9ad4456e6..c12fc288a8a 100644 --- a/cabal-testsuite/PackageTests/Backpack/T4447/setup.out +++ b/cabal-testsuite/PackageTests/Backpack/T4447/setup.out @@ -7,3 +7,5 @@ Error: Try moving this module to a separate library, e.g., create a new stanza: library 'sublib'. In the stanza executable foo-exe + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/Backpack/T8582/setup.cabal.out b/cabal-testsuite/PackageTests/Backpack/T8582/setup.cabal.out index 577cf201e39..2501933c6af 100644 --- a/cabal-testsuite/PackageTests/Backpack/T8582/setup.cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/T8582/setup.cabal.out @@ -4,4 +4,6 @@ Error: Cannot instantiate requirement 'ImplA' Ensure "build-depends:" doesn't include any library with signatures: 'A' as this creates a cyclic dependency, which GHC does not support. - In the stanza executable exe \ No newline at end of file + In the stanza executable exe + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/Backpack/T8582/setup.out b/cabal-testsuite/PackageTests/Backpack/T8582/setup.out index 577cf201e39..982671d3f36 100644 --- a/cabal-testsuite/PackageTests/Backpack/T8582/setup.out +++ b/cabal-testsuite/PackageTests/Backpack/T8582/setup.out @@ -4,4 +4,6 @@ Error: Cannot instantiate requirement 'ImplA' Ensure "build-depends:" doesn't include any library with signatures: 'A' as this creates a cyclic dependency, which GHC does not support. - In the stanza executable exe \ No newline at end of file + In the stanza executable exe + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/BuildDeps/DepCycle/cabal.out b/cabal-testsuite/PackageTests/BuildDeps/DepCycle/cabal.out index 966c934480b..44625541255 100644 --- a/cabal-testsuite/PackageTests/BuildDeps/DepCycle/cabal.out +++ b/cabal-testsuite/PackageTests/BuildDeps/DepCycle/cabal.out @@ -5,3 +5,8 @@ Error: library bar library foo In the inplace package 'DepCycle-1.0' + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Client/ProjectPlanning.hs:_:_ in cabal-install-3.17.0.0-inplace:Distribution.Client.ProjectPlanning + elaborateInstallPlan, called at src/Distribution/Client/ProjectPlanning.hs:_:_ in cabal-install-3.17.0.0-inplace:Distribution.Client.ProjectPlanning + phaseElaboratePlan, called at src/Distribution/Client/ProjectPlanning.hs:_:_ in cabal-install-3.17.0.0-inplace:Distribution.Client.ProjectPlanning + rebuildInstallPlan, called at src/Distribution/Client/ProjectOrchestration.hs:_:_ in cabal-install-3.17.0.0-inplace:Distribution.Client.ProjectOrchestration diff --git a/cabal-testsuite/PackageTests/BuildDeps/DepCycle/setup.cabal.out b/cabal-testsuite/PackageTests/BuildDeps/DepCycle/setup.cabal.out index 16840243da9..114a7e6fe77 100644 --- a/cabal-testsuite/PackageTests/BuildDeps/DepCycle/setup.cabal.out +++ b/cabal-testsuite/PackageTests/BuildDeps/DepCycle/setup.cabal.out @@ -3,3 +3,5 @@ Configuring DepCycle-1.0... Error: Components in the package DepCycle-1.0 depend on each other in a cyclic way: 'library 'bar'' depends on 'library 'foo'' depends on 'library 'bar'' + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/Configure.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.Configure diff --git a/cabal-testsuite/PackageTests/BuildDeps/DepCycle/setup.out b/cabal-testsuite/PackageTests/BuildDeps/DepCycle/setup.out index 16840243da9..114a7e6fe77 100644 --- a/cabal-testsuite/PackageTests/BuildDeps/DepCycle/setup.out +++ b/cabal-testsuite/PackageTests/BuildDeps/DepCycle/setup.out @@ -3,3 +3,5 @@ Configuring DepCycle-1.0... Error: Components in the package DepCycle-1.0 depend on each other in a cyclic way: 'library 'bar'' depends on 'library 'foo'' depends on 'library 'bar'' + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/Configure.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.Configure diff --git a/cabal-testsuite/PackageTests/InternalLibraries/cabal-per-package.out b/cabal-testsuite/PackageTests/InternalLibraries/cabal-per-package.out index 72a24d04059..0fa07259c25 100644 --- a/cabal-testsuite/PackageTests/InternalLibraries/cabal-per-package.out +++ b/cabal-testsuite/PackageTests/InternalLibraries/cabal-per-package.out @@ -4,3 +4,8 @@ Error: Internal libraries only supported with per-component builds. Per-component builds were disabled because you passed --disable-per-component In the inplace package 'p-0.1.0.0' + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Client/ProjectPlanning.hs:_:_ in cabal-install-3.17.0.0-inplace:Distribution.Client.ProjectPlanning + elaborateInstallPlan, called at src/Distribution/Client/ProjectPlanning.hs:_:_ in cabal-install-3.17.0.0-inplace:Distribution.Client.ProjectPlanning + phaseElaboratePlan, called at src/Distribution/Client/ProjectPlanning.hs:_:_ in cabal-install-3.17.0.0-inplace:Distribution.Client.ProjectPlanning + rebuildInstallPlan, called at src/Distribution/Client/ProjectOrchestration.hs:_:_ in cabal-install-3.17.0.0-inplace:Distribution.Client.ProjectOrchestration diff --git a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-ambiguous.cabal.out b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-ambiguous.cabal.out index a2ed311a502..a09d0b78b26 100644 --- a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-ambiguous.cabal.out +++ b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-ambiguous.cabal.out @@ -21,3 +21,5 @@ Error: re-export with a package name. The syntax is 'packagename:ModuleName [as NewName]'. In the stanza library + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-ambiguous.out b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-ambiguous.out index a2ed311a502..d8d4f3522be 100644 --- a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-ambiguous.out +++ b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-ambiguous.out @@ -21,3 +21,5 @@ Error: re-export with a package name. The syntax is 'packagename:ModuleName [as NewName]'. In the stanza library + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-missing.cabal.out b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-missing.cabal.out index 9283ea2ea31..cf9670d7dd7 100644 --- a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-missing.cabal.out +++ b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-missing.cabal.out @@ -7,3 +7,5 @@ Error: It occurs in neither the 'exposed-modules' of this package, nor any of its 'build-depends' dependencies. In the stanza library + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-missing.out b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-missing.out index 9283ea2ea31..081035a8796 100644 --- a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-missing.out +++ b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-missing.out @@ -7,3 +7,5 @@ Error: It occurs in neither the 'exposed-modules' of this package, nor any of its 'build-depends' dependencies. In the stanza library + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-other.cabal.out b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-other.cabal.out index 4f5433c09d6..0bcddb2cfba 100644 --- a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-other.cabal.out +++ b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-other.cabal.out @@ -7,3 +7,5 @@ Error: It occurs in neither the 'exposed-modules' of this package, nor any of its 'build-depends' dependencies. In the stanza library + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-other.out b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-other.out index 4f5433c09d6..36bab27bb83 100644 --- a/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-other.out +++ b/cabal-testsuite/PackageTests/ReexportedModules/setup-fail-other.out @@ -7,3 +7,5 @@ Error: It occurs in neither the 'exposed-modules' of this package, nor any of its 'build-depends' dependencies. In the stanza library + CallStack (from HasCallStack): + dieProgress, called at src/Distribution/Backpack/LinkedComponent.hs:_:_ in Cabal-3.17.0.0-inplace:Distribution.Backpack.LinkedComponent diff --git a/cabal-testsuite/src/Test/Cabal/OutputNormalizer.hs b/cabal-testsuite/src/Test/Cabal/OutputNormalizer.hs index c4b45c6f161..f7bdc796ce4 100644 --- a/cabal-testsuite/src/Test/Cabal/OutputNormalizer.hs +++ b/cabal-testsuite/src/Test/Cabal/OutputNormalizer.hs @@ -95,6 +95,7 @@ normalizeOutput nenv = -- hackage-security locks occur non-deterministically . resub "(Released|Acquired|Waiting) .*hackage-security-lock\n" "" . resub "installed: [0-9]+(\\.[0-9]+)*" "installed: " + . resub "\\.hs:[0-9]+:[0-9]+" ".hs:_:_" where sameDir = "(\\.((\\\\)+|\\/))*" packageIdRegex pid =