summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Command/Run.hs4
-rw-r--r--src/Job.hs11
2 files changed, 8 insertions, 7 deletions
diff --git a/src/Command/Run.hs b/src/Command/Run.hs
index 403e8b8..c762335 100644
--- a/src/Command/Run.hs
+++ b/src/Command/Run.hs
@@ -58,7 +58,7 @@ cmdRun (RunCommand changeset) = do
tout <- getTerminalOutput
liftIO $ do
- mngr <- newJobManager optJobs
+ mngr <- newJobManager "./.minici" optJobs
Just repo <- openRepo "."
commits <- listCommits repo (base <> ".." <> tip)
jobssets <- mapM loadJobSetForCommit commits
@@ -74,7 +74,7 @@ cmdRun (RunCommand changeset) = do
shortDesc = fitToLength 50 (commitDescription commit)
case jobsetJobsEither jobset of
Right jobs -> do
- outs <- runJobs mngr "./.minici" commit jobs
+ outs <- runJobs mngr commit jobs
let findJob name = snd <$> find ((name ==) . jobName . fst) outs
displayStatusLine tout shortCid (" " <> shortDesc) $ map findJob names
return $ map snd outs
diff --git a/src/Job.hs b/src/Job.hs
index bcc7f08..25b9a73 100644
--- a/src/Job.hs
+++ b/src/Job.hs
@@ -90,6 +90,7 @@ textJobStatus = \case
data JobManager = JobManager
{ jmSemaphore :: TVar Int
+ , jmDataDir :: FilePath
, jmJobs :: TVar (Map JobId (TVar (JobStatus JobOutput)))
, jmNextTaskId :: TVar TaskId
, jmNextTask :: TVar (Maybe TaskId)
@@ -99,8 +100,8 @@ data JobManager = JobManager
newtype TaskId = TaskId Int
deriving (Eq, Ord)
-newJobManager :: Int -> IO JobManager
-newJobManager queueLen = do
+newJobManager :: FilePath -> Int -> IO JobManager
+newJobManager jmDataDir queueLen = do
jmSemaphore <- newTVarIO queueLen
jmJobs <- newTVarIO M.empty
jmNextTaskId <- newTVarIO (TaskId 0)
@@ -146,8 +147,8 @@ runManagedJob JobManager {..} tid job = bracket acquire release (\_ -> job)
writeTVar jmNextTask (Just tid')
-runJobs :: JobManager -> FilePath -> Commit -> [ Job ] -> IO [ ( Job, TVar (JobStatus JobOutput) ) ]
-runJobs mngr@JobManager {..} dir commit jobs = do
+runJobs :: JobManager -> Commit -> [ Job ] -> IO [ ( Job, TVar (JobStatus JobOutput) ) ]
+runJobs mngr@JobManager {..} commit jobs = do
treeId <- readTreeId commit
results <- atomically $ do
forM jobs $ \job -> do
@@ -177,7 +178,7 @@ runJobs mngr@JobManager {..} dir commit jobs = do
uses <- waitForUsedArtifacts job results outVar
runManagedJob mngr tid $ do
liftIO $ atomically $ writeTVar outVar JobRunning
- prepareJob dir commit job $ \checkoutPath jdir -> do
+ prepareJob jmDataDir commit job $ \checkoutPath jdir -> do
updateStatusFile (jdir </> "status") outVar
JobDone <$> runJob job uses checkoutPath jdir