Lines 2273-2282
class depgraph(object):
Link Here
|
2273 |
debug = "--debug" in self._frozen_config.myopts |
2273 |
debug = "--debug" in self._frozen_config.myopts |
2274 |
onlydeps = "--onlydeps" in self._frozen_config.myopts |
2274 |
onlydeps = "--onlydeps" in self._frozen_config.myopts |
2275 |
myroot = self._frozen_config.target_root |
2275 |
myroot = self._frozen_config.target_root |
|
|
2276 |
root_config = self._frozen_config.roots[myroot] |
2276 |
pkgsettings = self._frozen_config.pkgsettings[myroot] |
2277 |
pkgsettings = self._frozen_config.pkgsettings[myroot] |
2277 |
pprovideddict = pkgsettings.pprovideddict |
2278 |
pprovideddict = pkgsettings.pprovideddict |
2278 |
virtuals = pkgsettings.getvirtuals() |
2279 |
virtuals = pkgsettings.getvirtuals() |
2279 |
args = self._dynamic_config._initial_arg_list[:] |
2280 |
args = self._dynamic_config._initial_arg_list[:] |
|
|
2281 |
|
2282 |
for pkg in self._dynamic_config._runtime_pkg_mask: |
2283 |
#Add slot atoms to _initial_arg_list for packages |
2284 |
#where updating might solve a conflict, but the |
2285 |
#package wouldn't be pulled in otherwise. |
2286 |
#Note that this can't result in strange errors |
2287 |
#being displayed to the user, because if the backtracker |
2288 |
#gives up, the resolution is done without _runtime_pkg_mask |
2289 |
#and the original error gets displayed. |
2290 |
if "force update" in self._dynamic_config._runtime_pkg_mask[pkg]: |
2291 |
args.append( \ |
2292 |
AtomArg(atom=pkg.slot_atom, root_config=root_config)) |
2293 |
|
2280 |
for root, atom in chain(self._rebuild.rebuild_list, |
2294 |
for root, atom in chain(self._rebuild.rebuild_list, |
2281 |
self._rebuild.reinstall_list): |
2295 |
self._rebuild.reinstall_list): |
2282 |
args.append(AtomArg(arg=atom, atom=atom, |
2296 |
args.append(AtomArg(arg=atom, atom=atom, |
Lines 4772-4777
class depgraph(object):
Link Here
|
4772 |
if unresolved_blocks: |
4786 |
if unresolved_blocks: |
4773 |
self._dynamic_config._unsolvable_blockers.add(blocker, parent) |
4787 |
self._dynamic_config._unsolvable_blockers.add(blocker, parent) |
4774 |
|
4788 |
|
|
|
4789 |
#Check if all parents of the package(s) that is/are blocked by this blocker |
4790 |
#are installed. If this is true, the blocked package(s) might not be |
4791 |
#pulled into the tree if we force updates for the parent packages. |
4792 |
pkgs_forced_to_update = set() |
4793 |
all_parents_installed = True |
4794 |
for blocked_pkg in blocked_initial: |
4795 |
for ppkg, patom in self._dynamic_config._parent_atoms.get(blocked_pkg): |
4796 |
if not ppkg.installed: |
4797 |
all_parents_installed = False |
4798 |
pkgs_forced_to_update.add(ppkg) |
4799 |
|
4800 |
if all_parents_installed: |
4801 |
if "--debug" in self._frozen_config.myopts: |
4802 |
msg = [] |
4803 |
msg.append("") |
4804 |
msg.append("") |
4805 |
msg.append("backtracking due to conflicting packages:") |
4806 |
msg.append(" blocker parent: %s" % blocker) |
4807 |
msg.append(" root: %s" % blocker.root) |
4808 |
msg.append(" atom: %s" % blocker.atom) |
4809 |
for blocked_pkg in blocked_initial: |
4810 |
msg.append(" blocked package: %s" % blocked_pkg) |
4811 |
for ppkg, patom in self._dynamic_config._parent_atoms.get(blocked_pkg): |
4812 |
msg.append(" masked parent: %s" % ppkg) |
4813 |
msg.append("") |
4814 |
writemsg_level("".join("%s\n" % l for l in msg), |
4815 |
noiselevel=-1, level=logging.DEBUG) |
4816 |
|
4817 |
for ppkg in pkgs_forced_to_update: |
4818 |
if ppkg in self._dynamic_config._runtime_pkg_mask: |
4819 |
if "--debug" in self._frozen_config.myopts: |
4820 |
writemsg( |
4821 |
"!!! backtracking loop detected: %s %s\n" % \ |
4822 |
(ppkg, |
4823 |
self._dynamic_config._runtime_pkg_mask[ |
4824 |
ppkg]), noiselevel=-1) |
4825 |
self._dynamic_config._runtime_pkg_mask.setdefault( |
4826 |
ppkg, {})["force update"] = \ |
4827 |
set([(ppkg, ppkg.root, blocker.atom)]) |
4828 |
|
4829 |
self._dynamic_config._need_restart = True |
4830 |
|
4775 |
return True |
4831 |
return True |
4776 |
|
4832 |
|
4777 |
def _accept_blocker_conflicts(self): |
4833 |
def _accept_blocker_conflicts(self): |
4778 |
- |
|
|