commit: b65e1fc5fe723bd07bf034f6e08878fa3eb033cb Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Tue Jan 20 11:18:43 2015 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Sat Jan 31 21:28:06 2015 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=b65e1fc5
Support USE_EXPAND prefixes in package.use and relevant files 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..60d5f92 100644 --- a/pym/portage/package/ebuild/_config/UseManager.py +++ b/pym/portage/package/ebuild/_config/UseManager.py @@ -202,11 +202,18 @@ 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:] + useflag = use_expand_prefix + prefixed_useflag[1:] + prefixed_useflag = "-" + useflag else: - useflag = prefixed_useflag + useflag = use_expand_prefix + prefixed_useflag + prefixed_useflag = useflag if useflag_re.match(useflag) is None: writemsg(_("--- Invalid USE flag for '%s' in '%s': '%s'\n") % (k, file_name, prefixed_useflag), noiselevel=-1) @@ -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
