On Wed, 29 Jan 2014 16:33:04 +0100
Sebastian Luther <sebastianlut...@gmx.de> wrote:

> Hi all,
> 
> as you may have noticed, emerge can in some cases take ages ( >5-10
> minutes) to resolve dependencies these days. This happens when lots
> of backtracking is required to solve slot conflicts and/or to
> schedule slot operator rebuilds. The problem is that the current
> backtracking implementation has to rebuild the entire dependency
> graph from scratch each time it backtracks.
> 
> This series of patches is a first step into fixing this problem.
> 
> What these patches do:
>       Patch 1
>       -------
>       Adds a new data structure called package_tracker. This data
> structure is meant to replace several of the depgraph data structures.
>       It has some new features not present in the existing data
> structures. 1) It can properly deal with several packages in the same
> slot. 2) It supports removal of previously added packages.
>               3) It tracks package conflicts automatically.
>               4) It has a more general concept of conflicts.
> 
>       Not all of the features are used for now, but they will make
> future changes easier.
> 
>       Patch 2-5
>       ---------
>       These patches replace the old data structures with the
> package tracker
> 
>       Patch 6-8
>       ---------
>       These patches fix several issues with emerge output. 6 and 8
> are somewhat independent of the other patches in this series. Patch 7
> introduces a new function used in Patch 10.
> 
>       Patch 9
>       -------
>       New function for patch 10.
> 
>       Patch 10
>       --------
>       This patch builds on top of all the previous patches. It
> introduces two new functions to the depgraph class. A function to
> remove packages that have previously been pulled in and a function to
> solve simple slot conflicts without backtracking.
> 
>       This should resolve most "no parents that aren't satisfied by
> other packages in this slot" slot conflicts.
> 
> You may find these patches on github here:
> https://github.com/few/fews-portage-branch/tree/package_tracker
> 
> Some numbers
> ------------
> 
> My system has quite a number of conflicts that give emerge a hard time
> resolving dependencies.
> 
> -uDN world
> 
> Without the patches:
>       * 11 unsolved slot conflicts
>       * 2 unsolved blockers
>       * takes 5 backtracking steps and then fails
> 
> With the patches:
>       * no unsolved slot conflicts or blockers
>       * takes 7 backtracking steps and then succeeds
> 
> In this case it actually became slower, but was finally able to find
> a solution.
> 
> -e world
> 
> Without the patches:
>       * 5 unsolved slot conflicts
>       * 1 unsolved blocker
>       * takes 23 backtracking steps and then fails
> 
> With the patches:
>       * 1 unsolved slot conflict (From a quick look it looks like
> there really is no solution.)
>       * takes 13 backtracking steps and then fails
> 
> In this case it's a lot faster, but still unacceptably slow.
> The result is improved by solving 4 out of 5 conflicts.
> 
> 
> 

I'm replying to all the series.  I saw no glaring obvious mistakes.

This code is in areas I know little about, but your changes do seem
logical.  Your additional fixes to these patches also look good.

If Mike/Arfrever gives the thumbs up.  They're good to go in my opinion.

-- 
Brian Dolbec <dolsen>


Reply via email to