Hi!

I synced my personal repository to the new, shiny, yum git repository. The web interface can still be found at:

http://www.jur-linux.org/git/?p=yum-ffesti.git;a=summary

It now contains tree branches:

 * master - this is yum upstream
  -> ffesti - this contains my search/depcheck changes
   -> resolveDeps - experimental next step - see below

for testing you can "git clone git://www.jur-linux.org/git-data/yum-ffesti"

use "git branch -a" to see the branches and
"git checkout origin/ffesti" to switch to my "old" change set and
"git checkout resolveDeps" to switch back

As all the patches got moved around quite a bit please tell me if anything breaks. I intend to continuously rebase these branches to yum head.


resolveDeps refactoring
=======================

I have to admit that I did not have a look into the depsolving part of the Depsolver. After accelerating the depcheck code I was wondering why performance still was not where it should be in the end. Some issues were very obvious like calling the global checks (checkFilerequies, checkConflicts) too often. So it was an natural step to break up _mytscheck to get the Requirement checks into an own loop. This would also allow changing the return values of the .check* methods to something less brain dead - like package objects instead of NEVR tuples (yes, there is no A). It turned out that the depsolving part of the depsolver is over complicated and doing a lot of additional searches while trying to regain the information that has been simply dropped by the depcheck code. Sadly this was necessary in the part when yum was still using the rpmlib but now this doesn't make sense anymore.

The current patch set is still experimantal. I moved out some code into ._update() to update pkgs to resolve problems. It is reused in the new processConflict method where it is likely to fail. At a lot of other places I used a chain saw to get the code roughly into right shape. So don't expect something polished. I guess some callbacks and logging message are broke especially the ones related to the depcheck loop that doesn't exist anymore. Nevertheless performance has further increased. Here are the numbers in comparison to the rpmlib based yum (3.0.3) an 3.2 branch yum similar to the one shipped with F7 and pyrpm. New stats are in the last column.


Real time (seconds)

Operation                | 3.0.3  | 07/05/07| pyrpm  |07/07/24
--------------------------------------------------------------
Warmup: Full install     | 653.51 | 1064.35 | 147.23 | 100.42
Resolve normal install   |  40.59 |  134.11 |   8.04 |  12.14
Resolve full install     | 477.67 | 1093.57 |  51.01 |  65.48
Resolve install [a-k]*   | 313.56 |  887.40 |  33.52 |  46.84
Resolve empty update     |   6.91 |    6.57 |  13.36 |   5.42
Resolve update libgnome  |   3.34 |    2.57 |   7.51 |   5.67
Resolve big update       |  33.04 |   45.56 |  24.81 |  14.69
Resolve erase glibc      |  29.83 |   37.72 |  30.95 |  34.56
Warmup: Dist upgrade     |  81.42 |   40.67 | 108.50 |  11.34
Resolve dist upgrade     |  52.07 |   40.29 |  27.20 |  10.80

depcheck Refactoring
====================

Now that the git infrastructure is in place it is time to decide what to do with my search/depcheck code. From my perspective there are only two minor issues left:

 * check if local rpms are detected correctly
  * this is more or less a policy issue - do pkg objects have to be from
    the existing pkg classes depending on their sources
 * Check setAsDep() call in checkInstall
  * I think the code is more correct than it was. May be someone wants to
    speak up against that?

Main thing missing is a review for inclusion. Yeah, it's quite some code. If someone wants to start I'd be glad to offer any help - be it about the code, where to start or how to handle git. Any volunteers?

Florian

_______________________________________________
Yum-devel mailing list
Yum-devel@linux.duke.edu
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to