on master help sign in
Better bad version output
commit71228518a8e8895a8c317f6d684935eb0d4e9593 authorMichael Snoyman <michael@snoyman.com> dateSun 9 Dec 2012, 19:14 (14 years ago) parenta609f1f
1 file changed+26−9
Stackage/InstallInfo.hs+26−9
Stackage/InstallInfo.hs+26−9
@@ -8,7 +8,8 @@ import Control.Monad (forM_)
88import qualified Data.Map as Map
99import qualified Data.Set as Set
1010import Data.Version (showVersion)
11−import Distribution.Version (withinRange)
11+import qualified Distribution.Text
12+import Distribution.Version (withinRange, simplifyVersionRange)
1213import Stackage.Config
1314import Stackage.HaskellPlatform
1415import Stackage.LoadDatabase
@@ -40,9 +41,15 @@ getInstallInfo settings = do
4041 badVersions
4142 | Map.null badVersions -> return ()
4243 | otherwise -> do
43− forM_ (Map.toList badVersions) $ \(PackageName user, badDeps) -> do
44+ forM_ (Map.toList badVersions) $ \(user, badDeps) -> do
4445 putStrLn $ user ++ " cannot use: "
45− mapM_ (putStrLn . packageVersionString) $ Map.toList badDeps
46+ forM_ (Map.toList badDeps) $ \(name, (version, range)) -> do
47+ putStrLn $ concat
48+ [ "- "
49+ , packageVersionString (name, version)
50+ , " -- "
51+ , Distribution.Text.display $ simplifyVersionRange range
52+ ]
4653 putStrLn ""
4754
4855 error "Conflicting build plan, exiting"
@@ -75,16 +82,26 @@ iiPackageList = map packageVersionString . Map.toList . Map.map fst . iiPackages
7582-- | Check for internal mismatches in required and actual package versions.
7683checkBadVersions :: BuildSettings
7784 -> Map PackageName BuildInfo
78− -> Map PackageName (Map PackageName Version)
85+ -> Map String (Map PackageName (Version, VersionRange))
7986checkBadVersions settings buildPlan =
80− Map.filter (not . Map.null) $ Map.map getBadVersions $ Map.filterWithKey unexpectedFailure buildPlan
87+ Map.unions $ map getBadVersions $ Map.toList $ Map.filterWithKey unexpectedFailure buildPlan
8188 where
8289 unexpectedFailure name _ = name `Set.notMember` expectedFailures settings
8390
84− getBadVersions :: BuildInfo -> Map PackageName Version
85− getBadVersions = Map.unions . map (uncurry checkPackage) . Map.toList . biDeps
91+ getBadVersions :: (PackageName, BuildInfo) -> Map String (Map PackageName (Version, VersionRange))
92+ getBadVersions (name, bi)
93+ | Map.null badVersions = Map.empty
94+ | otherwise = Map.singleton display badVersions
95+ where
96+ badVersions = Map.unions $ map (uncurry checkPackage) $ Map.toList $ biDeps bi
97+ display = concat
98+ [ packageVersionString (name, biVersion bi)
99+ , " ("
100+ , unMaintainer $ biMaintainer bi
101+ , ")"
102+ ]
86103
87− checkPackage :: PackageName -> VersionRange -> Map PackageName Version
104+ checkPackage :: PackageName -> VersionRange -> Map PackageName (Version, VersionRange)
88105 checkPackage name vr =
89106 case Map.lookup name buildPlan of
90107 -- Can't find the dependency. Could be part of core, so just ignore
@@ -92,4 +109,4 @@ checkBadVersions settings buildPlan =
92109 Nothing -> Map.empty
93110 Just bi
94111 | biVersion bi `withinRange` vr -> Map.empty
95− | otherwise -> Map.singleton name $ biVersion bi
112+ | otherwise -> Map.singleton name (biVersion bi, vr)