diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-12-18 06:49:32 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-12-18 06:49:32 +0000 |
commit | 8a1fb38707052311dcabdcf9409984de2cb889b3 (patch) | |
tree | 3874644c9429c871aa20e957188dbf9ccf270789 /pym | |
parent | 084d2755b44f86dab83ac2cbd3256c6ee7ef1bbe (diff) | |
download | portage-8a1fb38707052311dcabdcf9409984de2cb889b3.tar.gz portage-8a1fb38707052311dcabdcf9409984de2cb889b3.tar.bz2 portage-8a1fb38707052311dcabdcf9409984de2cb889b3.zip |
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
Diffstat (limited to 'pym')
-rw-r--r-- | pym/portage.py | 40 |
1 files 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) |