on master help sign in
Remove warnings
1bc9040Michael Snoyman
Stackage/Build.hs+5−49
@@ -4,31 +4,17 @@ module Stackage.Build
4 , BuildSettings (..)
4 , BuildSettings (..)
5 ) where
5 ) where
6
6
7−import Control.Exception (assert)
7+import Control.Monad (unless)
8−import Control.Monad (unless, when)
9−import qualified Data.Map as Map
10−import Data.Maybe (mapMaybe)
11−import Data.Set (empty)
12−import qualified Data.Set as Set
13−import Distribution.Text (simpleParse)
14−import Distribution.Version (withinRange)
15import Prelude hiding (pi)
8import Prelude hiding (pi)
16−import Stackage.CheckPlan
17import Stackage.Config
9import Stackage.Config
18import Stackage.InstallInfo
10import Stackage.InstallInfo
19−import Stackage.Tarballs
20−import Stackage.Test
21import Stackage.Types
11import Stackage.Types
22import Stackage.Util
12import Stackage.Util
23−import System.Directory (canonicalizePath,
24− createDirectoryIfMissing,
25− doesDirectoryExist)
26import System.Exit (ExitCode (ExitSuccess), exitWith)
13import System.Exit (ExitCode (ExitSuccess), exitWith)
27import System.IO (IOMode (WriteMode), hPutStrLn,
14import System.IO (IOMode (WriteMode), hPutStrLn,
28 withBinaryFile)
15 withBinaryFile)
29−import System.Process (rawSystem, readProcess, runProcess,
16+import System.Process (rawSystem, runProcess,
30 waitForProcess)
17 waitForProcess)
31−import Stackage.Select (select)
32import Stackage.CheckCabalVersion (checkCabalVersion)
18import Stackage.CheckCabalVersion (checkCabalVersion)
33
19
34defaultBuildSettings :: BuildSettings
20defaultBuildSettings :: BuildSettings
@@ -74,10 +60,10 @@ build settings' bp = do
74 ]
60 ]
75 hPutStrLn handle ("cabal " ++ unwords (map (\s -> "'" ++ s ++ "'") args))
61 hPutStrLn handle ("cabal " ++ unwords (map (\s -> "'" ++ s ++ "'") args))
76 runCabal args handle
62 runCabal args handle
77− ec1 <- waitForProcess ph1
63+ ec2 <- waitForProcess ph1
78− unless (ec1 == ExitSuccess) $ do
64+ unless (ec2 == ExitSuccess) $ do
79 putStrLn "Building of build tools failed, please see build-tools.log"
65 putStrLn "Building of build tools failed, please see build-tools.log"
80− exitWith ec1
66+ exitWith ec2
81 putStrLn "Build tools built"
67 putStrLn "Build tools built"
82
68
83 ph <- withBinaryFile "build.log" WriteMode $ \handle -> do
69 ph <- withBinaryFile "build.log" WriteMode $ \handle -> do
@@ -96,33 +82,3 @@ build settings' bp = do
96 unless (ec == ExitSuccess) $ do
82 unless (ec == ExitSuccess) $ do
97 putStrLn "Build failed, please see build.log"
83 putStrLn "Build failed, please see build.log"
98 exitWith ec
84 exitWith ec
99−
100−-- | Get all of the build tools required.
101−iiBuildTools :: InstallInfo -> [String]
102−iiBuildTools InstallInfo { iiPackageDB = PackageDB m, iiPackages = packages } =
103− -- FIXME possible improvement: track the dependencies between the build
104− -- tools themselves, and install them in the correct order.
105− map unPackageName
106− $ filter (flip Set.notMember coreTools)
107− $ mapMaybe (flip Map.lookup buildToolMap)
108− $ Set.toList
109− $ Set.unions
110− $ map piBuildTools
111− $ Map.elems
112− $ Map.filterWithKey isSelected m
113− where
114− unPackageName (PackageName pn) = pn
115− isSelected name _ = name `Set.member` selected
116− selected = Set.fromList $ Map.keys packages
117−
118− -- Build tools shipped with GHC which we should not attempt to build
119− -- ourselves.
120− coreTools = Set.fromList $ map PackageName $ words "hsc2hs"
121−
122− -- The map from build tool name to the package it comes from.
123− buildToolMap = Map.unions $ map toBuildToolMap $ Map.toList m
124− toBuildToolMap :: (PackageName, PackageInfo) -> Map Executable PackageName
125− toBuildToolMap (pn, pi) = Map.unions
126− $ map (flip Map.singleton pn)
127− $ Set.toList
128− $ piExecs pi
Stackage/BuildPlan.hs+1−2
@@ -9,8 +9,6 @@ import Stackage.Types
9import qualified Data.Map as Map
9import qualified Data.Map as Map
10import qualified Data.Set as Set
10import qualified Data.Set as Set
11import Distribution.Text (simpleParse, display)
11import Distribution.Text (simpleParse, display)
12−import Distribution.Package (PackageName (..))
13−import Control.Applicative ((<$>), (<*>))
14
12
15readBuildPlan :: FilePath -> IO BuildPlan
13readBuildPlan :: FilePath -> IO BuildPlan
16readBuildPlan fp = do
14readBuildPlan fp = do
@@ -76,6 +74,7 @@ takeWord s =
76 if null s'
74 if null s'
77 then Right (x', y)
75 then Right (x', y)
78 else Left $ "Unconsumed input in takeWord call"
76 else Left $ "Unconsumed input in takeWord call"
77+ (_, []) -> Left "takeWord failed"
79
78
80instance AsString SelectedPackageInfo where
79instance AsString SelectedPackageInfo where
81 toString SelectedPackageInfo {..} = unwords
80 toString SelectedPackageInfo {..} = unwords
Stackage/CheckCabalVersion.hs+1−19
@@ -3,28 +3,10 @@ module Stackage.CheckCabalVersion
3 ) where
3 ) where
4
4
5import Control.Exception (assert)
5import Control.Exception (assert)
6−import Control.Monad (unless, when)
7−import qualified Data.Map as Map
8−import Data.Maybe (mapMaybe)
9−import Data.Set (empty)
10−import qualified Data.Set as Set
11import Distribution.Text (simpleParse)
6import Distribution.Text (simpleParse)
12import Distribution.Version (withinRange)
7import Distribution.Version (withinRange)
13import Prelude hiding (pi)
8import Prelude hiding (pi)
14−import Stackage.Config
15−import Stackage.InstallInfo
16−import Stackage.Tarballs
17−import Stackage.Test
18−import Stackage.Types
19−import Stackage.Util
20−import System.Directory (canonicalizePath,
21− createDirectoryIfMissing,
22− doesDirectoryExist)
23−import System.Exit (ExitCode (ExitSuccess), exitWith)
24−import System.IO (IOMode (WriteMode), hPutStrLn,
25− withBinaryFile)
26−import System.Process (rawSystem, readProcess, runProcess,
9+import System.Process (readProcess)
27− waitForProcess)
28
10
29checkCabalVersion :: IO String
11checkCabalVersion :: IO String
30checkCabalVersion = do
12checkCabalVersion = do
Stackage/InstallInfo.hs−1
@@ -4,7 +4,6 @@ module Stackage.InstallInfo
4 , bpPackageList
4 , bpPackageList
5 ) where
5 ) where
6
6
7−import Control.Arrow ((&&&))
8import Control.Monad (forM_)
7import Control.Monad (forM_)
9import qualified Data.Map as Map
8import qualified Data.Map as Map
10import qualified Data.Set as Set
9import qualified Data.Set as Set
Stackage/Select.hs−17
@@ -3,31 +3,15 @@ module Stackage.Select
3 , defaultSelectSettings
3 , defaultSelectSettings
4 ) where
4 ) where
5
5
6−import Control.Exception (assert)
7−import Control.Monad (unless, when)
8import qualified Data.Map as Map
6import qualified Data.Map as Map
9import Data.Maybe (mapMaybe)
7import Data.Maybe (mapMaybe)
10import Data.Set (empty)
8import Data.Set (empty)
11import qualified Data.Set as Set
9import qualified Data.Set as Set
12−import Distribution.Text (simpleParse)
13−import Distribution.Version (withinRange)
14import Prelude hiding (pi)
10import Prelude hiding (pi)
15−import Stackage.CheckPlan
16import Stackage.Config
11import Stackage.Config
17import Stackage.InstallInfo
12import Stackage.InstallInfo
18−import Stackage.Tarballs
19−import Stackage.Test
20import Stackage.Types
13import Stackage.Types
21import Stackage.Util
14import Stackage.Util
22−import System.Directory (canonicalizePath,
23− createDirectoryIfMissing,
24− doesDirectoryExist)
25−import System.Exit (ExitCode (ExitSuccess), exitWith)
26−import System.IO (IOMode (WriteMode), hPutStrLn,
27− withBinaryFile)
28−import System.Process (rawSystem, readProcess, runProcess,
29− waitForProcess)
30−import Stackage.BuildPlan
31
15
32defaultSelectSettings :: SelectSettings
16defaultSelectSettings :: SelectSettings
33defaultSelectSettings = SelectSettings
17defaultSelectSettings = SelectSettings
@@ -66,7 +50,6 @@ iiBuildTools InstallInfo { iiPackageDB = PackageDB m, iiPackages = packages } =
66 $ Map.elems
50 $ Map.elems
67 $ Map.filterWithKey isSelected m
51 $ Map.filterWithKey isSelected m
68 where
52 where
69− unPackageName (PackageName pn) = pn
70 isSelected name _ = name `Set.member` selected
53 isSelected name _ = name `Set.member` selected
71 selected = Set.fromList $ Map.keys packages
54 selected = Set.fromList $ Map.keys packages
72
55
Stackage/Util.hs+2−2
@@ -20,8 +20,8 @@ import qualified Distribution.Package as P
20import qualified Distribution.PackageDescription as PD
20import qualified Distribution.PackageDescription as PD
21import Distribution.License (License (..))
21import Distribution.License (License (..))
22import System.Directory (canonicalizePath,
22import System.Directory (canonicalizePath,
23− createDirectoryIfMissing,
23+ createDirectoryIfMissing
24− doesDirectoryExist)
24+ )
25
25
26-- | Allow only packages with permissive licenses.
26-- | Allow only packages with permissive licenses.
27allowPermissive :: [String] -- ^ list of explicitly allowed packages
27allowPermissive :: [String] -- ^ list of explicitly allowed packages