diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-05-29 11:26:33 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-05-29 11:26:33 +0000 |
commit | 9709c10caf97845bd91b1f4eef7ece28ca88fb76 (patch) | |
tree | 655a40e2434657780d6b7d90bff15c0ada37754d | |
parent | f80190b8492047950b3d8096e8a41a32fa97353e (diff) | |
download | portage-9709c10caf97845bd91b1f4eef7ece28ca88fb76.tar.gz portage-9709c10caf97845bd91b1f4eef7ece28ca88fb76.tar.bz2 portage-9709c10caf97845bd91b1f4eef7ece28ca88fb76.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.
svn path=/main/trunk/; revision=6657
-rw-r--r-- | pym/portage/__init__.py | 5 | ||||
-rw-r--r-- | pym/portage/dep.py | 23 |
2 files changed, 14 insertions, 14 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 242bfb1b7..b6fa9535d 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -1737,7 +1737,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 98dda59f2..3f6b2a0ce 100644 --- a/pym/portage/dep.py +++ b/pym/portage/dep.py @@ -654,19 +654,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) @@ -729,5 +717,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 |