summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-10-05 06:50:05 +0000
committerZac Medico <zmedico@gentoo.org>2006-10-05 06:50:05 +0000
commit6516b0319d62701bd17f7c78ebb677b7f0508f26 (patch)
tree79b2139b9a34a8a6f7958629dd7dc51e233b8785
parentAdd support for slot based dep matching in all dbapi derived classes. The su... (diff)
downloadportage-idfetch-6516b0319d62701bd17f7c78ebb677b7f0508f26.tar.gz
portage-idfetch-6516b0319d62701bd17f7c78ebb677b7f0508f26.tar.bz2
portage-idfetch-6516b0319d62701bd17f7c78ebb677b7f0508f26.zip
For bug #4698, use slot deps to ensure that all installed slots are automatically updated.
svn path=/main/trunk/; revision=4595
-rwxr-xr-xbin/emerge13
1 files changed, 12 insertions, 1 deletions
diff --git a/bin/emerge b/bin/emerge
index 90c1778b..d2d3e768 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -1307,6 +1307,7 @@ class depgraph:
return retlist
def xcreate(self,mode="system"):
+ vardb = self.trees[self.target_root]["vartree"].dbapi
world_problems = False
if mode=="system":
mylist = getlist(self.settings, "system")
@@ -1328,10 +1329,20 @@ class depgraph:
newlist = []
for atom in mylist:
- if portage.dep_getkey(atom).split("/")[-1] == "portage":
+ mykey = portage.dep_getkey(atom)
+ if portage.catsplit(mykey)[-1] == "portage":
newlist.insert(0, atom)
else:
newlist.append(atom)
+ """Make sure all installed slots are updated when possible.
+ Do this with --emptytree also, to ensure that all slots are
+ remerged."""
+ myslots = set()
+ for cpv in vardb.match(mykey):
+ myslots.add(vardb.aux_get(cpv, ["SLOT"])[0])
+ if len(myslots) > 1:
+ for myslot in myslots:
+ newlist.append("%s:%s" % (mykey, myslot))
mylist = newlist
missing_atoms = []