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

Collapse All | Expand All

(-)bin/emerge (+24 lines)
Lines 1520-1525 Link Here
1520
								self.blocker_parents[blocker] = myparents
1520
								self.blocker_parents[blocker] = myparents
1521
							myparents.add(myparent)
1521
							myparents.add(myparent)
1522
1522
1523
		modified_slots = {}
1524
		if self.blocker_parents:
1525
			for myroot in self.trees:
1526
				myslots = {}
1527
				modified_slots[myroot] = myslots
1528
				final_db = self.mydbapi[myroot]
1529
				for mycpv, mynode in self.pkg_node_map[myroot].iteritems():
1530
					mytype, myroot, mycpv, mystatus = mynode
1531
					if mystatus == "merge":
1532
						slot_atom = "%s:%s" % (portage.dep_getkey(mycpv),
1533
							final_db.aux_get(mycpv, ["SLOT"])[0])
1534
						modified_slots[myroot][slot_atom] = mycpv
1535
1523
		for blocker in self.blocker_parents.keys():
1536
		for blocker in self.blocker_parents.keys():
1524
			mytype, myroot, mydep = blocker
1537
			mytype, myroot, mydep = blocker
1525
			initial_db = self.trees[myroot]["vartree"].dbapi
1538
			initial_db = self.trees[myroot]["vartree"].dbapi
Lines 1544-1549 Link Here
1544
				pdbapi = self.trees[proot][self.pkg_tree_map[ptype]].dbapi
1557
				pdbapi = self.trees[proot][self.pkg_tree_map[ptype]].dbapi
1545
				pslot = pdbapi.aux_get(pcpv, ["SLOT"])[0]
1558
				pslot = pdbapi.aux_get(pcpv, ["SLOT"])[0]
1546
				pslot_atom = "%s:%s" % (portage.dep_getkey(pcpv), pslot)
1559
				pslot_atom = "%s:%s" % (portage.dep_getkey(pcpv), pslot)
1560
				parent_static = pslot_atom not in modified_slots[proot]
1547
				unresolved_blocks = False
1561
				unresolved_blocks = False
1548
				depends_on_order = set()
1562
				depends_on_order = set()
1549
				for cpv in blocked_initial:
1563
				for cpv in blocked_initial:
Lines 1554-1559 Link Here
1554
						# node matters.  In any case, this particular block is
1568
						# node matters.  In any case, this particular block is
1555
						# automatically resolved.
1569
						# automatically resolved.
1556
						continue
1570
						continue
1571
					if parent_static and \
1572
						slot_atom not in modified_slots[myroot]:
1573
						# This blocker will be handled the next time that a
1574
						# merge of either package is triggered.
1575
						continue
1557
					if pstatus == "merge" and \
1576
					if pstatus == "merge" and \
1558
						slot_atom not in blocked_slots_final.values():
1577
						slot_atom not in blocked_slots_final.values():
1559
						upgrade_matches = final_db.match(slot_atom)
1578
						upgrade_matches = final_db.match(slot_atom)
Lines 1573-1578 Link Here
1573
						# The parent blocks itself, so the merge order does not
1592
						# The parent blocks itself, so the merge order does not
1574
						# need to be enforced.
1593
						# need to be enforced.
1575
						continue
1594
						continue
1595
					if parent_static and \
1596
						slot_atom not in modified_slots[myroot]:
1597
						# This blocker will be handled the next time that a
1598
						# merge of either package is triggered.
1599
						continue
1576
					# None of the above blocker resolutions techniques apply,
1600
					# None of the above blocker resolutions techniques apply,
1577
					# so apparently this one is unresolvable.
1601
					# so apparently this one is unresolvable.
1578
					unresolved_blocks = True
1602
					unresolved_blocks = True

Return to bug 157823