Dnia 2015-01-24, o godz. 10:31:57 Michał Górny napisał(a): > Support prefixing groups of USE_EXPAND flags with 'USE_EXPAND:' in user > configuration package.use and similar files. This provides a convenient > way of declaring specifying multiple USE_EXPAND flags and matches the > syntax supported by Paludis. Example: > > dev-util/netbeans NETBEANS_MODULES: php webcommon extide > media-libs/mesa osmesa VIDEO_CARDS: intel nouveau > > X-Gentoo-Bug: 471776 > X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=471776 > --- > man/portage.5 | 6 ++++++ > pym/portage/package/ebuild/_config/UseManager.py | 24 +++++++++++++++++++++--- > 2 files changed, 27 insertions(+), 3 deletions(-) > > diff --git a/man/portage.5 b/man/portage.5 > index 189561c..5ac3100 100644 > --- a/man/portage.5 > +++ b/man/portage.5 > @@ -792,6 +792,10 @@ documentation for QT. Easy as pie my friend! > .nf > \- comments begin with # (no inline comments) > \- one DEPEND atom per line with space-delimited USE flags > +\- USE flags can be prefixed with USE_EXPAND name followed by a colon (:) > +and a space. In this case, all the names following it are treated > +as values for the USE_EXPAND. Note that if you need to remove earlier > +assignments or defaults, you need to explicitly specify '\-*'. > .fi > > .I Example: > @@ -800,6 +804,8 @@ documentation for QT. Easy as pie my friend! > =x11\-libs/gtk+\-2* doc > # disable mysql support for QT > x11\-libs/qt \-mysql > +# set preferred video card for all packages > +*/* VIDEO_CARDS: \-* radeon > .fi > .TP > .BR repos.conf > diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py > index 3a4ec22..7e235ef 100644 > --- a/pym/portage/package/ebuild/_config/UseManager.py > +++ b/pym/portage/package/ebuild/_config/UseManager.py > @@ -145,7 +145,7 @@ class UseManager(object): > useflag = prefixed_useflag[1:] > else: > useflag = prefixed_useflag > - if useflag_re.match(useflag) is None: > + if useflag_re.match(prefixed_useflag) is None: Argv, wrong. I know you named it 'prefixed_useflag' to confuse me! > writemsg(_("--- Invalid USE flag in '%s': '%s'\n") % > (file_name, prefixed_useflag), noiselevel=-1) > else: > @@ -202,12 +202,19 @@ class UseManager(object): > useflag_re = _get_useflag_re(eapi) > for k, v in file_dict.items(): > useflags = [] > + use_expand_prefix = '' > for prefixed_useflag in v: > + if extended_syntax and prefixed_useflag[-1] == ":": > + use_expand_prefix = prefixed_useflag[:-1].lower() + "_" > + continue > + > if prefixed_useflag[:1] == "-": > useflag = prefixed_useflag[1:] > + prefixed_useflag = "-" + use_expand_prefix + useflag > else: > + prefixed_useflag = use_expand_prefix + prefixed_useflag > useflag = prefixed_useflag > - if useflag_re.match(useflag) is None: > + if useflag_re.match(prefixed_useflag) is None: > writemsg(_("--- Invalid USE flag for '%s' in '%s': '%s'\n") % > (k, file_name, prefixed_useflag), noiselevel=-1) > else: > @@ -227,7 +234,18 @@ class UseManager(object): > pusedict = grabdict_package( > os.path.join(location, file_name), recursive=1, allow_wildcard=True, allow_repo=True, verify_eapi=False) > for k, v in pusedict.items(): > - ret.setdefault(k.cp, {})[k] = tuple(v) > + l = [] > + use_expand_prefix = '' > + for flag in v: > + if flag[-1] == ":": > + use_expand_prefix = flag[:-1].lower() + "_" > + continue > + if flag[0] == "-": > + nv = "-" + use_expand_prefix + flag[1:] > + else: > + nv = use_expand_prefix + flag > + l.append(nv) > + ret.setdefault(k.cp, {})[k] = tuple(l) > > return ret > -- Best regards, Michał Górny