@@ -8,7 +8,7 @@ module Distribution.Client.CmdShowBuildInfo (
8
8
) where
9
9
10
10
import Distribution.Client.Compat.Prelude
11
- ( catMaybes )
11
+ ( for )
12
12
import Distribution.Client.ProjectOrchestration
13
13
import Distribution.Client.CmdErrorMessages
14
14
@@ -17,7 +17,7 @@ import Distribution.Client.Setup
17
17
import Distribution.Client.TargetProblem
18
18
( TargetProblem' , TargetProblem (TargetProblemNoneEnabled , TargetProblemNoTargets ) )
19
19
import Distribution.Simple.Setup
20
- (Flag ( .. ), haddockVerbosity , configVerbosity , fromFlagOrDefault )
20
+ ( configVerbosity , fromFlagOrDefault )
21
21
import Distribution.Simple.Command
22
22
( CommandUI (.. ), option , reqArg' , usageAlternatives )
23
23
import Distribution.Verbosity
@@ -26,20 +26,19 @@ import Distribution.Simple.Utils
26
26
( wrapText )
27
27
28
28
import qualified Data.Map as Map
29
- import qualified Distribution.Simple.Setup as Cabal
30
- import Distribution.Client.ProjectBuilding.Types
31
29
import Distribution.Client.ProjectPlanning.Types
32
30
import Distribution.Client.NixStyleOptions
33
31
( NixStyleFlags (.. ), nixStyleOptions , defaultNixStyleFlags )
34
32
import Distribution.Client.DistDirLayout
35
- ( distProjectRootDirectory )
33
+ ( distProjectRootDirectory , DistDirLayout ( distProjectCacheDirectory ) )
36
34
37
35
import Distribution.Simple.ShowBuildInfo
38
36
import Distribution.Utils.Json
39
37
40
- import Data.Either
41
38
import qualified Data.Text as T
42
39
import qualified Data.Text.IO as T
40
+ import System.FilePath
41
+ import Distribution.Types.UnitId (unUnitId )
43
42
44
43
showBuildInfoCommand :: CommandUI (NixStyleFlags ShowBuildInfoFlags )
45
44
showBuildInfoCommand = CommandUI {
@@ -108,13 +107,13 @@ showBuildInfoAction flags@NixStyleFlags { extraFlags = (ShowBuildInfoFlags fileO
108
107
buildOutcomes <- runProjectBuildPhase verbosity baseCtx buildCtx
109
108
runProjectPostBuildPhase verbosity baseCtx buildCtx buildOutcomes
110
109
111
- -- We can ignore the errors here, since runProjectPostBuildPhase should
112
- -- have already died and reported them if they exist
113
- let (_errs, buildResults) = partitionEithers $ Map. elems buildOutcomes
114
-
115
- let componentBuildInfos =
116
- concatMap T. lines $ -- Component infos are returned each on a newline
117
- catMaybes (buildResultBuildInfo <$> buildResults)
110
+ let tm = targetsMap buildCtx
111
+ let units = Map. keys tm
112
+ let layout = distDirLayout baseCtx
113
+ let dir = distProjectCacheDirectory layout </> " buildinfo "
114
+ componentBuildInfos <- for units $ \ unit -> do
115
+ let fp = dir </> (unUnitId unit) <.> " json "
116
+ T. strip <$> T. readFile fp
118
117
119
118
let compilerInfo = mkCompilerInfo
120
119
(pkgConfigCompilerProgs (elaboratedShared buildCtx))
@@ -135,12 +134,12 @@ showBuildInfoAction flags@NixStyleFlags { extraFlags = (ShowBuildInfoFlags fileO
135
134
-- Default to silent verbosity otherwise it will pollute our json output
136
135
verbosity = fromFlagOrDefault silent (configVerbosity configFlags)
137
136
-- Also shut up haddock since it dumps warnings to stdout
138
- flags' = flags { haddockFlags = haddockFlags { haddockVerbosity = Flag silent }
139
- , configFlags = configFlags { Cabal. configTests = Flag True
140
- , Cabal. configBenchmarks = Flag True
141
- }
142
- }
143
- cliConfig = commandLineFlagsToProjectConfig globalFlags flags'
137
+ -- flags' = flags { haddockFlags = haddockFlags { haddockVerbosity = Flag silent }
138
+ -- , configFlags = configFlags { Cabal.configTests = Flag True
139
+ -- , Cabal.configBenchmarks = Flag True
140
+ -- }
141
+ -- }
142
+ cliConfig = commandLineFlagsToProjectConfig globalFlags flags
144
143
mempty -- ClientInstallFlags, not needed here
145
144
146
145
-- | This defines what a 'TargetSelector' means for the @show-build-info@ command.
0 commit comments