From: Jason Stubbs <jstubbs@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Subject: Re: [gentoo-dev] Dirt: To shove under the rug or not shove under the rug? (aka another round of USE_EXPAND)
Date: Wed, 28 Sep 2005 12:13:53 +0900 [thread overview]
Message-ID: <200509281213.53108.jstubbs@gentoo.org> (raw)
In-Reply-To: <200509281023.50075.jstubbs@gentoo.org>
[-- Attachment #1: Type: text/plain, Size: 982 bytes --]
On Wednesday 28 September 2005 10:23, Jason Stubbs wrote:
> On Wednesday 28 September 2005 00:35, Donnie Berkholz wrote:
> > What I have done in my ebuilds using USE_EXPAND is add extra IUSE-like
> > variables, for example:
> >
> > IUSE_VIDEO_CARDS="radeon sis mga"
> > IUSE_INPUT_DEVICES="synaptics wacom"
> >
> > for `use video_cards_sis` etc..
> >
> > This would allow for possible QA checks. Potentially, portage could look
> > through and display things at --verbose like:
> >
> > [ebuild N ] x11-base/x11-drm-20050807 +dga -nls VIDEO_CARDS="+sis
> > +mga -radeon" 538 kB [2]
>
> This output is exactly what my patch gives, but it currently works by
> inspecting IUSE. However, it should be possible to indirectly pull the
> information from the above flags instead. Adding support for a
> USE_EXPAND_HIDDEN var should cover USERLAND and friends as well (although
> those would still need to be defined in IUSE_USERLAND="...")
<warcraft voice>Job's done!</warcraft voice>
[-- Attachment #2: verbose-USE_EXPAND-support.patch --]
[-- Type: text/x-diff, Size: 6110 bytes --]
diff -uNr 2.0-original/bin/ebuild.sh 2.0/bin/ebuild.sh
--- 2.0-original/bin/ebuild.sh 2005-09-26 11:48:16.000000000 +0900
+++ 2.0/bin/ebuild.sh 2005-09-28 11:32:47.000000000 +0900
@@ -129,7 +129,7 @@
local x
# Make sure we have this USE flag in IUSE
- if ! hasq "${u}" ${IUSE} ${E_IUSE} && ! hasq "${u}" ${PORTAGE_ARCHLIST} selinux; then
+ if ! hasq "${u}" ${IUSE} ${E_IUSE} ${IUSE_EXPAND} && ! hasq "${u}" ${PORTAGE_ARCHLIST} selinux; then
echo "QA Notice: USE Flag '${u}' not in IUSE for ${CATEGORY}/${PF}" >&2
fi
@@ -1870,6 +1870,17 @@
fi
;;
depend)
+ # Create IUSE_EXPAND from child variables
+ for EXPAND_VAR in $USE_EXPAND; do
+ EXPAND_NAME="IUSE_${EXPAND_VAR}"
+ EXPAND_VAL="${!EXPAND_NAME}"
+ [ -z "${EXPAND_VAL}" ] && continue
+ LOWER_VAR="`echo ${EXPAND_VAR} | awk '{print tolower($0)}'`"
+ for VAL in ${EXPAND_VAL}; do
+ IUSE_EXPAND="${IUSE_EXPAND} ${LOWER_VAR}_${VAL}"
+ done
+ done
+
export SANDBOX_ON="0"
set -f
@@ -1899,13 +1910,13 @@
echo `echo "$PDEPEND"` >> $dbkey
echo `echo "$PROVIDE"` >> $dbkey
echo `echo "${EAPI:-0}"` >> $dbkey
+ echo `echo "${IUSE_EXPAND}"` >> $dbkey
echo `echo "$UNUSED_01"` >> $dbkey
echo `echo "$UNUSED_02"` >> $dbkey
echo `echo "$UNUSED_03"` >> $dbkey
echo `echo "$UNUSED_04"` >> $dbkey
echo `echo "$UNUSED_05"` >> $dbkey
echo `echo "$UNUSED_06"` >> $dbkey
- echo `echo "$UNUSED_07"` >> $dbkey
set +f
#make sure it is writable by our group:
exit 0
diff -uNr 2.0-original/bin/emerge 2.0/bin/emerge
--- 2.0-original/bin/emerge 2005-09-27 13:16:09.000000000 +0900
+++ 2.0/bin/emerge 2005-09-28 12:09:49.000000000 +0900
@@ -1466,6 +1466,31 @@
if "--verbose" in myopts:
overlays = string.split(portage.settings['PORTDIR_OVERLAY'])
+ use_expand = portage.settings["USE_EXPAND"].lower().split()
+ use_expand_hidden = portage.settings["USE_EXPAND_HIDDEN"].lower().split()
+ for exp in use_expand[:]:
+ if exp in use_expand_hidden:
+ use_expand.remove(exp)
+
+ def create_use_string(iuse, cur_use, old_use, masked_use):
+ usestr=""
+ for flag in iuse:
+ usechange=""
+ if old_use:
+ if (flag in old_use and flag not in cur_use) or (flag not in old_use and flag in cur_use):
+ usechange="*"
+
+ if flag in cur_use:
+ if usechange == "*":
+ substr = green("+"+flag)
+ else:
+ substr = red("+"+flag)
+ elif flag in masked_use:
+ substr = blue("(-"+flag+")")
+ else:
+ substr = blue("-"+flag)
+ usestr += substr + usechange + " "
+ return usestr
if "--tree" in myopts:
mylist.reverse()
@@ -1558,18 +1583,29 @@
try:
if x[0] == "binary":
iuse_split = string.split(portage.db["/"]["bintree"].dbapi.aux_get(x[2],["IUSE"])[0])
+ iuse_expand_split = portage.db["/"]["bintree"].dbapi.aux_get(x[2],["IUSE_EXPAND"])[0].split()
elif x[0] == "ebuild":
iuse_split = string.split(portage.portdb.aux_get(x[2],["IUSE"])[0])
+ iuse_expand_split = portage.portdb.aux_get(x[2],["IUSE_EXPAND"])[0].split()
else:
iuse_split = []
+ iuse_expand_split = []
except SystemExit, e:
raise # Needed else can't exit
except:
portage.writemsg("!!! Error getting IUSE (report this to bugs.gentoo.org)\n")
portage.writemsg("!!! %s\n" % x)
iuse_split = []
+ iuse_expand_split = []
+
+ iuse_split = portage.unique_array(iuse_split)
iuse_split.sort()
- old_use=None
+ iuse_expand_split = portage.unique_array(iuse_expand_split)
+ iuse_expand_split.sort()
+
+ cur_use = self.applied_useflags[x[2]]
+
+ old_use = []
if myoldbest:
pkg=myoldbest
else:
@@ -1581,24 +1617,25 @@
raise # Needed else can't exit
except:
pass
- iuse=""
- now_use=self.applied_useflags[x[2]]
- for ebuild_iuse in portage_util.unique_array(iuse_split):
- usechange=""
- if old_use:
- if (old_use.count(ebuild_iuse) and not now_use.count(ebuild_iuse)) or (not old_use.count(ebuild_iuse) and now_use.count(ebuild_iuse)):
- usechange="*"
-
- if ebuild_iuse in self.applied_useflags[x[2]]:
- if usechange == "*":
- iuse=green("+"+ebuild_iuse)
- else:
- iuse=red("+"+ebuild_iuse)
- elif ebuild_iuse in portage.settings.usemask:
- iuse=blue("(-"+ebuild_iuse+")")
- else:
- iuse=blue("-"+ebuild_iuse)
- verboseadd+=iuse+usechange+" "
+
+ verboseadd += create_use_string(iuse_split, cur_use, old_use, portage.settings.usemask)
+
+ for expvar in use_expand:
+ expiuse = []
+ expcur = []
+ expold = []
+ expmask = []
+ for flag in iuse_expand_split:
+ if flag.startswith(expvar+"_"):
+ expiuse.append(flag[len(expvar)+1:])
+ if flag in cur_use:
+ expcur.append(expiuse[-1])
+ if flag in old_use:
+ expold.append(expiuse[-1])
+ if flag in portage.settings.usemask:
+ expmask.append(expiuse[-1])
+ if expiuse:
+ verboseadd += expvar.upper()+'="'+create_use_string(expiuse,expcur,expold,expmask).strip()+'" '
# size verbose
mysize=0
diff -uNr 2.0-original/pym/portage.py 2.0/pym/portage.py
--- 2.0-original/pym/portage.py 2005-09-26 11:48:15.000000000 +0900
+++ 2.0/pym/portage.py 2005-09-28 12:06:36.000000000 +0900
@@ -1392,7 +1392,7 @@
if self.has_key(var):
for x in string.split(self[var]):
mystr = string.lower(var)+"_"+x
- if mystr not in usesplit:
+ if mystr not in usesplit and mystr not in self.usemask:
usesplit.append(mystr)
# Pre-Pend ARCH variable to USE settings so '-*' in env doesn't kill arch.
@@ -5112,8 +5112,8 @@
'RESTRICT', 'HOMEPAGE', 'LICENSE', 'DESCRIPTION',
'KEYWORDS', 'INHERITED', 'IUSE', 'CDEPEND',
'PDEPEND', 'PROVIDE', 'EAPI',
- 'UNUSED_01', 'UNUSED_02', 'UNUSED_03', 'UNUSED_04',
- 'UNUSED_05', 'UNUSED_06', 'UNUSED_07',
+ 'IUSE_EXPAND', 'UNUSED_01', 'UNUSED_02', 'UNUSED_03',
+ 'UNUSED_04', 'UNUSED_05', 'UNUSED_06',
]
auxdbkeylen=len(auxdbkeys)
next prev parent reply other threads:[~2005-09-28 3:20 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-27 9:23 [gentoo-dev] Dirt: To shove under the rug or not shove under the rug? (aka another round of USE_EXPAND) Jason Stubbs
2005-09-27 9:38 ` Diego 'Flameeyes' Pettenò
2005-09-27 10:12 ` Jason Stubbs
2005-09-27 10:41 ` Diego 'Flameeyes' Pettenò
2005-09-27 12:51 ` Jason Stubbs
2005-09-27 13:44 ` Diego 'Flameeyes' Pettenò
2005-09-27 14:07 ` Kito
2005-09-27 16:27 ` Stephen Bennett
2005-09-27 16:48 ` Brian Harring
2005-09-27 14:25 ` Jason Stubbs
2005-09-27 15:40 ` [gentoo-dev] " Duncan
2005-09-27 12:38 ` [gentoo-dev] " Chris Gianelloni
2005-09-27 15:36 ` Donnie Berkholz
2005-09-27 10:54 ` Thomas de Grenier de Latour
2005-09-27 12:31 ` Jason Stubbs
2005-09-27 12:35 ` Chris Gianelloni
2005-09-27 13:07 ` Thomas de Grenier de Latour
2005-09-27 13:50 ` Chris Gianelloni
2005-09-27 14:20 ` Jason Stubbs
2005-09-27 15:35 ` Donnie Berkholz
2005-09-28 1:23 ` Jason Stubbs
2005-09-28 3:13 ` Jason Stubbs [this message]
2005-09-28 3:58 ` Jason Stubbs
2005-09-28 4:19 ` Donnie Berkholz
2005-09-28 4:45 ` Jason Stubbs
2005-09-28 6:23 ` Donnie Berkholz
2005-09-28 8:03 ` Jason Stubbs
2005-09-28 4:21 ` Jason Stubbs
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200509281213.53108.jstubbs@gentoo.org \
--to=jstubbs@gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox