@@ -117,26 +117,7 @@ build pkg_descr lbi flags suffixes = do
117
117
-- Before the actual building, dump out build-information.
118
118
-- This way, if the actual compilation failed, the options have still been
119
119
-- dumped.
120
- when shouldDumpBuildInfo $ do
121
- -- Changing this line might break consumers of the dumped build info.
122
- -- Announce changes on mailing lists!
123
- let activeTargets = allTargetsInBuildOrder' pkg_descr lbi
124
- info verbosity $ " Dump build information for: "
125
- ++ intercalate " , "
126
- (map (showComponentName . componentLocalName . targetCLBI)
127
- activeTargets)
128
- pwd <- getCurrentDirectory
129
- let (warns, json) = mkBuildInfo pwd pkg_descr lbi flags activeTargets
130
- buildInfoText = renderJson json
131
- unless (null warns) $
132
- warn verbosity $ " Encountered warnings while dumping build-info:\n "
133
- ++ unlines warns
134
- LBS. writeFile (buildInfoPref distPref) buildInfoText
135
-
136
- when (not shouldDumpBuildInfo) $ do
137
- -- Remove existing build-info.json as it might be outdated now.
138
- exists <- doesFileExist (buildInfoPref distPref)
139
- when exists $ removeFile (buildInfoPref distPref)
120
+ dumpBuildInfo verbosity distPref (configDumpBuildInfo (configFlags lbi)) pkg_descr lbi flags
140
121
141
122
-- Now do the actual building
142
123
(\ f -> foldM_ f (installedPkgs lbi) componentsToBuild) $ \ index target -> do
@@ -158,7 +139,45 @@ build pkg_descr lbi flags suffixes = do
158
139
where
159
140
distPref = fromFlag (buildDistPref flags)
160
141
verbosity = fromFlag (buildVerbosity flags)
161
- shouldDumpBuildInfo = fromFlagOrDefault NoDumpBuildInfo (configDumpBuildInfo (configFlags lbi)) == DumpBuildInfo
142
+
143
+
144
+ -- | Write available build information for 'LocalBuildInfo' to disk.
145
+ --
146
+ -- Dumps detailed build information 'build-info.json' to the given directory.
147
+ -- Build information contains basics such as compiler details, but also
148
+ -- lists what modules a component contains and how to compile the component, assuming
149
+ -- lib:Cabal made sure that dependencies are up-to-date.
150
+ dumpBuildInfo :: Verbosity
151
+ -> FilePath -- ^ To which directory should the build-info be dumped?
152
+ -> Flag DumpBuildInfo -- ^ Should we dump detailed build information for this component?
153
+ -> PackageDescription -- ^ Mostly information from the .cabal file
154
+ -> LocalBuildInfo -- ^ Configuration information
155
+ -> BuildFlags -- ^ Flags that the user passed to build
156
+ -> IO ()
157
+ dumpBuildInfo verbosity distPref dumpBuildInfoFlag pkg_descr lbi flags = do
158
+ when shouldDumpBuildInfo $ do
159
+ -- Changing this line might break consumers of the dumped build info.
160
+ -- Announce changes on mailing lists!
161
+ let activeTargets = allTargetsInBuildOrder' pkg_descr lbi
162
+ info verbosity $ " Dump build information for: "
163
+ ++ intercalate " , "
164
+ (map (showComponentName . componentLocalName . targetCLBI)
165
+ activeTargets)
166
+ pwd <- getCurrentDirectory
167
+ let (warns, json) = mkBuildInfo pwd pkg_descr lbi flags activeTargets
168
+ buildInfoText = renderJson json
169
+ unless (null warns) $
170
+ warn verbosity $ " Encountered warnings while dumping build-info:\n "
171
+ ++ unlines warns
172
+ LBS. writeFile (buildInfoPref distPref) buildInfoText
173
+
174
+ when (not shouldDumpBuildInfo) $ do
175
+ -- Remove existing build-info.json as it might be outdated now.
176
+ exists <- doesFileExist (buildInfoPref distPref)
177
+ when exists $ removeFile (buildInfoPref distPref)
178
+ where
179
+ shouldDumpBuildInfo = fromFlagOrDefault NoDumpBuildInfo dumpBuildInfoFlag == DumpBuildInfo
180
+
162
181
163
182
repl :: PackageDescription -- ^ Mostly information from the .cabal file
164
183
-> LocalBuildInfo -- ^ Configuration information
0 commit comments