* [gentoo-portage-dev] [PATCH v2] Support USE_EXPAND prefixes in package.use and relevant files
@ 2015-01-24 9:31 Michał Górny
2015-01-24 9:38 ` Michał Górny
0 siblings, 1 reply; 2+ messages in thread
From: Michał Górny @ 2015-01-24 9:31 UTC (permalink / raw
To: gentoo-portage-dev; +Cc: Michał Górny
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:
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
--
2.2.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [gentoo-portage-dev] [PATCH v2] Support USE_EXPAND prefixes in package.use and relevant files
2015-01-24 9:31 [gentoo-portage-dev] [PATCH v2] Support USE_EXPAND prefixes in package.use and relevant files Michał Górny
@ 2015-01-24 9:38 ` Michał Górny
0 siblings, 0 replies; 2+ messages in thread
From: Michał Górny @ 2015-01-24 9:38 UTC (permalink / raw
To: gentoo-portage-dev
[-- Attachment #1: Type: text/plain, Size: 3976 bytes --]
Dnia 2015-01-24, o godz. 10:31:57
Michał Górny <mgorny@gentoo.org> 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
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-01-24 9:38 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-24 9:31 [gentoo-portage-dev] [PATCH v2] Support USE_EXPAND prefixes in package.use and relevant files Michał Górny
2015-01-24 9:38 ` Michał Górny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox