package opam-solver
Module type OpamActionGraph.SIGSource
include OpamParallel.GRAPH with type V.t = package OpamTypes.action
Reduces a graph of atomic or concrete actions (only removals, installs and builds) by turning removal+install to reinstalls or up/down-grades, best for display. Dependency ordering won't be as accurate though, as there is no proper ordering of (reinstall a, reinstall b) if b depends on a. The resulting graph contains at most one action per package name.
There is no guarantee however that the resulting graph is acyclic.
Expand install actions, adding a build action preceding them. The argument noop_remove is a function that should return `true` for package where the `remove` action is known not to modify the filesystem (such as `conf-*` package). The argument sources_needed is a function that should return `true` for packages that require fetching sources (packages that do not require it are typically up-to-date pins or "in-place" builds).