@@ -1,10 +1,10 @@
1-- | Perform an actual build, generate a binary package database and a
1-- | Perform an actual build, generate a binary package database and a
2-- documentation directory in the process.
2-- documentation directory in the process.
3−{-# LANGUAGE CPP #-}
3+{-# LANGUAGE CPP #-}
4{-# LANGUAGE DeriveDataTypeable #-}
4{-# LANGUAGE DeriveDataTypeable #-}
5−{-# LANGUAGE RecordWildCards #-}
6{-# LANGUAGE NoImplicitPrelude #-}
5{-# LANGUAGE NoImplicitPrelude #-}
7{-# LANGUAGE OverloadedStrings #-}
6{-# LANGUAGE OverloadedStrings #-}
7+{-# LANGUAGE RecordWildCards #-}
8module Stackage.PerformBuild
8module Stackage.PerformBuild
9 ( performBuild
9 ( performBuild
10 , PerformBuild (..)
10 , PerformBuild (..)
@@ -12,22 +12,25 @@ module Stackage.PerformBuild
12 , pbDocDir
12 , pbDocDir
15−import Stackage.BuildConstraints
15+import Control.Concurrent.Async (async)
16−import Stackage.PackageDescription
17−import Stackage.BuildPlan
18−import Stackage.Prelude hiding (pi)
19−import qualified Data.Map as Map
20−import Control.Concurrent.STM.TSem
16+import Control.Concurrent.STM.TSem
21−import Control.Monad.Writer.Strict (execWriter, tell)
17+import Control.Monad.Writer.Strict (execWriter, tell)
18+import qualified Data.Map as Map
22−import Data.NonNull (fromNullable)
19+import Data.NonNull (fromNullable)
23−import Control.Concurrent.Async (async)
20+import Filesystem (canonicalizePath, createTree,
24−import System.IO.Temp (withSystemTempDirectory)
21+ getWorkingDirectory, isDirectory,
25−import Filesystem (createTree, removeTree, isDirectory, rename, canonicalizePath, getWorkingDirectory)
22+ removeTree, rename)
26−import System.IO (withBinaryFile, IOMode (WriteMode))
27−import Filesystem.Path (parent)
23+import Filesystem.Path (parent)
28−import qualified Filesystem.Path as F
24+import qualified Filesystem.Path as F
29−import System.Environment (getEnvironment)
25+import Stackage.BuildConstraints
26+import Stackage.BuildPlan
27+import Stackage.PackageDescription
28+import Stackage.Prelude hiding (pi)
30−import System.Directory (findExecutable)
29+import System.Directory (findExecutable)
30+import System.Environment (getEnvironment)
31+import System.IO (IOMode (WriteMode),
33+import System.IO.Temp (withSystemTempDirectory)
32data BuildException = BuildException (Map PackageName BuildFailure) [Text]
35data BuildException = BuildException (Map PackageName BuildFailure) [Text]
33 deriving Typeable
36 deriving Typeable
@@ -51,18 +54,18 @@ data BuildFailure = DependencyFailed PackageName
51instance Exception BuildFailure
54instance Exception BuildFailure
53data PerformBuild = PerformBuild
56data PerformBuild = PerformBuild
54− { pbPlan :: BuildPlan
57+ { pbPlan :: BuildPlan
55− , pbInstallDest :: FilePath
58+ , pbInstallDest :: FilePath
56− , pbLog :: ByteString -> IO ()
59+ , pbLog :: ByteString -> IO ()
57− , pbLogDir :: FilePath
60+ , pbLogDir :: FilePath
58− , pbJobs :: Int
61+ , pbJobs :: Int
59 , pbGlobalInstall :: Bool
62 , pbGlobalInstall :: Bool
60 -- ^ Register packages in the global database
63 -- ^ Register packages in the global database
63data PackageInfo = PackageInfo
66data PackageInfo = PackageInfo
64− { piPlan :: PackagePlan
67+ { piPlan :: PackagePlan
65− , piName :: PackageName
68+ , piName :: PackageName
66 , piResult :: TMVar Bool
69 , piResult :: TMVar Bool
@@ -200,17 +203,17 @@ performBuild' pb@PerformBuild {..} = withBuildDir $ \builddir -> do
202data SingleBuild = SingleBuild
205data SingleBuild = SingleBuild
203− { sbSem :: TSem
206+ { sbSem :: TSem
204− , sbErrsVar :: TVar (Map PackageName BuildFailure)
207+ , sbErrsVar :: TVar (Map PackageName BuildFailure)
205− , sbWarningsVar :: TVar ([Text] -> [Text])
208+ , sbWarningsVar :: TVar ([Text] -> [Text])
206− , sbActive :: TVar Int
209+ , sbActive :: TVar Int
207− , sbToolMap :: Map ExeName (Set PackageName)
210+ , sbToolMap :: Map ExeName (Set PackageName)
208− , sbPackageMap :: Map PackageName PackageInfo
211+ , sbPackageMap :: Map PackageName PackageInfo
209− , sbBuildDir :: FilePath
212+ , sbBuildDir :: FilePath
210− , sbPackageInfo :: PackageInfo
213+ , sbPackageInfo :: PackageInfo
211 , sbRegisterMutex :: MVar ()
214 , sbRegisterMutex :: MVar ()
212− , sbModifiedEnv :: [(String, String)]
215+ , sbModifiedEnv :: [(String, String)]
213− , sbHaddockFiles :: TVar (Map Text FilePath) -- ^ package-version, .haddock file
216+ , sbHaddockFiles :: TVar (Map Text FilePath) -- ^ package-version, .haddock file
216singleBuild :: PerformBuild -> SingleBuild -> IO ()
219singleBuild :: PerformBuild -> SingleBuild -> IO ()