Libzypp/Solver/Branching
From openSUSE
[edit]
Branching
Branching is used to compute several solutions in case if multiple possibilities exist to solve a specific dependency (resp. solver task).
- 1. run (part 1) initial
The initial queue contains four requests which will be proceeded step by step by the solver. The ResolverContext is empty which will contain the status of affected resolvables ( e.g. packages).
- 1. run (part 1) result
The result of part 1 is clear for deleting foo2 and installing foo and foo3. For the requirement of bar there are two providers which can fulfill this requirement. So the solver will generate a QueueItemBranch which contains one QueueItemInstall for each provider.
- 1. run (part 2) result
This QueueItemBranch will be "branched" into two different ResolverQueues with one QueueItemInstall. The branches which will be proceeded independent of eachother. - 2. run result
The result will be two ResolverContext which repesents two solutions. Each ResolverContext points to the same parent ResolverContext which contains common results of former solver runs.


