Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_config/, man/
Date: Sat, 31 Jan 2015 21:28:34
Message-Id: 1422739686.b65e1fc5fe723bd07bf034f6e08878fa3eb033cb.mgorny@gentoo
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