@@ -4,18 +4,19 @@ module Stackage.InstallInfo
4 , bpPackageList
4 , bpPackageList
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)
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
47 putStrLn "Loading package database"
49 putStrLn "Loading package database"
48 pdb <- loadPackageDB settings coreMap totalCore allPackages
50 pdb <- loadPackageDB settings coreMap totalCore allPackages
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
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
58+ unless (Set.null errs) $ do
59+ putStrLn "Build plan requires some disallowed packages"
60+ mapM_ putStrLn $ Set.toList errs
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