Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 290818 | Differences between
and this patch

Collapse All | Expand All

(-)a/pym/_emerge/depgraph.py (-1 / +56 lines)
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
- 

Return to bug 290818