From 03e6dd20e5c1a30540e1a17eabcd038a89254730 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 6 Aug 2010 18:06:59 -0700 Subject: Fix _getMissingProperties() package.properties handling so that settings from more specific atoms override those of less specific atoms. --- pym/portage/package/ebuild/config.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'pym') diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py index 344810543..0540151a0 100644 --- a/pym/portage/package/ebuild/config.py +++ b/pym/portage/package/ebuild/config.py @@ -1966,10 +1966,22 @@ class config(object): cp = cpv_getkey(cpv) cpdict = self._ppropertiesdict.get(cp) if cpdict: - accept_properties = list(self._accept_properties) cpv_slot = "%s:%s" % (cpv, metadata["SLOT"]) - for atom in match_to_list(cpv_slot, list(cpdict)): - accept_properties.extend(cpdict[atom]) + keys = list(cpdict) + pproperties_list = [] + while keys: + bestmatch = best_match_to_list(cpv_slot, keys) + if bestmatch: + keys.remove(bestmatch) + pproperties_list.append(cpdict[bestmatch]) + else: + break + if pproperties_list: + # reverse, so the most specific atoms come last + pproperties_list.reverse() + accept_properties = list(self._accept_properties) + for x in pproperties_list: + accept_properties.extend(x) properties = set(flatten(use_reduce(paren_reduce( metadata["PROPERTIES"]), matchall=1))) -- cgit v1.2.3-1-g7c22