@@ -9,22 +9,23 @@ import Stackage.Types
99-- their dependencies.
1010narrowPackageDB :: PackageDB
1111 -> Set PackageName
12− -> IO (Map PackageName Version)
12+ -> IO (Map PackageName (Version, [PackageName]))
1313narrowPackageDB (PackageDB pdb) =
14− loop Map.empty . Set.map ((,) True)
14+ loop Map.empty . Set.map ((,) [])
1515 where
1616 loop result toProcess =
1717 case Set.minView toProcess of
1818 Nothing -> return result
19− Just ((isOrig, p), toProcess') ->
19+ Just ((users, p), toProcess') ->
2020 case Map.lookup p pdb of
2121 Nothing
22− | isOrig -> error $ "Unknown package: " ++ show p
22+ | null users -> error $ "Unknown package: " ++ show p
2323 | otherwise -> loop result toProcess'
2424 Just pi -> do
25− let result' = Map.insert p (piVersion pi) result
26− loop result' $ Set.foldl' (addDep result') toProcess' $ piDeps pi
27− addDep result toProcess p =
25+ let users' = p:users
26+ result' = Map.insert p (piVersion pi, users) result
27+ loop result' $ Set.foldl' (addDep users' result') toProcess' $ piDeps pi
28+ addDep users result toProcess p =
2829 case Map.lookup p result of
29− Nothing -> Set.insert (False, p) toProcess
30+ Nothing -> Set.insert (users, p) toProcess
3031 Just{} -> toProcess