/[gentoo]/xml/htdocs/proj/en/glep/glep-0029.html
Gentoo

Diff of /xml/htdocs/proj/en/glep/glep-0029.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.2 Revision 1.7
6PEP, see http://www.python.org/peps/pep-0001.html for instructions and links 6PEP, see http://www.python.org/peps/pep-0001.html for instructions and links
7to templates. DO NOT USE THIS HTML FILE AS YOUR TEMPLATE! 7to templates. DO NOT USE THIS HTML FILE AS YOUR TEMPLATE!
8--> 8-->
9<head> 9<head>
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 <meta name="generator" content="Docutils 0.3.3: http://docutils.sourceforge.net/" /> 11 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 29 -- USE flag groups</title> 12 <title>GLEP 29 -- USE flag groups</title>
13 <link rel="stylesheet" href="tools/glep.css" type="text/css" /> 13 <style type="text/css">
14
15/*
16:Author: David Goodger
17:Contact: goodger@users.sourceforge.net
18:date: $Date: 2007/01/25 03:26:26 $
19:version: $Revision: 1.7 $
20:copyright: This stylesheet has been placed in the public domain.
21
22Default cascading style sheet for the PEP HTML output of Docutils.
23*/
24
25.first {
26 margin-top: 0 }
27
28.last {
29 margin-bottom: 0 }
30
31.navigation {
32 width: 100% ;
33 background: #cc99ff ;
34 margin-top: 0px ;
35 margin-bottom: 0px }
36
37.navigation .navicon {
38 width: 150px ;
39 height: 35px }
40
41.navigation .textlinks {
42 padding-left: 1em ;
43 text-align: left }
44
45.navigation td, .navigation th {
46 padding-left: 0em ;
47 padding-right: 0em ;
48 vertical-align: middle }
49
50.rfc2822 {
51 margin-top: 0.5em ;
52 margin-left: 0.5em ;
53 margin-right: 0.5em ;
54 margin-bottom: 0em }
55
56.rfc2822 td {
57 text-align: left }
58
59.rfc2822 th.field-name {
60 text-align: right ;
61 font-family: sans-serif ;
62 padding-right: 0.5em ;
63 font-weight: bold ;
64 margin-bottom: 0em }
65
66a.toc-backref {
67 text-decoration: none ;
68 color: black }
69
70body {
71 margin: 0px ;
72 margin-bottom: 1em ;
73 padding: 0px }
74
75dd {
76 margin-bottom: 0.5em }
77
78div.section {
79 margin-left: 1em ;
80 margin-right: 1em ;
81 margin-bottom: 1.5em }
82
83div.section div.section {
84 margin-left: 0em ;
85 margin-right: 0em ;
86 margin-top: 1.5em }
87
88div.abstract {
89 margin: 2em 5em }
90
91div.abstract p.topic-title {
92 font-weight: bold ;
93 text-align: center }
94
95div.attention, div.caution, div.danger, div.error, div.hint,
96div.important, div.note, div.tip, div.warning {
97 margin: 2em ;
98 border: medium outset ;
99 padding: 1em }
100
101div.attention p.admonition-title, div.caution p.admonition-title,
102div.danger p.admonition-title, div.error p.admonition-title,
103div.warning p.admonition-title {
104 color: red ;
105 font-weight: bold ;
106 font-family: sans-serif }
107
108div.hint p.admonition-title, div.important p.admonition-title,
109div.note p.admonition-title, div.tip p.admonition-title {
110 font-weight: bold ;
111 font-family: sans-serif }
112
113div.figure {
114 margin-left: 2em }
115
116div.footer, div.header {
117 font-size: smaller }
118
119div.footer {
120 margin-left: 1em ;
121 margin-right: 1em }
122
123div.system-messages {
124 margin: 5em }
125
126div.system-messages h1 {
127 color: red }
128
129div.system-message {
130 border: medium outset ;
131 padding: 1em }
132
133div.system-message p.system-message-title {
134 color: red ;
135 font-weight: bold }
136
137div.topic {
138 margin: 2em }
139
140h1 {
141 font-family: sans-serif ;
142 font-size: large }
143
144h2 {
145 font-family: sans-serif ;
146 font-size: medium }
147
148h3 {
149 font-family: sans-serif ;
150 font-size: small }
151
152h4 {
153 font-family: sans-serif ;
154 font-style: italic ;
155 font-size: small }
156
157h5 {
158 font-family: sans-serif;
159 font-size: x-small }
160
161h6 {
162 font-family: sans-serif;
163 font-style: italic ;
164 font-size: x-small }
165
166.section hr {
167 width: 75% }
168
169ol.simple, ul.simple {
170 margin-bottom: 1em }
171
172ol.arabic {
173 list-style: decimal }
174
175ol.loweralpha {
176 list-style: lower-alpha }
177
178ol.upperalpha {
179 list-style: upper-alpha }
180
181ol.lowerroman {
182 list-style: lower-roman }
183
184ol.upperroman {
185 list-style: upper-roman }
186
187p.caption {
188 font-style: italic }
189
190p.credits {
191 font-style: italic ;
192 font-size: smaller }
193
194p.label {
195 white-space: nowrap }
196
197p.topic-title {
198 font-family: sans-serif ;
199 font-weight: bold }
200
201pre.line-block {
202 font-family: serif ;
203 font-size: 100% }
204
205pre.literal-block, pre.doctest-block {
206 margin-left: 2em ;
207 margin-right: 2em ;
208 background-color: #eeeeee }
209
210span.classifier {
211 font-family: sans-serif ;
212 font-style: oblique }
213
214span.classifier-delimiter {
215 font-family: sans-serif ;
216 font-weight: bold }
217
218span.interpreted {
219 font-family: sans-serif }
220
221span.option-argument {
222 font-style: italic }
223
224span.pre {
225 white-space: pre }
226
227span.problematic {
228 color: red }
229
230table {
231 margin-top: 0.5em ;
232 margin-bottom: 0.5em }
233
234td, th {
235 padding-left: 0.5em ;
236 padding-right: 0.5em ;
237 vertical-align: top }
238
239td.num {
240 text-align: right }
241
242th.field-name {
243 font-weight: bold ;
244 text-align: left ;
245 white-space: nowrap }
246
247h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
248 font-size: 100% }
249
250tt {
251 background-color: #eeeeee }
252
253ul.auto-toc {
254 list-style-type: none }
255
256</style>
14</head> 257</head>
15<body bgcolor="white"> 258<body bgcolor="white">
16<table class="navigation" cellpadding="0" cellspacing="0" 259<table class="navigation" cellpadding="0" cellspacing="0"
17 width="100%" border="0"> 260 width="100%" border="0">
18<tr><td class="navicon" width="150" height="35"> 261<tr><td class="navicon" width="150" height="35">
19<a href="http://www.gentoo.org/" title="Gentoo Linux Home Page"> 262<a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
20<img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]" 263<img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
21 border="0" width="150" height="35" /></a></td> 264 border="0" width="150" height="35" /></a></td>
22<td class="textlinks" align="left"> 265<td class="textlinks" align="left">
23[<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>] 266[<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>]
24[<b><a href="http://www.gentoo.org/proj/en/glep">GLEP Index</a></b>] 267[<b><a href="http://www.gentoo.org/proj/en/glep/">GLEP Index</a></b>]
25[<b><a href="./glep-0029.txt">GLEP Source</a></b>] 268[<b><a href="http://www.gentoo.org/proj/en/glep/glep-0029.txt">GLEP Source</a></b>]
26</td></tr></table> 269</td></tr></table>
27<div class="document">
28<table class="rfc2822 field-list" frame="void" rules="none"> 270<table class="rfc2822 docutils field-list" frame="void" rules="none">
29<col class="field-name" /> 271<col class="field-name" />
30<col class="field-body" /> 272<col class="field-body" />
31<tbody valign="top"> 273<tbody valign="top">
32<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">29</td> 274<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">29</td>
33</tr> 275</tr>
34<tr class="field"><th class="field-name">Title:</th><td class="field-body">USE flag groups</td> 276<tr class="field"><th class="field-name">Title:</th><td class="field-body">USE flag groups</td>
35</tr> 277</tr>
36<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.3</td> 278<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.6</td>
37</tr> 279</tr>
38<tr class="field"><th class="field-name">Author:</th><td class="field-body">Ciaran McCreesh &lt;ciaranm&#32;&#97;t&#32;gentoo.org&gt;</td> 280<tr class="field"><th class="field-name">Author:</th><td class="field-body">Ciaran McCreesh &lt;ciaranm&#32;&#97;t&#32;gentoo.org&gt;</td>
39</tr> 281</tr>
40<tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference" href="http://www.gentoo.org/cgi-bin/viewcvs/xml/htdocs/proj/en/glep/glep-0029.txt?cvsroot=gentoo">2004/10/18 15:32:10</a></td> 282<tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference" href="http://www.gentoo.org/cgi-bin/viewcvs.cgi/xml/htdocs/proj/en/glep/glep-0029.txt?cvsroot=gentoo">2005/11/07 22:26:59</a></td>
41</tr> 283</tr>
42<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td> 284<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td>
43</tr> 285</tr>
44<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td> 286<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
45</tr> 287</tr>
46<tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference" href="glep-0012.html">text/x-rst</a></td> 288<tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference" href="glep-0002.html">text/x-rst</a></td>
47</tr> 289</tr>
48<tr class="field"><th class="field-name">Created:</th><td class="field-body">19-August-2004</td> 290<tr class="field"><th class="field-name">Created:</th><td class="field-body">19-Aug-2004</td>
49</tr> 291</tr>
50<tr class="field"><th class="field-name">Post-Date:</th><td class="field-body">21-August-2004, 18-October-2004</td> 292<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">21-Aug-2004, 18-Oct-2004, 25-Oct-2004, 24-Jul-2005</td>
51</tr> 293</tr>
52</tbody> 294</tbody>
53</table> 295</table>
54<hr /> 296<hr />
55<div class="contents topic" id="contents"> 297<div class="contents topic">
56<p class="topic-title first"><a name="contents">Contents</a></p> 298<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
57<ul class="simple"> 299<ul class="simple">
300<li><a class="reference" href="#status" id="id7" name="id7">Status</a></li>
58<li><a class="reference" href="#abstract" id="id3" name="id3">Abstract</a></li> 301<li><a class="reference" href="#abstract" id="id8" name="id8">Abstract</a></li>
59<li><a class="reference" href="#motivation" id="id4" name="id4">Motivation</a></li> 302<li><a class="reference" href="#motivation" id="id9" name="id9">Motivation</a></li>
60<li><a class="reference" href="#specification" id="id5" name="id5">Specification</a><ul> 303<li><a class="reference" href="#specification" id="id10" name="id10">Specification</a><ul>
61<li><a class="reference" href="#group-specification" id="id6" name="id6">Group Specification</a></li> 304<li><a class="reference" href="#group-specification" id="id11" name="id11">Group Specification</a></li>
62<li><a class="reference" href="#group-descriptions" id="id7" name="id7">Group Descriptions</a></li> 305<li><a class="reference" href="#group-descriptions" id="id12" name="id12">Group Descriptions</a></li>
63<li><a class="reference" href="#using-groups" id="id8" name="id8">Using Groups</a></li> 306<li><a class="reference" href="#using-groups" id="id13" name="id13">Using Groups</a></li>
64<li><a class="reference" href="#additional-issues" id="id9" name="id9">Additional Issues</a></li> 307<li><a class="reference" href="#issues-with-flags-and-groups" id="id14" name="id14">Issues with -flags and -&#64;GROUPS</a></li>
65<li><a class="reference" href="#adding-new-groups" id="id10" name="id10">Adding New Groups</a></li> 308<li><a class="reference" href="#adding-new-groups" id="id15" name="id15">Adding New Groups</a></li>
66</ul> 309</ul>
67</li> 310</li>
68<li><a class="reference" href="#rationale" id="id11" name="id11">Rationale</a></li> 311<li><a class="reference" href="#rationale" id="id16" name="id16">Rationale</a></li>
69<li><a class="reference" href="#reference-implementation" id="id12" name="id12">Reference Implementation</a></li> 312<li><a class="reference" href="#reference-implementation" id="id17" name="id17">Reference Implementation</a></li>
70<li><a class="reference" href="#backwards-compatability" id="id13" name="id13">Backwards Compatability</a></li> 313<li><a class="reference" href="#backwards-compatibility" id="id18" name="id18">Backwards Compatibility</a></li>
71<li><a class="reference" href="#references" id="id14" name="id14">References</a></li> 314<li><a class="reference" href="#references" id="id19" name="id19">References</a></li>
72<li><a class="reference" href="#copyright" id="id15" name="id15">Copyright</a></li> 315<li><a class="reference" href="#copyright" id="id20" name="id20">Copyright</a></li>
73</ul> 316</ul>
74</div> 317</div>
75<div class="section" id="abstract"> 318<div class="section">
319<h1><a class="toc-backref" href="#id7" id="status" name="status">Status</a></h1>
320<p>Withdrawn by request of the author.</p>
321</div>
322<div class="section">
76<h1><a class="toc-backref" href="#id3" name="abstract">Abstract</a></h1> 323<h1><a class="toc-backref" href="#id8" id="abstract" name="abstract">Abstract</a></h1>
77<p>Currently, USE flags must be selected on a one-by-one basis, making it 324<p>Currently, USE flags must be selected on a one-by-one basis, making it
78time-consuming to set up make.conf appropriately for a machine's role.</p> 325time-consuming to set up make.conf appropriately for a machine's role.</p>
79</div> 326</div>
80<div class="section" id="motivation"> 327<div class="section">
81<h1><a class="toc-backref" href="#id4" name="motivation">Motivation</a></h1> 328<h1><a class="toc-backref" href="#id9" id="motivation" name="motivation">Motivation</a></h1>
82<p>Many packages have optional support for other packages (for example, the 329<p>Many packages have optional support for other packages (for example, the
83Vim text editor can optionally support perl, python and ruby 330Vim text editor can optionally support perl, python and ruby
84interpreters). In Gentoo, these optional dependencies can be selected by 331interpreters). In Gentoo, these optional dependencies can be selected by
85the user using USE flags. This allows a system appropriate for a given 332the user using USE flags. This allows a system appropriate for a given
86environment to be built -- a server, for example, should not typically 333environment to be built -- a server, for example, should not typically
87have an X11 server or sound support, whereas both would be desirable on 334have an X11 server or sound support, whereas both would be desirable on
88most desktop systems.</p> 335most desktop systems.</p>
89<p>With several hundred USE flags available, deciding upon which USE flags to 336<p>With several hundred USE flags available, deciding upon which USE flags to
90enable and which to disable can take a long time. This GLEP proposes a 337enable and which to disable can take a long time. Although the default USE
338flag settings are reasonable, they are clearly not appropriate for every
339system. In addition, using &quot;-<em>&quot; to disable all default USE flags can be
340risky as certain USE flags should not generally be turned off. This GLEP
91mechanism for grouping USE flags to simplify selection.</p> 341proposes a mechanism for grouping USE flags to simplify selection and to
342make USE=&quot;-</em>&quot; less dangerous.</p>
92</div> 343</div>
93<div class="section" id="specification"> 344<div class="section">
94<h1><a class="toc-backref" href="#id5" name="specification">Specification</a></h1> 345<h1><a class="toc-backref" href="#id10" id="specification" name="specification">Specification</a></h1>
95<div class="section" id="group-specification"> 346<div class="section">
96<h2><a class="toc-backref" href="#id6" name="group-specification">Group Specification</a></h2> 347<h2><a class="toc-backref" href="#id11" id="group-specification" name="group-specification">Group Specification</a></h2>
97<p>A group shall consist of one or more USE flags. These groups are defined 348<p>A group shall consist of one or more tokens. Each token may be a USE flag,
98in <tt class="literal"><span class="pre">${PORTDIR}/profiles/use.groups</span></tt>. It is proposed that uppercase names 349a -USE flag, a reference to another group or a negative reference to
99only are used for groups to keep them visually distinct from normal USE 350another group.</p>
351<p>These groups are defined in <tt class="docutils literal"><span class="pre">${PORTDIR}/profiles/use.groups</span></tt>. It is
352proposed that uppercase names only are used for groups to keep them
353visually distinct from normal USE flags (almost all USE flags are
100flags, although this should not be enforced programatically. The file 354lowercase), although this should not been forced programmatically. The
101should be similar in format to the existing use.* files. In the following, 355file should be similar in format to the existing use.* files. In the
102<tt class="literal"><span class="pre">SOME_GROUP</span></tt> and <tt class="literal"><span class="pre">OTHER_GROUP</span></tt> are group names, and <tt class="literal"><span class="pre">flag1</span></tt> through 356following, <tt class="docutils literal"><span class="pre">SOME_GROUP</span></tt> and <tt class="docutils literal"><span class="pre">OTHER_GROUP</span></tt> are group names, and
103<tt class="literal"><span class="pre">flag5</span></tt> are USE flag names:</p> 357<tt class="docutils literal"><span class="pre">flag1</span></tt> through <tt class="docutils literal"><span class="pre">flag5</span></tt> are USE flag names:</p>
104<pre class="literal-block"> 358<pre class="literal-block">
105SOME_GROUP flag1 flag2 flag3 359SOME_GROUP flag1 flag2 flag3
106OTHER_GROUP flag2 flag4 360OTHER_GROUP flag2 flag4
107</pre> 361</pre>
108<p>Groups may recursively include other groups. For consistency with GLEP 23 362<p>Groups may recursively include other groups. For consistency with GLEP 23
109[1], it is proposed that group names are prefixed with an 'at' symbol (&#64;):</p> 363<a class="footnote-reference" href="#id4" id="id1" name="id1">[1]</a>, it is proposed that group names have their name prefixed with an
364'at' symbol (&#64;):</p>
110<pre class="literal-block"> 365<pre class="literal-block">
111GROUP1 flag1 366GROUP1 flag1
112GROUP2 flag2 flag3 &#64;GROUP1 367GROUP2 flag2 flag3 &#64;GROUP1
113GROUP3 flag4 368GROUP3 flag4
114GROUP4 &#64;GROUP2 &#64;GROUP3 flag5 369GROUP4 &#64;GROUP2 &#64;GROUP3 flag5
123hash symbol (#) are comments.</p> 378hash symbol (#) are comments.</p>
124<pre class="literal-block"> 379<pre class="literal-block">
125# This is a comment 380# This is a comment
126FOO bar baz fnord 381FOO bar baz fnord
127</pre> 382</pre>
128<p>Users may create their own groups using <tt class="literal"><span class="pre">/etc/portage/use.groups</span></tt>. This 383<p>Users may create their own groups using <tt class="docutils literal"><span class="pre">/etc/portage/use.groups</span></tt>. This
129file overrides the profile settings in the case of duplicates.</p> 384file overrides the profile settings in the case of duplicates.</p>
385<p>It should be legal for groups to specify -use flags, although for reasons
386discussed below this feature should not generally be used. The syntax is
387the same:</p>
388<pre class="literal-block">
389# This group contains two negative flags
390GROUP1 flag1 -flag2 -flag3 flag4
391</pre>
392<p>Groups may <em>not</em> contain circular group references. The following example
393is illegal:</p>
394<pre class="literal-block">
395# Illegal circular references
396GROUP1 &#64;GROUP2 foo
397GROUP2 &#64;GROUP1 bar
398</pre>
130</div> 399</div>
131<div class="section" id="group-descriptions"> 400<div class="section">
132<h2><a class="toc-backref" href="#id7" name="group-descriptions">Group Descriptions</a></h2> 401<h2><a class="toc-backref" href="#id12" id="group-descriptions" name="group-descriptions">Group Descriptions</a></h2>
133<p>Groups shall have a textual description associated with them in the same 402<p>Groups shall have a textual description associated with them in the same
134way as USE flags. The file <tt class="literal"><span class="pre">${PORTDIR}/profiles/use.groups.desc</span></tt> 403way as USE flags. The file <tt class="docutils literal"><span class="pre">${PORTDIR}/profiles/use.groups.desc</span></tt>
135contains these:</p> 404contains these:</p>
136<pre class="literal-block"> 405<pre class="literal-block">
137# This is a comment 406# This is a comment
138DESKTOP Flags which are appropriate for most desktop systems 407DESKTOP Flags which are appropriate for most desktop systems
139RECOMMENDED Flags which should be enabled on almost all systems 408RECOMMENDED Flags which should be enabled on almost all systems
140</pre> 409</pre>
141</div> 410</div>
142<div class="section" id="using-groups"> 411<div class="section">
143<h2><a class="toc-backref" href="#id8" name="using-groups">Using Groups</a></h2> 412<h2><a class="toc-backref" href="#id13" id="using-groups" name="using-groups">Using Groups</a></h2>
144<p>Groups may be used in <tt class="literal"><span class="pre">/etc/make.conf</span></tt>, <tt class="literal"><span class="pre">/etc/portage/package.use</span></tt> and 413<p>Groups may be used in <tt class="docutils literal"><span class="pre">/etc/make.conf</span></tt>, <tt class="docutils literal"><span class="pre">/etc/portage/package.use</span></tt> and
145other places where USE flags are normally specified. Again, the &#64; symbol 414other places where USE flags are normally specified. They may <em>not</em> be
146is used. For example, a <tt class="literal"><span class="pre">make.conf</span></tt> for a desktop system might resemble:</p> 415used inside <tt class="docutils literal"><span class="pre">IUSE`.</span> <span class="pre">As</span> <span class="pre">before,</span> <span class="pre">the</span> <span class="pre">&#64;</span> <span class="pre">symbol</span> <span class="pre">is</span> <span class="pre">used</span> <span class="pre">to</span> <span class="pre">indicate</span> <span class="pre">that</span> <span class="pre">a</span>
416<span class="pre">group</span> <span class="pre">is</span> <span class="pre">being</span> <span class="pre">referenced.</span> <span class="pre">For</span> <span class="pre">example,</span> <span class="pre">a</span> <span class="pre">``make.conf</span></tt> for a KDE desktop
417system might resemble:</p>
147<pre class="literal-block"> 418<pre class="literal-block">
148USE=&quot;&#64;DESKTOP &#64;KDE perl alsa dvd&quot; 419USE=&quot;&#64;DESKTOP &#64;KDE perl alsa dvd&quot;
149</pre> 420</pre>
421<p>Groups may be preceded by a -sign to invert their contents (that is, all
422'enable' use flags become -flags, and all -flags become enable flags). Be
423warned that this feature can cause confusion (see below). Example usage:</p>
424<pre class="literal-block">
425# We have the following groups defined...
426GROUP1 foo bar
427GROUP2 -bar baz -fnord
428GROUP3 &#64;GROUP1 -&#64;GROUP2 -bar foo
429GROUP4 -foo -bar
430
431# And the following...
432USE=&quot;-&#64;GROUP3 &#64;GROUP4 bar&quot;
433
434# which resolves to...
435USE=&quot;-&#64;GROUP1 &#64;GROUP2 bar -foo -foo -bar bar&quot;
436USE=&quot;-foo -bar bar -baz fnord bar -foo -foo -bar bar&quot;
437USE=&quot;-baz fnord -foo bar&quot;
438</pre>
150</div> 439</div>
151<div class="section" id="additional-issues"> 440<div class="section">
152<h2><a class="toc-backref" href="#id9" name="additional-issues">Additional Issues</a></h2> 441<h2><a id="issues-with-flags-and-groups" name="issues-with-flags-and-groups">Issues with -flags and <a class="reference" href="mailto:-&#64;GROUPS">-&#64;GROUPS</a></a></h2>
153<p>Groups should <em>not</em> generally contain negative USE flags, as this would 442<p>Earlier drafts of this GLEP did not allow -use flags or <a class="reference" href="mailto:-&#64;GROUPS">-&#64;GROUPS</a>. However,
154lead to confusion. Groups are intended to specify what will be enabled for 443because of feedback along the lines of &quot;we shouldn't disallow features
155a given role, not what will be turned off. For example, if the &#64;KDE group 444just because some users won't understand them&quot; (for example, <a class="footnote-reference" href="#id6" id="id2" name="id2">[3]</a>), these
156disabled Gnome-related USE flags, and a user used <tt class="literal"><span class="pre">USE=&quot;&#64;GNOME</span> <span class="pre">&#64;KDE&quot;</span></tt> to 445are now allowed but discouraged.</p>
157specify that they wanted both Gnome <em>and</em> KDE to be used where applicable, 446<p>The problems are best illustrated by example. Say we have the following
158chaos would ensue. However, for the sake of consistency, -flags should be 447groups defined:</p>
159supported even if their use is strongly discouraged.</p> 448<pre class="literal-block">
160<p>It is proposed that <tt class="literal"><span class="pre">-&#64;GROUP</span></tt> syntax should <em>not</em> be supported. Instead, 449KDE X kde qt
161users wishing to turn most things off could use the <tt class="literal"><span class="pre">-*</span></tt> USE syntax 450GNOME X gtk gtk2 gnome
162along with a group (for example, &#64;RECOMMENDED or &#64;MINIMAL) which turned on 451</pre>
163flags (for example, pam and readline) which should usually be used.</p> 452<p>A user who wants a KDE desktop but no GNOME may do the following:</p>
453<pre class="literal-block">
454USE=&quot;&#64;KDE -&#64;GNOME&quot;
455</pre>
456<p>However, this will not give the desired effect -- the <tt class="docutils literal"><span class="pre">X</span></tt> USE flag will
457end up being disabled.</p>
458<p>Similarly, -use flags could cause a lot of confusion if misused. If, for
459example, the KDE group turned off GNOME things and the GNOME group turned
460off KDE things:</p>
461<pre class="literal-block">
462KDE X kde qt -gtk -gnome
463GNOME X gtk gtk2 gnome -kde -qt
464</pre>
465<p>And a user wished to use both KDE and GNOME on a system, and so had USE
466flags as follows:</p>
467<pre class="literal-block">
468USE=&quot;&#64;KDE &#64;GNOME&quot;
469</pre>
470<p>They would end up with:</p>
471<pre class="literal-block">
472USE=&quot;X kde qt -gtk -gnome X gtk gtk2 gnome -kde -qt&quot;
473</pre>
474<p>Which simplifies:</p>
475<pre class="literal-block">
476USE=&quot;X gtk gtk2 gnome -kde -qt&quot;
477</pre>
478<p>This is clearly not the desired effect.</p>
164</div> 479</div>
165<div class="section" id="adding-new-groups"> 480<div class="section">
166<h2><a class="toc-backref" href="#id10" name="adding-new-groups">Adding New Groups</a></h2> 481<h2><a class="toc-backref" href="#id15" id="adding-new-groups" name="adding-new-groups">Adding New Groups</a></h2>
167<p>The actual groups to be created is beyond the scope of this GLEP, and any 482<p>The actual groups to be created is beyond the scope of this GLEP, and any
168group names contained herein should be treated as examples only. Creation 483group names contained herein should be treated as examples only. Creation
169of new groups and changing a group's flags should be discussed on the 484of new groups and changing a group's flags should be discussed on the
170gentoo-dev mailing list as per existing policy for new global USE flags.</p> 485gentoo-dev mailing list as per existing policy for new global USE flags.</p>
486<p>In particular, any changes involving -flags <em>must</em> be thoroughly discussed
487before implementation.</p>
171</div> 488</div>
172</div> 489</div>
173<div class="section" id="rationale"> 490<div class="section">
174<h1><a class="toc-backref" href="#id11" name="rationale">Rationale</a></h1> 491<h1><a class="toc-backref" href="#id16" id="rationale" name="rationale">Rationale</a></h1>
175<p>USE groups will simplify selecting an appropriate set of USE flags for a 492<p>USE groups will simplify selecting an appropriate set of USE flags for a
176system.</p> 493system.</p>
177</div> 494</div>
178<div class="section" id="reference-implementation"> 495<div class="section">
179<h1><a class="toc-backref" href="#id12" name="reference-implementation">Reference Implementation</a></h1> 496<h1><a class="toc-backref" href="#id17" id="reference-implementation" name="reference-implementation">Reference Implementation</a></h1>
180<p>TODO</p> 497<p>TODO</p>
181</div> 498</div>
182<div class="section" id="backwards-compatability"> 499<div class="section">
183<h1><a class="toc-backref" href="#id13" name="backwards-compatability">Backwards Compatability</a></h1> 500<h1><a class="toc-backref" href="#id18" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
184<p>The user will not need to make any changes to keep their current setup. 501<p>The user will not need to make any changes to keep their current setup.
185Users who are not running a portage version which supports groups can 502Users who are not running a portage version which supports groups can
186carry on using current syntax with no side-effects.</p> 503carry on using current syntax with no side-effects.</p>
187<p>Some tools which work with make.conf and / or USE flags (for example, 504<p>Some tools which work with make.conf and / or USE flags (for example,
188<tt class="literal"><span class="pre">ufed</span></tt>) will need to be updated to understand the new group syntax.</p> 505<tt class="docutils literal"><span class="pre">ufed</span></tt>) will need to be updated to understand the new group syntax.</p>
189<p>There is currently a dymanic list of USE flags available on the Gentoo 506<p>There is currently a dynamic list of USE flags available on the Gentoo
190website [2]. For consistency, a similar list will be needed for USE 507website <a class="footnote-reference" href="#id5" id="id3" name="id3">[2]</a>. For consistency, a similar list will be needed for USE
191groups.</p> 508groups.</p>
192</div> 509</div>
193<div class="section" id="references"> 510<div class="section">
194<h1><a class="toc-backref" href="#id14" name="references">References</a></h1> 511<h1><a class="toc-backref" href="#id19" id="references" name="references">References</a></h1>
195<table class="footnote" frame="void" id="id1" rules="none"> 512<table class="docutils footnote" frame="void" id="id4" rules="none">
196<colgroup><col class="label" /><col /></colgroup> 513<colgroup><col class="label" /><col /></colgroup>
197<tbody valign="top"> 514<tbody valign="top">
198<tr><td class="label"><a name="id1">[1]</a></td><td>GLEP 23: Portage handling of ACCEPT_LICENSE 515<tr><td class="label"><a class="fn-backref" href="#id1" name="id4">[1]</a></td><td>GLEP 23: Portage handling of ACCEPT_LICENSE
199(<a class="reference" href="http://www.gentoo.org/proj/en/glep/glep-0023.html">http://www.gentoo.org/proj/en/glep/glep-0023.html</a>)</td></tr> 516(<a class="reference" href="http://www.gentoo.org/proj/en/glep/glep-0023.html">http://www.gentoo.org/proj/en/glep/glep-0023.html</a>)</td></tr>
200</tbody> 517</tbody>
201</table> 518</table>
202<table class="footnote" frame="void" id="id2" rules="none"> 519<table class="docutils footnote" frame="void" id="id5" rules="none">
203<colgroup><col class="label" /><col /></colgroup> 520<colgroup><col class="label" /><col /></colgroup>
204<tbody valign="top"> 521<tbody valign="top">
205<tr><td class="label"><a name="id2">[2]</a></td><td><a class="reference" href="http://www.gentoo.org/dyn/use-index.xml">http://www.gentoo.org/dyn/use-index.xml</a></td></tr> 522<tr><td class="label"><a class="fn-backref" href="#id3" name="id5">[2]</a></td><td><a class="reference" href="http://www.gentoo.org/dyn/use-index.xml">http://www.gentoo.org/dyn/use-index.xml</a></td></tr>
206</tbody> 523</tbody>
207</table> 524</table>
525<table class="docutils footnote" frame="void" id="id6" rules="none">
526<colgroup><col class="label" /><col /></colgroup>
527<tbody valign="top">
528<tr><td class="label"><a class="fn-backref" href="#id2" name="id6">[3]</a></td><td>GLEP 29 discussion on the gentoo-dev mailing list
529(<a class="reference" href="http://marc.theaimsgroup.com/?l=gentoo-dev&amp;m=109813990013812">http://marc.theaimsgroup.com/?l=gentoo-dev&amp;m=109813990013812</a>)</td></tr>
530</tbody>
531</table>
208</div> 532</div>
209<div class="section" id="copyright"> 533<div class="section">
210<h1><a class="toc-backref" href="#id15" name="copyright">Copyright</a></h1> 534<h1><a class="toc-backref" href="#id20" id="copyright" name="copyright">Copyright</a></h1>
211<p>This document has been placed in the public domain.</p> 535<p>This document has been placed in the public domain.</p>
212<blockquote> 536<blockquote>
213vim: set tw=74 :</blockquote> 537vim: set tw=74 :</blockquote>
214</div> 538</div>
215</div>
216 539
540</div>
541<div class="footer">
217<hr class="footer" /> 542<hr class="footer" />
218<div class="footer">
219<a class="reference" href="glep-0029.txt">View document source</a>. 543<a class="reference" href="glep-0029.txt">View document source</a>.
220Generated on: 2004-10-18 15:31 UTC. 544Generated on: 2006-10-10 20:23 UTC.
221Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. 545Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
546
222</div> 547</div>
223</body> 548</body>
224</html> 549</html>
225 550

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.20