Requirement violations in rc files are not that rare than it would be expected: REQUIRE and BEFORE keywords allow an easy to make but hard to debug requirement loop. For now rcorder emits an error when it faces the last chain link of this loop but unable to track it as a whole.
This patch introduces two features to make loop eliminating process a lot easier:
- in normal mode rcorder now prints full loop, not just the last link into stderr;
- the same loops can be observed by generating GraphViz-compatible execution tree. Nodes on this graph represents providers, dependencies are drawn as edges. BEFORE requirement is drawn as a dashed line and all nodes that were making issues while dependency resolution are clearly marked.
Another feature of this Revision is support for grouping different rc scripts by the moment when all requirements needed for theirs startup are met. This patch does not include corresponding support for the feature in /etc/rc and it will go separately.