/[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.1 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.1</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/08/22 01:59:24</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</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<p>BIG FAT DISCLAIMER: EARLY DRAFT, SEND COMMENTS TO ciaranm. EVERYTHING IN
76HERE IS OPEN TO DISCUSSION. THE WRITING STYLE SUCKS. MAY CAUSE CANCER IN
77PUPPIES.</p>
78<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">
79<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>
80<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
81time-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>
82</div> 326</div>
83<div class="section" id="motivation"> 327<div class="section">
84<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>
85<p>USE flags allow the user to have software built in a manner which is 329<p>Many packages have optional support for other packages (for example, the
86relevant for their system's role. For example, a desktop user will 330Vim text editor can optionally support perl, python and ruby
87probably want to enable optional X support in packages, whereas a server 331interpreters). In Gentoo, these optional dependencies can be selected by
88user will not. However, with several hundred USE flags available, it can 332the user using USE flags. This allows a system appropriate for a given
89be time consuming to set up make.conf appropriately.</p> 333environment to be built -- a server, for example, should not typically
334have an X11 server or sound support, whereas both would be desirable on
335most desktop systems.</p>
336<p>With several hundred USE flags available, deciding upon which USE flags to
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
90<p>This GLEP proposes a mechanism for grouping USE flags to simplify 341proposes a mechanism for grouping USE flags to simplify selection and to
91selection.</p> 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>
100flags. The file format is similar to the existing use.* files:</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
354lowercase), although this should not been forced programmatically. The
355file should be similar in format to the existing use.* files. In the
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
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>
101<pre class="literal-block"> 358<pre class="literal-block">
102SOME_GROUP flag1 flag2 flag3 359SOME_GROUP flag1 flag2 flag3
103OTHER_GROUP flag2 flag4 360OTHER_GROUP flag2 flag4
104</pre> 361</pre>
105<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
106[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>
107<pre class="literal-block"> 365<pre class="literal-block">
108GROUP1 flag1 366GROUP1 flag1
109GROUP2 flag2 flag3 &#64;GROUP1 367GROUP2 flag2 flag3 &#64;GROUP1
110GROUP3 flag4 368GROUP3 flag4
111GROUP4 &#64;GROUP2 &#64;GROUP3 flag5 369GROUP4 &#64;GROUP2 &#64;GROUP3 flag5
112</pre> 370</pre>
371<p>The same flag may end up being in a particular group more than once:</p>
372<pre class="literal-block">
373GROUP1 flag1 flag2
374GROUP2 flag2 flag3
375GROUP3 &#64;GROUP1 &#64;GROUP2 flag3 flag4
376</pre>
377<p>As with similar files, comments may be included. Lines which begin with a
378hash symbol (#) are comments.</p>
379<pre class="literal-block">
380# This is a comment
381FOO bar baz fnord
382</pre>
113<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
114file 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>
115</div> 399</div>
116<div class="section" id="group-descriptions"> 400<div class="section">
117<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>
118<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
119way 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>
120contains these:</p> 404contains these:</p>
121<pre class="literal-block"> 405<pre class="literal-block">
406# This is a comment
122DESKTOP Flags which are appropriate for most desktop systems 407DESKTOP Flags which are appropriate for most desktop systems
123RECOMMENDED Flags which should be enabled on almost all systems 408RECOMMENDED Flags which should be enabled on almost all systems
124</pre> 409</pre>
125</div> 410</div>
126<div class="section" id="using-groups"> 411<div class="section">
127<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>
128<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
129other 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
130is 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>
131<pre class="literal-block"> 418<pre class="literal-block">
132USE=&quot;&#64;DESKTOP &#64;KDE perl alsa dvd&quot; 419USE=&quot;&#64;DESKTOP &#64;KDE perl alsa dvd&quot;
133</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>
134</div> 439</div>
135<div class="section" id="additional-issues"> 440<div class="section">
136<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>
137<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,
138lead 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
139a 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
140disabled 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>
141specify 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
142chaos would ensue. However, for the sake of consistency, -flags should be 447groups defined:</p>
143supported even if their use is strongly discouraged.</p> 448<pre class="literal-block">
144<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
145users wishing to turn most things off could use the <tt class="literal"><span class="pre">-*</span></tt> USE syntax 450GNOME X gtk gtk2 gnome
146along with a group (for example, &#64;RECOMMENDED) which turned on flags (for 451</pre>
147example, 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>
148</div> 479</div>
149<div class="section" id="adding-new-groups"> 480<div class="section">
150<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>
151<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
152group names contained herein should be treated as examples only. Creation 483group names contained herein should be treated as examples only. Creation
153of 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
154gentoo-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>
155</div> 488</div>
156</div> 489</div>
157<div class="section" id="rationale"> 490<div class="section">
158<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>
159<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
160system.</p> 493system.</p>
161</div> 494</div>
162<div class="section" id="reference-implementation"> 495<div class="section">
163<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>
164<p>TODO</p> 497<p>TODO</p>
165</div> 498</div>
166<div class="section" id="backwards-compatability"> 499<div class="section">
167<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>
168<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.
169Users who are not running a portage version which supports groups can 502Users who are not running a portage version which supports groups can
170carry on using current syntax with no side-effects.</p> 503carry on using current syntax with no side-effects.</p>
171<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,
172<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>
173<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
174website [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
175groups.</p> 508groups.</p>
176</div> 509</div>
177<div class="section" id="references"> 510<div class="section">
178<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>
179<table class="footnote" frame="void" id="id1" rules="none"> 512<table class="docutils footnote" frame="void" id="id4" rules="none">
180<colgroup><col class="label" /><col /></colgroup> 513<colgroup><col class="label" /><col /></colgroup>
181<tbody valign="top"> 514<tbody valign="top">
182<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
183(<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>
184</tbody> 517</tbody>
185</table> 518</table>
186<table class="footnote" frame="void" id="id2" rules="none"> 519<table class="docutils footnote" frame="void" id="id5" rules="none">
187<colgroup><col class="label" /><col /></colgroup> 520<colgroup><col class="label" /><col /></colgroup>
188<tbody valign="top"> 521<tbody valign="top">
189<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>
190</tbody> 523</tbody>
191</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>
192</div> 532</div>
193<div class="section" id="copyright"> 533<div class="section">
194<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>
195<p>This document has been placed in the public domain.</p> 535<p>This document has been placed in the public domain.</p>
196<blockquote> 536<blockquote>
197vim: set tw=74 :</blockquote> 537vim: set tw=74 :</blockquote>
198</div> 538</div>
199</div>
200 539
540</div>
541<div class="footer">
201<hr class="footer" /> 542<hr class="footer" />
202<div class="footer">
203<a class="reference" href="glep-0029.txt">View document source</a>. 543<a class="reference" href="glep-0029.txt">View document source</a>.
204Generated on: 2004-08-22 01:47 UTC. 544Generated on: 2006-10-10 20:23 UTC.
205Generated 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
206</div> 547</div>
207</body> 548</body>
208</html> 549</html>
209 550

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

  ViewVC Help
Powered by ViewVC 1.1.20