summaryrefslogtreecommitdiff
path: root/Omni/Bild.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Omni/Bild.hs')
-rwxr-xr-xOmni/Bild.hs16
1 files changed, 11 insertions, 5 deletions
diff --git a/Omni/Bild.hs b/Omni/Bild.hs
index 414049b..aa79877 100755
--- a/Omni/Bild.hs
+++ b/Omni/Bild.hs
@@ -142,6 +142,7 @@ import qualified Network.HostName as HostName
import qualified Omni.Bild.Meta as Meta
import qualified Omni.Cli as Cli
import qualified Omni.Log as Log
+import qualified Omni.Log.Concurrent as LogC
import Omni.Namespace (Namespace (..))
import qualified Omni.Namespace as Namespace
import Omni.Test ((@=?))
@@ -954,12 +955,15 @@ build :: Bool -> Bool -> Int -> Int -> Analysis -> IO [Exit.ExitCode]
build andTest loud jobs cpus analysis = do
root <- Env.getEnv "CODEROOT"
let targets = Map.elems analysis
- results <- mapConcurrentlyBounded jobs (buildTarget root) targets
- pure (map fst results)
+ LogC.withLineManager jobs <| \lineMgr -> do
+ results <- mapConcurrentlyBounded jobs (buildTarget lineMgr root) targets
+ pure (map fst results)
where
- buildTarget :: FilePath -> Target -> IO (Exit.ExitCode, ByteString)
- buildTarget root target@Target {..} =
- case compiler of
+ buildTarget :: LogC.LineManager -> FilePath -> Target -> IO (Exit.ExitCode, ByteString)
+ buildTarget lineMgr root target@Target {..} = do
+ mLineNum <- LogC.reserveLine lineMgr namespace
+ let doRelease = LogC.releaseLine lineMgr mLineNum
+ result <- case compiler of
CPython -> case out of
Just _ ->
Log.info ["bild", "nix", "python", nschunk namespace]
@@ -1016,6 +1020,8 @@ build andTest loud jobs cpus analysis = do
Sbcl ->
Log.info ["bild", "dev", "lisp", nschunk namespace]
>> proc loud namespace (toNixFlag compiler) compilerFlags
+ doRelease (isSuccess (fst result) ?: (LogC.Success, LogC.Failed))
+ pure result
data Proc = Proc
{ loud :: Bool,