Hi!
While reading over the new resolver code during the last few weeks I
discovered several code pieces looking suspicious. I do not yet have
reproducers for all of them but they deserve further examination.
If you feel responsible for the affected code parts or otherwise interested
in picking up one of the cases please drop a note to the mailing list.
Otherwise I'll have a deeper look into this issues myself over the next weeks.
1. Conflict handling
I only found the conflict checking code in _checkInstall (depsolve.py, line
968++). It just checks the conflicts in new pkgs against all other pkgs and
even that doesn't work for step by step resolving. In fact all conflicts
needs to be checked against the new pkgs including those that are already
installed. I guess there is some completely new code needed.
2. Conflicting Obsoletes
Obsoletes in already installed pkgs have to be treated as conflicts. Can
probably solved easily when writing the code for 1.
3. Remove Pkgs from Transaction
If someone removes a previously "installed" Pkgs from the transaction info
this will break requirements from other pkgs that got resolved previously.
Scenario is:
Install A p:a, B r:a
Resolve: ok, A and B in self.dcobj.already_seen
Remove A (by plugin or to fix other unresolved deps of A)
Resolve: nothing to do as B got already checked - should be: unresolved dep
B r:a
Solution would be to finally move the bookkeeping to the transaction info
class. I'd even suggest to move the whole tscheck over. tsInfo.check()
sounds much more resonable as depsolver._mytscheck() in my ears. But that's
just personal taste...
4. Outdated cache
depsolver.deps gets outdated if a pkg that was already found gets removed.
Scenario is the same as above except that the last line is replaced by:
Install C r:a
Resolve: OK - should be: unresolved dep C r:a
Easy fix would be to drop caching at that place completely. Better solution
would be to move caching into the Rpm- and SqliteSack and filter these
results to the actual tsInfo.
Shall I open any bugzilla entries?
Have fun
Florian
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel