From 8a1fb38707052311dcabdcf9409984de2cb889b3 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 18 Dec 2007 06:49:32 +0000 Subject: [PATCH] Bug #176467 - Filter out USE flags that aren't part of IUSE. Some flags are considered to be implicit members of IUSE: * Flags derived from ARCH * Flags derived from USE_EXPAND_HIDDEN variables * Forced flags, such as those from {,package}use.force (trunk r8944) svn path=/main/branches/2.1.2/; revision=8947 --- pym/portage.py | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/pym/portage.py b/pym/portage.py index 9cf99b196..eed8dd158 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -2362,11 +2362,41 @@ class config: # USE_EXPAND context. pass - # Pre-Pend ARCH variable to USE settings so '-*' in env doesn't kill arch. - if self.configdict["defaults"].has_key("ARCH"): - if self.configdict["defaults"]["ARCH"]: - if self.configdict["defaults"]["ARCH"] not in usesplit: - usesplit.insert(0,self.configdict["defaults"]["ARCH"]) + arch = self.configdict["defaults"].get("ARCH") + if arch and arch not in usesplit: + usesplit.append(arch) + + # Filter out USE flags that aren't part of IUSE. Some + # flags are considered to be implicit members of IUSE: + # + # * Flags derived from ARCH + # * Flags derived from USE_EXPAND_HIDDEN variables + # * Forced flags, such as those from {,package}use.force + + if self.mycpv: + iuse_implicit = set(iuse) + + # Flags derived from ARCH. + if arch: + iuse_implicit.add(arch) + + # Flags derived from USE_EXPAND_HIDDEN variables + # such as ELIBC, KERNEL, and USERLAND. + use_expand_hidden = self.get("USE_EXPAND_HIDDEN", "").split() + if use_expand_hidden: + use_expand_hidden = re.compile("^(%s)_.*" % \ + ("|".join(x.lower() for x in use_expand_hidden))) + for x in usesplit: + if use_expand_hidden.match(x): + iuse_implicit.add(x) + + # Flags that have been forced. + iuse_implicit.update(x for x in self.useforce \ + if x not in self.usemask) + + usesplit = [x for x in usesplit if \ + x in iuse_implicit and \ + x not in self.usemask] usesplit.sort() self.configlist[-1]["USE"]= " ".join(usesplit) -- 2.26.2