Libzypp/Solver/Branching

From openSUSE


Branching

Branching is used to compute several solutions in case if multiple possibilities exist to solve a specific dependency (resp. solver task).

Processing queued tasks and branches
Processing queued tasks and branches
  • 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.