summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/ebuild.sh16
-rw-r--r--pym/portage/__init__.py15
2 files changed, 19 insertions, 12 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index 25638be66..e88f73442 100755
--- a/bin/ebuild.sh
+++ b/bin/ebuild.sh
@@ -138,15 +138,10 @@ useq() {
fi
# Make sure we have this USE flag in IUSE
- if ! hasq "${u}" ${IUSE} ${E_IUSE} && \
- ! hasq "+${u}" ${IUSE} ${E_IUSE} && \
- ! hasq "-${u}" ${IUSE} ${E_IUSE} && \
- ! hasq "${u}" ${PORTAGE_ARCHLIST} selinux && \
- [[ ${u} != arch_* ]] && \
- [[ ${u} != elibc_* ]] && \
- [[ ${u} != kernel_* ]] && \
- [[ ${u} != userland_* ]] ; then
- eqawarn "QA Notice: USE Flag '${u}' not in IUSE for ${CATEGORY}/${PF}"
+ if [[ ${EBUILD_PHASE} != depend ]] && [[ -n ${PORTAGE_IUSE} ]] ; then
+ echo "${u}" | egrep -q "${PORTAGE_IUSE}" || \
+ eqawarn "QA Notice: USE Flag '${u}' not" \
+ "in IUSE for ${CATEGORY}/${PF}"
fi
if hasq ${u} ${USE} ; then
@@ -1367,7 +1362,8 @@ READONLY_EBUILD_METADATA="DEPEND DESCRIPTION
READONLY_PORTAGE_VARS="D EBUILD EBUILD_PHASE \
EBUILD_SH_ARGS EMERGE_FROM FILESDIR PORTAGE_BINPKG_FILE \
- PORTAGE_BIN_PATH PORTAGE_PYM_PATH PORTAGE_MUTABLE_FILTERED_VARS \
+ PORTAGE_BIN_PATH PORTAGE_IUSE \
+ PORTAGE_PYM_PATH PORTAGE_MUTABLE_FILTERED_VARS \
PORTAGE_SAVED_READONLY_VARS PORTAGE_TMPDIR T WORKDIR"
PORTAGE_SAVED_READONLY_VARS="A CATEGORY P PF PN PR PV PVR"
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 9e2f424ce..1cdbda2c8 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -881,6 +881,7 @@ class config(object):
"PORTAGE_BUILDDIR", "PORTAGE_COLORMAP",
"PORTAGE_CONFIGROOT", "PORTAGE_DEBUG", "PORTAGE_DEPCACHEDIR",
"PORTAGE_GID", "PORTAGE_INST_GID", "PORTAGE_INST_UID",
+ "PORTAGE_IUSE",
"PORTAGE_LOG_FILE", "PORTAGE_MASTER_PID",
"PORTAGE_PYM_PATH", "PORTAGE_REPO_NAME", "PORTAGE_RESTRICT",
"PORTAGE_TMPDIR", "PORTAGE_WORKDIR_MODE",
@@ -2396,12 +2397,12 @@ class config(object):
iuse_implicit = set(iuse)
# Flags derived from ARCH.
- if arch:
- iuse_implicit.add(arch)
+ iuse_implicit.update(self.get("PORTAGE_ARCHLIST", "").split())
# Flags derived from USE_EXPAND_HIDDEN variables
# such as ELIBC, KERNEL, and USERLAND.
use_expand_hidden = self.get("USE_EXPAND_HIDDEN", "").split()
+ use_expand_hidden_raw = use_expand_hidden
if use_expand_hidden:
use_expand_hidden = re.compile("^(%s)_.*" % \
("|".join(x.lower() for x in use_expand_hidden)))
@@ -2413,6 +2414,16 @@ class config(object):
iuse_implicit.update(x for x in self.useforce \
if x not in self.usemask)
+ iuse_grep = iuse_implicit.copy()
+ if use_expand_hidden_raw:
+ for x in use_expand_hidden_raw:
+ iuse_grep.add(x.lower() + "_.*")
+ if iuse_grep:
+ iuse_grep = "^(%s)$" % "|".join(sorted(iuse_grep))
+ else:
+ iuse_grep = ""
+ self.configdict["pkg"]["PORTAGE_IUSE"] = iuse_grep
+
usesplit = [x for x in usesplit if \
x in iuse_implicit and \
x not in self.usemask]