/[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.4 Revision 1.8
1<?xml version="1.0" encoding="utf-8" ?> 1<?xml version="1.0" encoding="utf-8" ?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4<!-- 4
5This HTML is auto-generated. DO NOT EDIT THIS FILE! If you are writing a new
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!
8-->
9<head> 5<head>
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 <meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" /> 7 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 29 -- USE flag groups</title> 8 <title>GLEP 29 -- USE flag groups</title>
13 <link rel="stylesheet" href="tools/glep.css" type="text/css" /> 9 <link rel="stylesheet" href="tools/glep.css" type="text/css" />
14</head> 10</head>
15<body bgcolor="white"> 11<body bgcolor="white">
16<table class="navigation" cellpadding="0" cellspacing="0" 12<table class="navigation" cellpadding="0" cellspacing="0"
20<img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]" 16<img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
21 border="0" width="150" height="35" /></a></td> 17 border="0" width="150" height="35" /></a></td>
22<td class="textlinks" align="left"> 18<td class="textlinks" align="left">
23[<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>] 19[<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>] 20[<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>] 21[<b><a href="http://www.gentoo.org/proj/en/glep/glep-0029.txt">GLEP Source</a></b>]
26</td></tr></table> 22</td></tr></table>
27<table class="rfc2822 docutils field-list" frame="void" rules="none"> 23<table class="rfc2822 docutils field-list" frame="void" rules="none">
28<col class="field-name" /> 24<col class="field-name" />
29<col class="field-body" /> 25<col class="field-body" />
30<tbody valign="top"> 26<tbody valign="top">
31<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">29</td> 27<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">29</td>
32</tr> 28</tr>
33<tr class="field"><th class="field-name">Title:</th><td class="field-body">USE flag groups</td> 29<tr class="field"><th class="field-name">Title:</th><td class="field-body">USE flag groups</td>
34</tr> 30</tr>
35<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.5</td> 31<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.6</td>
36</tr> 32</tr>
37<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> 33<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>
38</tr> 34</tr>
39<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">2005/06/24 21:36:04</a></td> 35<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>
40</tr> 36</tr>
41<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td> 37<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td>
42</tr> 38</tr>
43<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td> 39<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
44</tr> 40</tr>
45<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> 41<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>
46</tr> 42</tr>
47<tr class="field"><th class="field-name">Created:</th><td class="field-body">19-August-2004</td> 43<tr class="field"><th class="field-name">Created:</th><td class="field-body">19-Aug-2004</td>
48</tr> 44</tr>
49<tr class="field"><th class="field-name">Post-Date:</th><td class="field-body">21-August-2004, 18-October-2004, 25-October-2004, 24-July-2005</td> 45<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>
50</tr> 46</tr>
51</tbody> 47</tbody>
52</table> 48</table>
53<hr /> 49<hr />
54<div class="contents topic" id="contents"> 50<div class="contents topic">
55<p class="topic-title first"><a name="contents">Contents</a></p> 51<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
56<ul class="simple"> 52<ul class="simple">
57<li><a class="reference" href="#status" id="id7" name="id7">Status</a></li> 53<li><a class="reference" href="#status" id="id7" name="id7">Status</a></li>
58<li><a class="reference" href="#abstract" id="id8" name="id8">Abstract</a></li> 54<li><a class="reference" href="#abstract" id="id8" name="id8">Abstract</a></li>
59<li><a class="reference" href="#motivation" id="id9" name="id9">Motivation</a></li> 55<li><a class="reference" href="#motivation" id="id9" name="id9">Motivation</a></li>
60<li><a class="reference" href="#specification" id="id10" name="id10">Specification</a><ul> 56<li><a class="reference" href="#specification" id="id10" name="id10">Specification</a><ul>
70<li><a class="reference" href="#backwards-compatibility" id="id18" name="id18">Backwards Compatibility</a></li> 66<li><a class="reference" href="#backwards-compatibility" id="id18" name="id18">Backwards Compatibility</a></li>
71<li><a class="reference" href="#references" id="id19" name="id19">References</a></li> 67<li><a class="reference" href="#references" id="id19" name="id19">References</a></li>
72<li><a class="reference" href="#copyright" id="id20" name="id20">Copyright</a></li> 68<li><a class="reference" href="#copyright" id="id20" name="id20">Copyright</a></li>
73</ul> 69</ul>
74</div> 70</div>
75<div class="section" id="status"> 71<div class="section">
76<h1><a class="toc-backref" href="#id7" name="status">Status</a></h1> 72<h1><a class="toc-backref" href="#id7" id="status" name="status">Status</a></h1>
77<p>Withdrawn by request of the author.</p> 73<p>Withdrawn by request of the author.</p>
78</div> 74</div>
79<div class="section" id="abstract"> 75<div class="section">
80<h1><a class="toc-backref" href="#id8" name="abstract">Abstract</a></h1> 76<h1><a class="toc-backref" href="#id8" id="abstract" name="abstract">Abstract</a></h1>
81<p>Currently, USE flags must be selected on a one-by-one basis, making it 77<p>Currently, USE flags must be selected on a one-by-one basis, making it
82time-consuming to set up make.conf appropriately for a machine's role.</p> 78time-consuming to set up make.conf appropriately for a machine's role.</p>
83</div> 79</div>
84<div class="section" id="motivation"> 80<div class="section">
85<h1><a class="toc-backref" href="#id9" name="motivation">Motivation</a></h1> 81<h1><a class="toc-backref" href="#id9" id="motivation" name="motivation">Motivation</a></h1>
86<p>Many packages have optional support for other packages (for example, the 82<p>Many packages have optional support for other packages (for example, the
87Vim text editor can optionally support perl, python and ruby 83Vim text editor can optionally support perl, python and ruby
88interpreters). In Gentoo, these optional dependencies can be selected by 84interpreters). In Gentoo, these optional dependencies can be selected by
89the user using USE flags. This allows a system appropriate for a given 85the user using USE flags. This allows a system appropriate for a given
90environment to be built -- a server, for example, should not typically 86environment to be built -- a server, for example, should not typically
96system. In addition, using &quot;-<em>&quot; to disable all default USE flags can be 92system. In addition, using &quot;-<em>&quot; to disable all default USE flags can be
97risky as certain USE flags should not generally be turned off. This GLEP 93risky as certain USE flags should not generally be turned off. This GLEP
98proposes a mechanism for grouping USE flags to simplify selection and to 94proposes a mechanism for grouping USE flags to simplify selection and to
99make USE=&quot;-</em>&quot; less dangerous.</p> 95make USE=&quot;-</em>&quot; less dangerous.</p>
100</div> 96</div>
101<div class="section" id="specification"> 97<div class="section">
102<h1><a class="toc-backref" href="#id10" name="specification">Specification</a></h1> 98<h1><a class="toc-backref" href="#id10" id="specification" name="specification">Specification</a></h1>
103<div class="section" id="group-specification"> 99<div class="section">
104<h2><a class="toc-backref" href="#id11" name="group-specification">Group Specification</a></h2> 100<h2><a class="toc-backref" href="#id11" id="group-specification" name="group-specification">Group Specification</a></h2>
105<p>A group shall consist of one or more tokens. Each token may be a USE flag, 101<p>A group shall consist of one or more tokens. Each token may be a USE flag,
106a -USE flag, a reference to another group or a negative reference to 102a -USE flag, a reference to another group or a negative reference to
107another group.</p> 103another group.</p>
108<p>These groups are defined in <tt class="docutils literal"><span class="pre">${PORTDIR}/profiles/use.groups</span></tt>. It is 104<p>These groups are defined in <tt class="docutils literal"><span class="pre">${PORTDIR}/profiles/use.groups</span></tt>. It is
109proposed that uppercase names only are used for groups to keep them 105proposed that uppercase names only are used for groups to keep them
152# Illegal circular references 148# Illegal circular references
153GROUP1 &#64;GROUP2 foo 149GROUP1 &#64;GROUP2 foo
154GROUP2 &#64;GROUP1 bar 150GROUP2 &#64;GROUP1 bar
155</pre> 151</pre>
156</div> 152</div>
157<div class="section" id="group-descriptions"> 153<div class="section">
158<h2><a class="toc-backref" href="#id12" name="group-descriptions">Group Descriptions</a></h2> 154<h2><a class="toc-backref" href="#id12" id="group-descriptions" name="group-descriptions">Group Descriptions</a></h2>
159<p>Groups shall have a textual description associated with them in the same 155<p>Groups shall have a textual description associated with them in the same
160way as USE flags. The file <tt class="docutils literal"><span class="pre">${PORTDIR}/profiles/use.groups.desc</span></tt> 156way as USE flags. The file <tt class="docutils literal"><span class="pre">${PORTDIR}/profiles/use.groups.desc</span></tt>
161contains these:</p> 157contains these:</p>
162<pre class="literal-block"> 158<pre class="literal-block">
163# This is a comment 159# This is a comment
164DESKTOP Flags which are appropriate for most desktop systems 160DESKTOP Flags which are appropriate for most desktop systems
165RECOMMENDED Flags which should be enabled on almost all systems 161RECOMMENDED Flags which should be enabled on almost all systems
166</pre> 162</pre>
167</div> 163</div>
168<div class="section" id="using-groups"> 164<div class="section">
169<h2><a class="toc-backref" href="#id13" name="using-groups">Using Groups</a></h2> 165<h2><a class="toc-backref" href="#id13" id="using-groups" name="using-groups">Using Groups</a></h2>
170<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 166<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
171other places where USE flags are normally specified. They may <em>not</em> be 167other places where USE flags are normally specified. They may <em>not</em> be
172used 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> 168used 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>
173<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 169<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
174system might resemble:</p> 170system might resemble:</p>
192USE=&quot;-&#64;GROUP1 &#64;GROUP2 bar -foo -foo -bar bar&quot; 188USE=&quot;-&#64;GROUP1 &#64;GROUP2 bar -foo -foo -bar bar&quot;
193USE=&quot;-foo -bar bar -baz fnord bar -foo -foo -bar bar&quot; 189USE=&quot;-foo -bar bar -baz fnord bar -foo -foo -bar bar&quot;
194USE=&quot;-baz fnord -foo bar&quot; 190USE=&quot;-baz fnord -foo bar&quot;
195</pre> 191</pre>
196</div> 192</div>
197<div class="section" id="issues-with-flags-and-groups"> 193<div class="section">
198<h2><a class="toc-backref" href="#id14" name="issues-with-flags-and-groups">Issues with -flags and <a class="reference" href="mailto:-&#64;GROUPS">-&#64;GROUPS</a></a></h2> 194<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>
199<p>Earlier drafts of this GLEP did not allow -use flags or <a class="reference" href="mailto:-&#64;GROUPS">-&#64;GROUPS</a>. However, 195<p>Earlier drafts of this GLEP did not allow -use flags or <a class="reference" href="mailto:-&#64;GROUPS">-&#64;GROUPS</a>. However,
200because of feedback along the lines of &quot;we shouldn't disallow features 196because of feedback along the lines of &quot;we shouldn't disallow features
201just because some users won't understand them&quot; (for example, <a class="footnote-reference" href="#id6" id="id2" name="id2">[3]</a>), these 197just because some users won't understand them&quot; (for example, <a class="footnote-reference" href="#id6" id="id2" name="id2">[3]</a>), these
202are now allowed but discouraged.</p> 198are now allowed but discouraged.</p>
203<p>The problems are best illustrated by example. Say we have the following 199<p>The problems are best illustrated by example. Say we have the following
232<pre class="literal-block"> 228<pre class="literal-block">
233USE=&quot;X gtk gtk2 gnome -kde -qt&quot; 229USE=&quot;X gtk gtk2 gnome -kde -qt&quot;
234</pre> 230</pre>
235<p>This is clearly not the desired effect.</p> 231<p>This is clearly not the desired effect.</p>
236</div> 232</div>
237<div class="section" id="adding-new-groups"> 233<div class="section">
238<h2><a class="toc-backref" href="#id15" name="adding-new-groups">Adding New Groups</a></h2> 234<h2><a class="toc-backref" href="#id15" id="adding-new-groups" name="adding-new-groups">Adding New Groups</a></h2>
239<p>The actual groups to be created is beyond the scope of this GLEP, and any 235<p>The actual groups to be created is beyond the scope of this GLEP, and any
240group names contained herein should be treated as examples only. Creation 236group names contained herein should be treated as examples only. Creation
241of new groups and changing a group's flags should be discussed on the 237of new groups and changing a group's flags should be discussed on the
242gentoo-dev mailing list as per existing policy for new global USE flags.</p> 238gentoo-dev mailing list as per existing policy for new global USE flags.</p>
243<p>In particular, any changes involving -flags <em>must</em> be thoroughly discussed 239<p>In particular, any changes involving -flags <em>must</em> be thoroughly discussed
244before implementation.</p> 240before implementation.</p>
245</div> 241</div>
246</div> 242</div>
247<div class="section" id="rationale"> 243<div class="section">
248<h1><a class="toc-backref" href="#id16" name="rationale">Rationale</a></h1> 244<h1><a class="toc-backref" href="#id16" id="rationale" name="rationale">Rationale</a></h1>
249<p>USE groups will simplify selecting an appropriate set of USE flags for a 245<p>USE groups will simplify selecting an appropriate set of USE flags for a
250system.</p> 246system.</p>
251</div> 247</div>
252<div class="section" id="reference-implementation"> 248<div class="section">
253<h1><a class="toc-backref" href="#id17" name="reference-implementation">Reference Implementation</a></h1> 249<h1><a class="toc-backref" href="#id17" id="reference-implementation" name="reference-implementation">Reference Implementation</a></h1>
254<p>TODO</p> 250<p>TODO</p>
255</div> 251</div>
256<div class="section" id="backwards-compatibility"> 252<div class="section">
257<h1><a class="toc-backref" href="#id18" name="backwards-compatibility">Backwards Compatibility</a></h1> 253<h1><a class="toc-backref" href="#id18" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
258<p>The user will not need to make any changes to keep their current setup. 254<p>The user will not need to make any changes to keep their current setup.
259Users who are not running a portage version which supports groups can 255Users who are not running a portage version which supports groups can
260carry on using current syntax with no side-effects.</p> 256carry on using current syntax with no side-effects.</p>
261<p>Some tools which work with make.conf and / or USE flags (for example, 257<p>Some tools which work with make.conf and / or USE flags (for example,
262<tt class="docutils literal"><span class="pre">ufed</span></tt>) will need to be updated to understand the new group syntax.</p> 258<tt class="docutils literal"><span class="pre">ufed</span></tt>) will need to be updated to understand the new group syntax.</p>
263<p>There is currently a dynamic list of USE flags available on the Gentoo 259<p>There is currently a dynamic list of USE flags available on the Gentoo
264website <a class="footnote-reference" href="#id5" id="id3" name="id3">[2]</a>. For consistency, a similar list will be needed for USE 260website <a class="footnote-reference" href="#id5" id="id3" name="id3">[2]</a>. For consistency, a similar list will be needed for USE
265groups.</p> 261groups.</p>
266</div> 262</div>
267<div class="section" id="references"> 263<div class="section">
268<h1><a class="toc-backref" href="#id19" name="references">References</a></h1> 264<h1><a class="toc-backref" href="#id19" id="references" name="references">References</a></h1>
269<table class="docutils footnote" frame="void" id="id4" rules="none"> 265<table class="docutils footnote" frame="void" id="id4" rules="none">
270<colgroup><col class="label" /><col /></colgroup> 266<colgroup><col class="label" /><col /></colgroup>
271<tbody valign="top"> 267<tbody valign="top">
272<tr><td class="label"><a class="fn-backref" href="#id1" name="id4">[1]</a></td><td>GLEP 23: Portage handling of ACCEPT_LICENSE 268<tr><td class="label"><a class="fn-backref" href="#id1" name="id4">[1]</a></td><td>GLEP 23: Portage handling of ACCEPT_LICENSE
273(<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> 269(<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>
285<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 281<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
286(<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> 282(<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>
287</tbody> 283</tbody>
288</table> 284</table>
289</div> 285</div>
290<div class="section" id="copyright"> 286<div class="section">
291<h1><a class="toc-backref" href="#id20" name="copyright">Copyright</a></h1> 287<h1><a class="toc-backref" href="#id20" id="copyright" name="copyright">Copyright</a></h1>
292<p>This document has been placed in the public domain.</p> 288<p>This document has been placed in the public domain.</p>
293<blockquote> 289<blockquote>
294vim: set tw=74 :</blockquote> 290vim: set tw=74 :</blockquote>
295</div> 291</div>
296 292
297</div> 293</div>
298<hr class="docutils footer" />
299<div class="footer"> 294<div class="footer">
295<hr class="footer" />
300<a class="reference" href="glep-0029.txt">View document source</a>. 296<a class="reference" href="glep-0029.txt">View document source</a>.
301Generated on: 2005-06-24 21:36 UTC. 297Generated on: 2007-10-13 13:39 UTC.
302Generated 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. 298Generated 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.
299
303</div> 300</div>
304</body> 301</body>
305</html> 302</html>
306 303

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.20