1 |
commit: b65e1fc5fe723bd07bf034f6e08878fa3eb033cb |
2 |
Author: Michał Górny <mgorny <AT> gentoo <DOT> org> |
3 |
AuthorDate: Tue Jan 20 11:18:43 2015 +0000 |
4 |
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Jan 31 21:28:06 2015 +0000 |
6 |
URL: http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=b65e1fc5 |
7 |
|
8 |
Support USE_EXPAND prefixes in package.use and relevant files |
9 |
|
10 |
Support prefixing groups of USE_EXPAND flags with 'USE_EXPAND:' in user |
11 |
configuration package.use and similar files. This provides a convenient |
12 |
way of declaring specifying multiple USE_EXPAND flags and matches the |
13 |
syntax supported by Paludis. Example: |
14 |
|
15 |
dev-util/netbeans NETBEANS_MODULES: php webcommon extide |
16 |
media-libs/mesa osmesa VIDEO_CARDS: intel nouveau |
17 |
|
18 |
X-Gentoo-Bug: 471776 |
19 |
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=471776 |
20 |
|
21 |
--- |
22 |
man/portage.5 | 6 ++++++ |
23 |
pym/portage/package/ebuild/_config/UseManager.py | 24 +++++++++++++++++++++--- |
24 |
2 files changed, 27 insertions(+), 3 deletions(-) |
25 |
|
26 |
diff --git a/man/portage.5 b/man/portage.5 |
27 |
index 189561c..5ac3100 100644 |
28 |
--- a/man/portage.5 |
29 |
+++ b/man/portage.5 |
30 |
@@ -792,6 +792,10 @@ documentation for QT. Easy as pie my friend! |
31 |
.nf |
32 |
\- comments begin with # (no inline comments) |
33 |
\- one DEPEND atom per line with space-delimited USE flags |
34 |
+\- USE flags can be prefixed with USE_EXPAND name followed by a colon (:) |
35 |
+and a space. In this case, all the names following it are treated |
36 |
+as values for the USE_EXPAND. Note that if you need to remove earlier |
37 |
+assignments or defaults, you need to explicitly specify '\-*'. |
38 |
.fi |
39 |
|
40 |
.I Example: |
41 |
@@ -800,6 +804,8 @@ documentation for QT. Easy as pie my friend! |
42 |
=x11\-libs/gtk+\-2* doc |
43 |
# disable mysql support for QT |
44 |
x11\-libs/qt \-mysql |
45 |
+# set preferred video card for all packages |
46 |
+*/* VIDEO_CARDS: \-* radeon |
47 |
.fi |
48 |
.TP |
49 |
.BR repos.conf |
50 |
|
51 |
diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py |
52 |
index 3a4ec22..60d5f92 100644 |
53 |
--- a/pym/portage/package/ebuild/_config/UseManager.py |
54 |
+++ b/pym/portage/package/ebuild/_config/UseManager.py |
55 |
@@ -202,11 +202,18 @@ class UseManager(object): |
56 |
useflag_re = _get_useflag_re(eapi) |
57 |
for k, v in file_dict.items(): |
58 |
useflags = [] |
59 |
+ use_expand_prefix = '' |
60 |
for prefixed_useflag in v: |
61 |
+ if extended_syntax and prefixed_useflag[-1] == ":": |
62 |
+ use_expand_prefix = prefixed_useflag[:-1].lower() + "_" |
63 |
+ continue |
64 |
+ |
65 |
if prefixed_useflag[:1] == "-": |
66 |
- useflag = prefixed_useflag[1:] |
67 |
+ useflag = use_expand_prefix + prefixed_useflag[1:] |
68 |
+ prefixed_useflag = "-" + useflag |
69 |
else: |
70 |
- useflag = prefixed_useflag |
71 |
+ useflag = use_expand_prefix + prefixed_useflag |
72 |
+ prefixed_useflag = useflag |
73 |
if useflag_re.match(useflag) is None: |
74 |
writemsg(_("--- Invalid USE flag for '%s' in '%s': '%s'\n") % |
75 |
(k, file_name, prefixed_useflag), noiselevel=-1) |
76 |
@@ -227,7 +234,18 @@ class UseManager(object): |
77 |
pusedict = grabdict_package( |
78 |
os.path.join(location, file_name), recursive=1, allow_wildcard=True, allow_repo=True, verify_eapi=False) |
79 |
for k, v in pusedict.items(): |
80 |
- ret.setdefault(k.cp, {})[k] = tuple(v) |
81 |
+ l = [] |
82 |
+ use_expand_prefix = '' |
83 |
+ for flag in v: |
84 |
+ if flag[-1] == ":": |
85 |
+ use_expand_prefix = flag[:-1].lower() + "_" |
86 |
+ continue |
87 |
+ if flag[0] == "-": |
88 |
+ nv = "-" + use_expand_prefix + flag[1:] |
89 |
+ else: |
90 |
+ nv = use_expand_prefix + flag |
91 |
+ l.append(nv) |
92 |
+ ret.setdefault(k.cp, {})[k] = tuple(l) |
93 |
|
94 |
return ret |