@@ -103,15 +103,21 @@ waitForDeps toolMap packageMap activeComps bp pi action = do
103 isCore = (`member` siCorePackages (bpSystemInfo bp))
103 isCore = (`member` siCorePackages (bpSystemInfo bp))
104 isCoreExe = (`member` siCoreExecutables (bpSystemInfo bp))
104 isCoreExe = (`member` siCoreExecutables (bpSystemInfo bp))
106+withCounter :: TVar Int -> IO a -> IO a
106withCounter counter = bracket_
107withCounter counter = bracket_
107 (atomically $ modifyTVar counter (+ 1))
108 (atomically $ modifyTVar counter (+ 1))
108 (atomically $ modifyTVar counter (subtract 1))
109 (atomically $ modifyTVar counter (subtract 1))
111+withTSem :: TSem -> IO a -> IO a
110withTSem sem = bracket_ (atomically $ waitTSem sem) (atomically $ signalTSem sem)
112withTSem sem = bracket_ (atomically $ waitTSem sem) (atomically $ signalTSem sem)
114+-- | Returns @Nothing@ if installing to a global database
115+pbDatabase :: PerformBuild -> Maybe FilePath
112pbDatabase pb
116pbDatabase pb
113 | pbGlobalInstall pb = Nothing
117 | pbGlobalInstall pb = Nothing
114 | otherwise = Just $ pbInstallDest pb </> "pkgdb"
118 | otherwise = Just $ pbInstallDest pb </> "pkgdb"
120+pbBinDir, pbLibDir, pbDataDir, pbDocDir :: PerformBuild -> FilePath
115pbBinDir pb = pbInstallDest pb </> "bin"
121pbBinDir pb = pbInstallDest pb </> "bin"
116pbLibDir pb = pbInstallDest pb </> "lib"
122pbLibDir pb = pbInstallDest pb </> "lib"
117pbDataDir pb = pbInstallDest pb </> "share"
123pbDataDir pb = pbInstallDest pb </> "share"
@@ -260,9 +266,9 @@ singleBuild pb@PerformBuild {..} SingleBuild {..} =
260 testOut = pbLogDir </> fpFromText namever </> "test.out"
266 testOut = pbLogDir </> fpFromText namever </> "test.out"
261 testRunOut = pbLogDir </> fpFromText namever </> "test-run.out"
267 testRunOut = pbLogDir </> fpFromText namever </> "test-run.out"
263− wf fp inner = do
269+ wf fp inner' = do
264 createTree $ parent fp
270 createTree $ parent fp
265− withBinaryFile (fpToString fp) WriteMode inner
271+ withBinaryFile (fpToString fp) WriteMode inner'
267 configArgs = ($ []) $ execWriter $ do
273 configArgs = ($ []) $ execWriter $ do
268 tell' "--package-db=clear"
274 tell' "--package-db=clear"
@@ -279,9 +285,9 @@ singleBuild pb@PerformBuild {..} SingleBuild {..} =
279 flags :: Text
285 flags :: Text
280 flags = unwords $ map go $ mapToList pcFlagOverrides
286 flags = unwords $ map go $ mapToList pcFlagOverrides
282− go (name, isOn) = concat
288+ go (name', isOn) = concat
283 [ if isOn then "" else "-"
289 [ if isOn then "" else "-"
284− , unFlagName name
290+ , unFlagName name'
287 PackageConstraints {..} = ppConstraints $ piPlan sbPackageInfo
293 PackageConstraints {..} = ppConstraints $ piPlan sbPackageInfo