Gentoo Archives: gentoo-portage-dev

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