Skip to content

Commit

Permalink
Revert "crash on cyclic dependencies in reverse dependency lookup also (
Browse files Browse the repository at this point in the history
#105)" (#109)

This reverts commit f55533c.
  • Loading branch information
justinwoo authored May 24, 2018
1 parent 439c7f6 commit d3c8e1a
Showing 1 changed file with 8 additions and 11 deletions.
19 changes: 8 additions & 11 deletions app/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -193,18 +193,15 @@ performInstall set pkgName PackageInfo{ repo, version } = do
pure pkgDir

getReverseDeps :: PackageSet -> PackageName -> IO [(PackageName, PackageInfo)]
getReverseDeps = getReverseDeps' Set.empty
getReverseDeps db dep =
List.nub <$> foldMap go (Map.toList db)
where
getReverseDeps' seen db dep = List.nub <$> foldMap (go seen db dep) (Map.toList db)
go seen db dep pair@(packageName, PackageInfo {dependencies})
| packageName `Set.member` seen =
exitWithErr ("Cycle in package dependencies at package " <> runPackageName packageName)
| otherwise =
case List.find (== dep) dependencies of
Nothing -> return mempty
Just _ -> do
innerDeps <- getReverseDeps' (Set.insert packageName seen) db packageName
return $ pair : innerDeps
go pair@(packageName, PackageInfo {dependencies}) =
case List.find (== dep) dependencies of
Nothing -> return mempty
Just _ -> do
innerDeps <- getReverseDeps db packageName
return $ pair : innerDeps

getTransitiveDeps :: PackageSet -> [PackageName] -> IO [(PackageName, PackageInfo)]
getTransitiveDeps db deps =
Expand Down

0 comments on commit d3c8e1a

Please sign in to comment.