@@ -87,22 +87,22 @@ build pkg_descr lbi flags suffixes = do
87
87
info verbosity $ " Component build order: "
88
88
++ intercalate " , " (map showComponentName componentsToBuild)
89
89
90
- initialBuildSteps distPref pkg_descr lbi verbosity
91
90
when (null targets) $
92
91
-- Only bother with this message if we're building the whole package
93
92
setupMessage verbosity " Building" (packageId pkg_descr)
94
93
95
94
internalPackageDB <- createInternalPackageDB verbosity lbi distPref
96
95
97
- withComponentsInBuildOrder pkg_descr lbi componentsToBuild $ \ comp clbi ->
96
+ withComponentsInBuildOrder pkg_descr lbi componentsToBuild $ \ comp clbi -> do
97
+ initialBuildSteps distPref pkg_descr lbi clbi verbosity
98
98
let bi = componentBuildInfo comp
99
99
progs' = addInternalBuildTools pkg_descr lbi bi (withPrograms lbi)
100
100
lbi' = lbi {
101
101
withPrograms = progs',
102
102
withPackageDB = withPackageDB lbi ++ [internalPackageDB]
103
103
}
104
- in buildComponent verbosity (buildNumJobs flags) pkg_descr
105
- lbi' suffixes comp clbi distPref
104
+ buildComponent verbosity (buildNumJobs flags) pkg_descr
105
+ lbi' suffixes comp clbi distPref
106
106
107
107
108
108
repl :: PackageDescription -- ^ Mostly information from the .cabal file
@@ -127,8 +127,6 @@ repl pkg_descr lbi flags suffixes args = do
127
127
++ intercalate " , "
128
128
[ showComponentName c | (c,_) <- componentsToBuild ]
129
129
130
- initialBuildSteps distPref pkg_descr lbi verbosity
131
-
132
130
internalPackageDB <- createInternalPackageDB verbosity lbi distPref
133
131
134
132
let lbiForComponent comp lbi' =
@@ -140,17 +138,19 @@ repl pkg_descr lbi flags suffixes args = do
140
138
141
139
-- build any dependent components
142
140
sequence_
143
- [ let comp = getComponent pkg_descr cname
144
- lbi' = lbiForComponent comp lbi
145
- in buildComponent verbosity NoFlag
146
- pkg_descr lbi' suffixes comp clbi distPref
141
+ [ do let comp = getComponent pkg_descr cname
142
+ lbi' = lbiForComponent comp lbi
143
+ initialBuildSteps distPref pkg_descr lbi clbi verbosity
144
+ buildComponent verbosity NoFlag
145
+ pkg_descr lbi' suffixes comp clbi distPref
147
146
| (cname, clbi) <- init componentsToBuild ]
148
147
149
148
-- REPL for target components
150
149
let (cname, clbi) = componentForRepl
151
150
comp = getComponent pkg_descr cname
152
151
lbi' = lbiForComponent comp lbi
153
- in replComponent verbosity pkg_descr lbi' suffixes comp clbi distPref
152
+ initialBuildSteps distPref pkg_descr lbi clbi verbosity
153
+ replComponent verbosity pkg_descr lbi' suffixes comp clbi distPref
154
154
155
155
156
156
-- | Start an interpreter without loading any package files.
@@ -173,7 +173,7 @@ buildComponent :: Verbosity
173
173
-> IO ()
174
174
buildComponent verbosity numJobs pkg_descr lbi suffixes
175
175
comp@ (CLib lib) clbi distPref = do
176
- preprocessComponent pkg_descr comp lbi False verbosity suffixes
176
+ preprocessComponent pkg_descr comp lbi clbi False verbosity suffixes
177
177
extras <- preprocessExtras comp lbi
178
178
info verbosity $ " Building library " ++ libName lib ++ " ..."
179
179
let libbi = libBuildInfo lib
@@ -192,7 +192,7 @@ buildComponent verbosity numJobs pkg_descr lbi suffixes
192
192
193
193
buildComponent verbosity numJobs pkg_descr lbi suffixes
194
194
comp@ (CExe exe) clbi _ = do
195
- preprocessComponent pkg_descr comp lbi False verbosity suffixes
195
+ preprocessComponent pkg_descr comp lbi clbi False verbosity suffixes
196
196
extras <- preprocessExtras comp lbi
197
197
info verbosity $ " Building executable " ++ exeName exe ++ " ..."
198
198
let ebi = buildInfo exe
@@ -204,7 +204,7 @@ buildComponent verbosity numJobs pkg_descr lbi suffixes
204
204
comp@ (CTest test@ TestSuite { testInterface = TestSuiteExeV10 {} })
205
205
clbi _distPref = do
206
206
let exe = testSuiteExeV10AsExe test
207
- preprocessComponent pkg_descr comp lbi False verbosity suffixes
207
+ preprocessComponent pkg_descr comp lbi clbi False verbosity suffixes
208
208
extras <- preprocessExtras comp lbi
209
209
info verbosity $ " Building test suite " ++ testName test ++ " ..."
210
210
let ebi = buildInfo exe
@@ -224,7 +224,7 @@ buildComponent verbosity numJobs pkg_descr lbi0 suffixes
224
224
pwd <- getCurrentDirectory
225
225
let (pkg, lib, libClbi, lbi, ipi, exe, exeClbi) =
226
226
testSuiteLibV09AsLibAndExe pkg_descr test clbi lbi0 distPref pwd
227
- preprocessComponent pkg_descr comp lbi False verbosity suffixes
227
+ preprocessComponent pkg_descr comp lbi clbi False verbosity suffixes
228
228
extras <- preprocessExtras comp lbi
229
229
info verbosity $ " Building test suite " ++ testName test ++ " ..."
230
230
buildLib verbosity numJobs pkg lbi lib libClbi
@@ -248,7 +248,7 @@ buildComponent verbosity numJobs pkg_descr lbi suffixes
248
248
comp@ (CBench bm@ Benchmark { benchmarkInterface = BenchmarkExeV10 {} })
249
249
clbi _ = do
250
250
let (exe, exeClbi) = benchmarkExeV10asExe bm clbi
251
- preprocessComponent pkg_descr comp lbi False verbosity suffixes
251
+ preprocessComponent pkg_descr comp lbi clbi False verbosity suffixes
252
252
extras <- preprocessExtras comp lbi
253
253
info verbosity $ " Building benchmark " ++ benchmarkName bm ++ " ..."
254
254
let ebi = buildInfo exe
@@ -281,15 +281,15 @@ replComponent :: Verbosity
281
281
-> IO ()
282
282
replComponent verbosity pkg_descr lbi suffixes
283
283
comp@ (CLib lib) clbi _ = do
284
- preprocessComponent pkg_descr comp lbi False verbosity suffixes
284
+ preprocessComponent pkg_descr comp lbi clbi False verbosity suffixes
285
285
extras <- preprocessExtras comp lbi
286
286
let libbi = libBuildInfo lib
287
287
lib' = lib { libBuildInfo = libbi { cSources = cSources libbi ++ extras } }
288
288
replLib verbosity pkg_descr lbi lib' clbi
289
289
290
290
replComponent verbosity pkg_descr lbi suffixes
291
291
comp@ (CExe exe) clbi _ = do
292
- preprocessComponent pkg_descr comp lbi False verbosity suffixes
292
+ preprocessComponent pkg_descr comp lbi clbi False verbosity suffixes
293
293
extras <- preprocessExtras comp lbi
294
294
let ebi = buildInfo exe
295
295
exe' = exe { buildInfo = ebi { cSources = cSources ebi ++ extras } }
@@ -300,7 +300,7 @@ replComponent verbosity pkg_descr lbi suffixes
300
300
comp@ (CTest test@ TestSuite { testInterface = TestSuiteExeV10 {} })
301
301
clbi _distPref = do
302
302
let exe = testSuiteExeV10AsExe test
303
- preprocessComponent pkg_descr comp lbi False verbosity suffixes
303
+ preprocessComponent pkg_descr comp lbi clbi False verbosity suffixes
304
304
extras <- preprocessExtras comp lbi
305
305
let ebi = buildInfo exe
306
306
exe' = exe { buildInfo = ebi { cSources = cSources ebi ++ extras } }
@@ -314,7 +314,7 @@ replComponent verbosity pkg_descr lbi0 suffixes
314
314
pwd <- getCurrentDirectory
315
315
let (pkg, lib, libClbi, lbi, _, _, _) =
316
316
testSuiteLibV09AsLibAndExe pkg_descr test clbi lbi0 distPref pwd
317
- preprocessComponent pkg_descr comp lbi False verbosity suffixes
317
+ preprocessComponent pkg_descr comp lbi clbi False verbosity suffixes
318
318
extras <- preprocessExtras comp lbi
319
319
let libbi = libBuildInfo lib
320
320
lib' = lib { libBuildInfo = libbi { cSources = cSources libbi ++ extras } }
@@ -331,7 +331,7 @@ replComponent verbosity pkg_descr lbi suffixes
331
331
comp@ (CBench bm@ Benchmark { benchmarkInterface = BenchmarkExeV10 {} })
332
332
clbi _ = do
333
333
let (exe, exeClbi) = benchmarkExeV10asExe bm clbi
334
- preprocessComponent pkg_descr comp lbi False verbosity suffixes
334
+ preprocessComponent pkg_descr comp lbi clbi False verbosity suffixes
335
335
extras <- preprocessExtras comp lbi
336
336
let ebi = buildInfo exe
337
337
exe' = exe { buildInfo = ebi { cSources = cSources ebi ++ extras } }
@@ -384,21 +384,13 @@ testSuiteLibV09AsLibAndExe pkg_descr
384
384
libExposed = True ,
385
385
libBuildInfo = bi
386
386
}
387
- -- NB: temporary hack; I have a refactor which solves this
388
- cid = computeComponentId NoFlag
389
- (package pkg_descr)
390
- (CTestName (testName test))
391
- (map ((\ (SimpleUnitId cid0) -> cid0) . fst )
392
- (componentPackageDeps clbi))
393
- (flagAssignment lbi)
394
- uid = SimpleUnitId cid
395
387
(compat_name, compat_key) = computeCompatPackageKey
396
388
(compiler lbi) (package pkg_descr)
397
- (CTestName (testName test)) uid
389
+ (CTestName (testName test)) (componentUnitId clbi)
398
390
libClbi = LibComponentLocalBuildInfo
399
391
{ componentPackageDeps = componentPackageDeps clbi
400
392
, componentPackageRenaming = componentPackageRenaming clbi
401
- , componentUnitId = uid
393
+ , componentUnitId = componentUnitId clbi
402
394
, componentCompatPackageName = compat_name
403
395
, componentCompatPackageKey = compat_key
404
396
, componentExposedModules = [IPI. ExposedModule m Nothing ]
@@ -427,6 +419,9 @@ testSuiteLibV09AsLibAndExe pkg_descr
427
419
-- | The stub executable needs a new 'ComponentLocalBuildInfo'
428
420
-- that exposes the relevant test suite library.
429
421
exeClbi = ExeComponentLocalBuildInfo {
422
+ -- TODO: this is a hack, but as long as this is unique
423
+ -- (doesn't clobber something) we won't run into trouble
424
+ componentUnitId = mkUnitId (stubName test),
430
425
componentPackageDeps =
431
426
(IPI. installedUnitId ipi, packageId ipi)
432
427
: (filter (\ (_, x) -> let PackageName name = pkgName x
@@ -450,6 +445,7 @@ benchmarkExeV10asExe bm@Benchmark { benchmarkInterface = BenchmarkExeV10 _ f }
450
445
buildInfo = benchmarkBuildInfo bm
451
446
}
452
447
exeClbi = ExeComponentLocalBuildInfo {
448
+ componentUnitId = componentUnitId clbi,
453
449
componentPackageDeps = componentPackageDeps clbi,
454
450
componentPackageRenaming = componentPackageRenaming clbi
455
451
}
@@ -534,9 +530,10 @@ replExe verbosity pkg_descr lbi exe clbi =
534
530
initialBuildSteps :: FilePath -- ^ "dist" prefix
535
531
-> PackageDescription -- ^ mostly information from the .cabal file
536
532
-> LocalBuildInfo -- ^ Configuration information
533
+ -> ComponentLocalBuildInfo
537
534
-> Verbosity -- ^ The verbosity to use
538
535
-> IO ()
539
- initialBuildSteps _distPref pkg_descr lbi verbosity = do
536
+ initialBuildSteps _distPref pkg_descr lbi clbi verbosity = do
540
537
-- check that there's something to build
541
538
unless (not . null $ allBuildInfo pkg_descr) $ do
542
539
let name = display (packageId pkg_descr)
@@ -545,23 +542,24 @@ initialBuildSteps _distPref pkg_descr lbi verbosity = do
545
542
546
543
createDirectoryIfMissingVerbose verbosity True (buildDir lbi)
547
544
548
- writeAutogenFiles verbosity pkg_descr lbi
545
+ writeAutogenFiles verbosity pkg_descr lbi clbi
549
546
550
547
-- | Generate and write out the Paths_<pkg>.hs and cabal_macros.h files
551
548
--
552
549
writeAutogenFiles :: Verbosity
553
550
-> PackageDescription
554
551
-> LocalBuildInfo
552
+ -> ComponentLocalBuildInfo
555
553
-> IO ()
556
- writeAutogenFiles verbosity pkg lbi = do
557
- createDirectoryIfMissingVerbose verbosity True (autogenModulesDir lbi)
554
+ writeAutogenFiles verbosity pkg lbi clbi = do
555
+ createDirectoryIfMissingVerbose verbosity True (autogenModulesDir lbi clbi )
558
556
559
- let pathsModulePath = autogenModulesDir lbi
557
+ let pathsModulePath = autogenModulesDir lbi clbi
560
558
</> ModuleName. toFilePath (autogenModuleName pkg) <.> " hs"
561
- rewriteFile pathsModulePath (Build.PathsModule. generate pkg lbi)
559
+ rewriteFile pathsModulePath (Build.PathsModule. generate pkg lbi clbi )
562
560
563
- let cppHeaderPath = autogenModulesDir lbi </> cppHeaderName
564
- rewriteFile cppHeaderPath (Build.Macros. generate pkg lbi)
561
+ let cppHeaderPath = autogenModulesDir lbi clbi </> cppHeaderName
562
+ rewriteFile cppHeaderPath (Build.Macros. generate pkg lbi clbi )
565
563
566
564
-- | Check that the given build targets are valid in the current context.
567
565
--
0 commit comments