summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-05-29 11:29:13 +0000
committerZac Medico <zmedico@gentoo.org>2007-05-29 11:29:13 +0000
commitf681dbd0629a46702b57938bf6f8cda7e39e1fd4 (patch)
treeddeac1bc3246bb88ce140d0b255623c835b54629
parentFor bug #180009, add a PORTAGE_RSYNC_INITIAL_TIMEOUT config variable. The de... (diff)
downloadportage-multirepo-f681dbd0629a46702b57938bf6f8cda7e39e1fd4.tar.gz
portage-multirepo-f681dbd0629a46702b57938bf6f8cda7e39e1fd4.tar.bz2
portage-multirepo-f681dbd0629a46702b57938bf6f8cda7e39e1fd4.zip
For bug #179870, add support for cpv:slot in match_from_list() and use it to make config.setcpv() distinguish slot atoms in package.use. (trunk r6657)
svn path=/main/branches/2.1.2/; revision=6658
-rw-r--r--pym/portage.py5
-rw-r--r--pym/portage_dep.py23
2 files changed, 14 insertions, 14 deletions
diff --git a/pym/portage.py b/pym/portage.py
index 03733fa9..7c4fa43e 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -1724,7 +1724,10 @@ class config:
oldpuse = self.puse
self.puse = ""
if self.pusedict.has_key(cp):
- self.pusekey = best_match_to_list(self.mycpv, self.pusedict[cp].keys())
+ cpv_slot = self.mycpv
+ if mydb:
+ cpv_slot += ":" + mydb.aux_get(self.mycpv, ["SLOT"])[0]
+ self.pusekey = best_match_to_list(cpv_slot, self.pusedict[cp].keys())
if self.pusekey:
self.puse = " ".join(self.pusedict[cp][self.pusekey])
if oldpuse != self.puse:
diff --git a/pym/portage_dep.py b/pym/portage_dep.py
index 0b89d9b3..7d9f5e0e 100644
--- a/pym/portage_dep.py
+++ b/pym/portage_dep.py
@@ -568,19 +568,7 @@ def match_from_list(mydep, candidate_list):
if operator is None:
for x in candidate_list:
- xs = pkgsplit(x)
- if xs is None:
- xcpv = dep_getcpv(x)
- if slot is not None:
- xslot = dep_getslot(x)
- if xslot is not None and xslot != slot:
- """ This function isn't given enough information to
- reject atoms based on slot unless *both* compared atoms
- specify slots."""
- continue
- if xcpv != mycpv:
- continue
- elif xs[0] != mycpv:
+ if dep_getkey(x) != mycpv:
continue
mylist.append(x)
@@ -643,5 +631,14 @@ def match_from_list(mydep, candidate_list):
else:
raise KeyError("Unknown operator: %s" % mydep)
+ if slot is not None:
+ candidate_list = mylist
+ mylist = []
+ for x in candidate_list:
+ xslot = dep_getslot(x)
+ if xslot is not None and xslot != slot:
+ continue
+ mylist.append(x)
+
_match_from_list_cache[cache_key] = mylist
return mylist