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

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

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

Revision 1.1 Revision 1.3
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.7: http://docutils.sourceforge.net/" /> 11 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 37 -- Virtuals Deprecation</title> 12 <title>GLEP 37 -- Virtuals Deprecation</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: 2006/10/10 20:25:14 $
19:version: $Revision: 1.3 $
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/peps">GLEP Index</a></b>]
25[<b><a href="./glep-0037.txt">GLEP Source</a></b>] 268[<b><a href="http://www.gentoo.org/proj/en/glep/glep-0037.txt">GLEP Source</a></b>]
26</td></tr></table> 269</td></tr></table>
27<table class="rfc2822 docutils field-list" frame="void" rules="none"> 270<table class="rfc2822 docutils field-list" frame="void" rules="none">
28<col class="field-name" /> 271<col class="field-name" />
29<col class="field-body" /> 272<col class="field-body" />
30<tbody valign="top"> 273<tbody valign="top">
31<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">37</td> 274<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">37</td>
32</tr> 275</tr>
33<tr class="field"><th class="field-name">Title:</th><td class="field-body">Virtuals Deprecation</td> 276<tr class="field"><th class="field-name">Title:</th><td class="field-body">Virtuals Deprecation</td>
34</tr> 277</tr>
35<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.2</td>
36</tr> 279</tr>
37<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-0037.txt?cvsroot=gentoo">2005/04/30 22:35:58</a></td> 280<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-0037.txt?cvsroot=gentoo">2006/09/05 20:54:30</a></td>
38</tr> 281</tr>
39<tr class="field"><th class="field-name">Author:</th><td class="field-body">Jason Stubbs &lt;jstubbs&#32;&#97;t&#32;gentoo.org&gt;</td> 282<tr class="field"><th class="field-name">Author:</th><td class="field-body">Jason Stubbs &lt;jstubbs&#32;&#97;t&#32;gentoo.org&gt;</td>
40</tr> 283</tr>
41<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">deferred</td>
42</tr> 285</tr>
43<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>
44</tr> 287</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> 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>
46</tr> 289</tr>
47<tr class="field"><th class="field-name">Created:</th><td class="field-body">30-April-2005</td> 290<tr class="field"><th class="field-name">Created:</th><td class="field-body">30-April-2005</td>
48</tr> 291</tr>
49<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">30-April-2005</td> 292<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">30-April-2005, 5-Sep-2006</td>
50</tr> 293</tr>
51</tbody> 294</tbody>
52</table> 295</table>
53<hr /> 296<hr />
54<div class="contents topic" id="contents"> 297<div class="contents topic">
55<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>
56<ul class="simple"> 299<ul class="simple">
300<li><a class="reference" href="#status" id="id2" name="id2">Status</a></li>
57<li><a class="reference" href="#credits" id="id2" name="id2">Credits</a></li> 301<li><a class="reference" href="#credits" id="id3" name="id3">Credits</a></li>
58<li><a class="reference" href="#abstract" id="id3" name="id3">Abstract</a></li> 302<li><a class="reference" href="#abstract" id="id4" name="id4">Abstract</a></li>
59<li><a class="reference" href="#motivation" id="id4" name="id4">Motivation</a></li> 303<li><a class="reference" href="#motivation" id="id5" name="id5">Motivation</a></li>
60<li><a class="reference" href="#specification" id="id5" name="id5">Specification</a><ul> 304<li><a class="reference" href="#specification" id="id6" name="id6">Specification</a><ul>
61<li><a class="reference" href="#consistency" id="id6" name="id6">Consistency</a></li> 305<li><a class="reference" href="#consistency" id="id7" name="id7">Consistency</a></li>
62<li><a class="reference" href="#overrides" id="id7" name="id7">Overrides</a></li> 306<li><a class="reference" href="#overrides" id="id8" name="id8">Overrides</a></li>
63</ul> 307</ul>
64</li> 308</li>
65<li><a class="reference" href="#rationale" id="id8" name="id8">Rationale</a></li> 309<li><a class="reference" href="#rationale" id="id9" name="id9">Rationale</a></li>
66<li><a class="reference" href="#backwards-compatibility" id="id9" name="id9">Backwards Compatibility</a></li> 310<li><a class="reference" href="#backwards-compatibility" id="id10" name="id10">Backwards Compatibility</a></li>
67<li><a class="reference" href="#copyright" id="id10" name="id10">Copyright</a></li> 311<li><a class="reference" href="#copyright" id="id11" name="id11">Copyright</a></li>
68</ul> 312</ul>
69</div> 313</div>
70<div class="section" id="credits"> 314<div class="section">
315<h1><a class="toc-backref" href="#id2" id="status" name="status">Status</a></h1>
316<p>What has been implemented so far diverges somewhat from what is
317stated in this GLEP. As such, this GLEP (in its current form)
318has been marked &quot;deferred&quot;.</p>
319</div>
320<div class="section">
71<h1><a class="toc-backref" href="#id2" name="credits">Credits</a></h1> 321<h1><a class="toc-backref" href="#id3" id="credits" name="credits">Credits</a></h1>
72<p>Most ideas in this GLEP came out of discussion with Thomas de Grenier de 322<p>Most ideas in this GLEP came out of discussion with Thomas de Grenier de
73Latour. Ciaran McCreesh, Brian Harring and Stephen Bennett have also provided 323Latour. Ciaran McCreesh, Brian Harring and Stephen Bennett have also provided
74help in fleshing out the idea.</p> 324help in fleshing out the idea.</p>
75</div> 325</div>
76<div class="section" id="abstract"> 326<div class="section">
77<h1><a class="toc-backref" href="#id3" name="abstract">Abstract</a></h1> 327<h1><a class="toc-backref" href="#id4" id="abstract" name="abstract">Abstract</a></h1>
78<p>This GLEP covers the pitfalls of the current virtuals system, the benefits of 328<p>This GLEP covers the pitfalls of the current virtuals system, the benefits of
79using regular ebuilds to serve the purpose of virtuals and what needs to be 329using regular ebuilds to serve the purpose of virtuals and what needs to be
80supported to make it viable.</p> 330supported to make it viable.</p>
81</div> 331</div>
82<div class="section" id="motivation"> 332<div class="section">
83<h1><a class="toc-backref" href="#id4" name="motivation">Motivation</a></h1> 333<h1><a class="toc-backref" href="#id5" id="motivation" name="motivation">Motivation</a></h1>
84<p>The current virtuals system is decentralized; that is there is no way to find 334<p>The current virtuals system is decentralized; that is there is no way to find
85information about a specific virtual other than to scan all packages for what 335information about a specific virtual other than to scan all packages for what
86they provide. There is also no way to tell whether an atom is a virtual or 336they provide. There is also no way to tell whether an atom is a virtual or
87not - yes, the &quot;virtual/&quot; prefix could have been used but it isn't which has 337not - yes, the &quot;virtual/&quot; prefix could have been used but it isn't which has
88led to its abuse.</p> 338led to its abuse.</p>
94<p>The current virtuals system also has some other major shortcomings. The most 344<p>The current virtuals system also has some other major shortcomings. The most
95well known case is virtual/jdk and kaffe. Kaffe-1.1.4 implements the Java 1.4 345well known case is virtual/jdk and kaffe. Kaffe-1.1.4 implements the Java 1.4
96API but can not satisfy a package that requires &gt;=virtual/jdk-1.4 because 346API but can not satisfy a package that requires &gt;=virtual/jdk-1.4 because
97kaffe's versioning scheme differs. (ED: Need to add some more here. ;)</p> 347kaffe's versioning scheme differs. (ED: Need to add some more here. ;)</p>
98</div> 348</div>
99<div class="section" id="specification"> 349<div class="section">
100<h1><a class="toc-backref" href="#id5" name="specification">Specification</a></h1> 350<h1><a class="toc-backref" href="#id6" id="specification" name="specification">Specification</a></h1>
101<p>This GLEP recommends that virtuals become no different to regular packages. 351<p>This GLEP recommends that virtuals become no different to regular packages.
102Specifically, the standard virtual would include the DESCRIPTION, KEYWORDS, 352Specifically, the standard virtual would include the DESCRIPTION, KEYWORDS,
103IUSE and RDEPEND metadata. An example would be something like this:</p> 353IUSE and RDEPEND metadata. An example would be something like this:</p>
104<pre class="literal-block"> 354<pre class="literal-block">
105DESCRIPTION=&quot;Java Development Kit 1.4&quot; 355DESCRIPTION=&quot;Java Development Kit 1.4&quot;
112 =dev-java/sun-jdk-1.4* 362 =dev-java/sun-jdk-1.4*
113 )&quot; 363 )&quot;
114IUSE=&quot;&quot; 364IUSE=&quot;&quot;
115</pre> 365</pre>
116<p>However, there are some issues that have been brought up with doing this.</p> 366<p>However, there are some issues that have been brought up with doing this.</p>
117<div class="section" id="consistency"> 367<div class="section">
118<h2><a class="toc-backref" href="#id6" name="consistency">Consistency</a></h2> 368<h2><a class="toc-backref" href="#id7" id="consistency" name="consistency">Consistency</a></h2>
119<p>Presently, it is very easy to remove packages even if others are dependent 369<p>Presently, it is very easy to remove packages even if others are dependent
120on them, which can lead to broken emerges when packages rely on indirect 370on them, which can lead to broken emerges when packages rely on indirect
121dependencies. For example, if kdelibs is merged bringing in qt and then 371dependencies. For example, if kdelibs is merged bringing in qt and then
122qt is unmerged, attempting to merge kdebase will likely fail. This becomes 372qt is unmerged, attempting to merge kdebase will likely fail. This becomes
123a much bigger problem with virtuals as packages because the dependencies 373a much bigger problem with virtuals as packages because the dependencies
126verification to portage. The details of how it will be done are outside the 376verification to portage. The details of how it will be done are outside the
127scope of this GLEP, but essentially this means that portage will need to be 377scope of this GLEP, but essentially this means that portage will need to be
128forced to unmerge a package that is depended on by another and will also be 378forced to unmerge a package that is depended on by another and will also be
129able to scan and fix any broken dependencies.</p> 379able to scan and fix any broken dependencies.</p>
130</div> 380</div>
131<div class="section" id="overrides"> 381<div class="section">
132<h2><a class="toc-backref" href="#id7" name="overrides">Overrides</a></h2> 382<h2><a class="toc-backref" href="#id8" id="overrides" name="overrides">Overrides</a></h2>
133<p>Profiles currently specify the default provider of each virtual and users are 383<p>Profiles currently specify the default provider of each virtual and users are
134able to override these defaults using /etc/portage/profile/virtuals. If 384able to override these defaults using /etc/portage/profile/virtuals. If
135virtuals are replaced by regular packages and thus able to have arbitrarily 385virtuals are replaced by regular packages and thus able to have arbitrarily
136complex DEPENDs, the current method of overriding default virtuals can not 386complex DEPENDs, the current method of overriding default virtuals can not
137be extended to support this.</p> 387be extended to support this.</p>
185 ) 435 )
186</pre> 436</pre>
187<p>Ranged deps are outside of the scope of this GLEP.</p> 437<p>Ranged deps are outside of the scope of this GLEP.</p>
188</div> 438</div>
189</div> 439</div>
190<div class="section" id="rationale"> 440<div class="section">
191<h1><a class="toc-backref" href="#id8" name="rationale">Rationale</a></h1> 441<h1><a class="toc-backref" href="#id9" id="rationale" name="rationale">Rationale</a></h1>
192<p>The number one advantage is that it offers more power to both the user and 442<p>The number one advantage is that it offers more power to both the user and
193the developer. Flexibility of virtuals is far greater in this scheme and 443the developer. Flexibility of virtuals is far greater in this scheme and
194fulfills requirements that exist already. It also means that the maintainers 444fulfills requirements that exist already. It also means that the maintainers
195of profiles will not need to list a default for every virtual. The user 445of profiles will not need to list a default for every virtual. The user
196benefits by being able to easily gather a list of providers of a virtual as 446benefits by being able to easily gather a list of providers of a virtual as
201feature, for example USE-based PROVIDEs. This scheme is also much easier to 451feature, for example USE-based PROVIDEs. This scheme is also much easier to
202optimize which will benefit the processing of all packages. It also means 452optimize which will benefit the processing of all packages. It also means
203that any additions to the DEPEND vocabulary become available for use in the 453that any additions to the DEPEND vocabulary become available for use in the
204definitions of virtuals.</p> 454definitions of virtuals.</p>
205</div> 455</div>
206<div class="section" id="backwards-compatibility"> 456<div class="section">
207<h1><a class="toc-backref" href="#id9" name="backwards-compatibility">Backwards Compatibility</a></h1> 457<h1><a class="toc-backref" href="#id10" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
208<p>Compatibility will begin by making 2.0.51.20 treat unknown virtuals like 458<p>Compatibility will begin by making 2.0.51.20 treat unknown virtuals like
209regular packages. When the tree is stripped of PROVIDEs and &quot;virtuals&quot; 459regular packages. When the tree is stripped of PROVIDEs and &quot;virtuals&quot;
210override files, the only virtuals that these portages will use are those that 460override files, the only virtuals that these portages will use are those that
211the user has specified and those gleaned from installed packages. Any 461the user has specified and those gleaned from installed packages. Any
212unknown virtual will be treated like a regular package and looked for in the 462unknown virtual will be treated like a regular package and looked for in the
219<p>Dropping of support of current style virtuals is planned for the following 469<p>Dropping of support of current style virtuals is planned for the following
220major version of portage (2.2.0). When the time comes to release it, scripts 470major version of portage (2.2.0). When the time comes to release it, scripts
221will be written to create packages from the existing virtuals system as well 471will be written to create packages from the existing virtuals system as well
222as to create appropriate package.prefer overrides within the profiles.</p> 472as to create appropriate package.prefer overrides within the profiles.</p>
223</div> 473</div>
224<div class="section" id="copyright"> 474<div class="section">
225<h1><a class="toc-backref" href="#id10" name="copyright">Copyright</a></h1> 475<h1><a class="toc-backref" href="#id11" id="copyright" name="copyright">Copyright</a></h1>
226<p>This document has been placed in the public domain.</p> 476<p>This document has been placed in the public domain.</p>
227</div> 477</div>
228 478
229</div> 479</div>
230<hr class="docutils footer" />
231<div class="footer"> 480<div class="footer">
481<hr class="footer" />
232<a class="reference" href="glep-0037.txt">View document source</a>. 482<a class="reference" href="glep-0037.txt">View document source</a>.
233Generated on: 2005-04-30 22:36 UTC. 483Generated on: 2006-10-10 20:23 UTC.
234Generated 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. 484Generated 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.
485
235</div> 486</div>
236</body> 487</body>
237</html> 488</html>
238 489

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

  ViewVC Help
Powered by ViewVC 1.1.20