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

Reply via email to