From: Zac Medico Date: Tue, 18 Dec 2007 06:32:16 +0000 (-0000) Subject: Create a PORTAGE_IUSE variable containing an egrep pattern X-Git-Tag: v2.2_pre1~167 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=11e10ec824550554651409c089ea1095449cb672;p=portage.git Create a PORTAGE_IUSE variable containing an egrep pattern for use by the QA check that's built into useq(). This allows the IUSE logic for this check to be isolated in the python code. svn path=/main/trunk/; revision=8945 --- 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]