Skip to content
  • Edsko de Vries's avatar
    Fine-grained dependencies in solver output · 6b77ea23
    Edsko de Vries authored
    In this commit we modify the _output_ of the modular solver (CP, the modular's
    solver internal version of ConfiguredPackage) to have fine-grained dependency.
    This doesn't yet modify the rest of cabal-install, so once we translate from CP
    to ConfiguredPackage we still lose the distinctions between different kinds of
    dependencies; this will be the topic of the next commit.
    
    In the modular solver (and elsewhere) we use Data.Graph to represent the
    dependency graph (and the reverse dependency graph). However, now that we have
    more fine-grained dependencies, we really want an _edge-labeled_ graph, which
    unfortunately it not available in the `containers` package. Therefore I've
    written a very simple wrapper around Data.Graph that supports edge labels; we
    don't need many fancy graph algorithms, and can still use Data.Graph on these
    edged graphs when we want (by calling them on the underlying unlabeled graph),
    so adding a dependency on `fgl` does not seem worth it.
    6b77ea23