on master help sign in
Write build-plan even if there are disallowed packages
0e7fcd5Michael Snoyman
Stackage/InstallInfo.hs+10−3
@@ -4,18 +4,19 @@ module Stackage.InstallInfo
4 , bpPackageList
4 , bpPackageList
5 ) where
5 ) where
6
6
7−import Control.Monad (forM_)
7+import Control.Monad (forM_, unless)
8import qualified Data.Map as Map
8import qualified Data.Map as Map
9import qualified Data.Set as Set
9import qualified Data.Set as Set
10import Data.Version (showVersion)
10import Data.Version (showVersion)
11import qualified Distribution.Text
11import qualified Distribution.Text
12import Distribution.Version (simplifyVersionRange, withinRange)
12import Distribution.Version (simplifyVersionRange, withinRange)
13+import Stackage.GhcPkg
13import Stackage.HaskellPlatform
14import Stackage.HaskellPlatform
14import Stackage.LoadDatabase
15import Stackage.LoadDatabase
15import Stackage.NarrowDatabase
16import Stackage.NarrowDatabase
16import Stackage.Types
17import Stackage.Types
17import Stackage.Util
18import Stackage.Util
18−import Stackage.GhcPkg
19+import System.Exit (exitFailure)
19
20
20dropExcluded :: SelectSettings
21dropExcluded :: SelectSettings
21 -> Map PackageName (VersionRange, Maintainer)
22 -> Map PackageName (VersionRange, Maintainer)
@@ -42,17 +43,23 @@ getInstallInfo settings = do
42 | requireHaskellPlatform settings = Map.union (stablePackages settings) $ identsToRanges (hplibs hp)
43 | requireHaskellPlatform settings = Map.union (stablePackages settings) $ identsToRanges (hplibs hp)
43 | otherwise = stablePackages settings
44 | otherwise = stablePackages settings
44 allPackages = dropExcluded settings allPackages'
45 allPackages = dropExcluded settings allPackages'
46+ mapM_ print $ Map.keys allPackages
45 let totalCore = extraCore settings `Set.union` Set.map (\(PackageIdentifier p _) -> p) core
47 let totalCore = extraCore settings `Set.union` Set.map (\(PackageIdentifier p _) -> p) core
46
48
47 putStrLn "Loading package database"
49 putStrLn "Loading package database"
48 pdb <- loadPackageDB settings coreMap totalCore allPackages
50 pdb <- loadPackageDB settings coreMap totalCore allPackages
49
51
50 putStrLn "Narrowing package database"
52 putStrLn "Narrowing package database"
51− final <- narrowPackageDB settings totalCore pdb $ Set.fromList $ Map.toList $ Map.map snd $ allPackages
53+ (final, errs) <- narrowPackageDB settings totalCore pdb $ Set.fromList $ Map.toList $ Map.map snd $ allPackages
52
54
53 putStrLn "Printing build plan to build-plan.log"
55 putStrLn "Printing build plan to build-plan.log"
54 writeFile "build-plan.log" $ unlines $ map showDep $ Map.toList final
56 writeFile "build-plan.log" $ unlines $ map showDep $ Map.toList final
55
57
58+ unless (Set.null errs) $ do
59+ putStrLn "Build plan requires some disallowed packages"
60+ mapM_ putStrLn $ Set.toList errs
61+ exitFailure
62+
56 putStrLn "Checking for bad versions"
63 putStrLn "Checking for bad versions"
57 case checkBadVersions settings coreMap pdb final of
64 case checkBadVersions settings coreMap pdb final of
58 badVersions
65 badVersions
Stackage/NarrowDatabase.hs+3−9
@@ -14,15 +14,9 @@ narrowPackageDB :: SelectSettings
14 -> Set PackageName -- ^ core packages to be excluded from installation
14 -> Set PackageName -- ^ core packages to be excluded from installation
15 -> PackageDB
15 -> PackageDB
16 -> Set (PackageName, Maintainer)
16 -> Set (PackageName, Maintainer)
17− -> IO (Map PackageName BuildInfo)
17+ -> IO (Map PackageName BuildInfo, Set String)
18−narrowPackageDB settings core (PackageDB pdb) packageSet = do
18+narrowPackageDB settings core (PackageDB pdb) packageSet =
19− (res, errs) <- runWriterT $ loop Map.empty $ Set.map (\(name, maintainer) -> ([], name, maintainer)) packageSet
19+ runWriterT $ loop Map.empty $ Set.map (\(name, maintainer) -> ([], name, maintainer)) packageSet
20− if Set.null errs
21− then return res
22− else do
23− putStrLn "Build plan requires some disallowed packages"
24− mapM_ putStrLn $ Set.toList errs
25− exitFailure
26 where
20 where
27 loop result toProcess =
21 loop result toProcess =
28 case Set.minView toProcess of
22 case Set.minView toProcess of