So, initially I thought that the best way for the resolver to find the best path would be for each node in the depgraph, to instantiate a new ‘resolver’ object.
Now, I’m not so sure. I think the entire depgraph ought to be built using associative arrays.
In other words, package A is/contains a touple pointing to C and W (it’s dependencies) flagged as DEPS, and D and R flagged as REVDEPS.
The reason why I was thinking the first idea was because (in my mind) it would’ve been easier to linearize. Brian’s code is not bad at that currently, so I’ve switched focus from trying to find the best install path, to simply building a graph data structure (which, it occurred to me, is a better idea anyway. The graph needs to be built before it can be examined/scored 😉 )
Now, that said, it should make revdeps with slotting easier too. A package that depends on foo can keep it’s dependency without being changed. We don’t need to rebuild the graph in that case if there aren’t version restrictions. It lets the node know that there are 2 versions of a package attached to it.
cwax njiteyar zwefs pljuqodie usazgojwq wuhfpk hmrnve