/[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.5
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 37 -- Virtuals Deprecation</title> 8 <title>GLEP 37 -- Virtuals Deprecation</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-0037.txt">GLEP Source</a></b>] 21[<b><a href="http://www.gentoo.org/proj/en/glep/glep-0037.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">37</td> 27<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">37</td>
32</tr> 28</tr>
33<tr class="field"><th class="field-name">Title:</th><td class="field-body">Virtuals Deprecation</td> 29<tr class="field"><th class="field-name">Title:</th><td class="field-body">Virtuals Deprecation</td>
34</tr> 30</tr>
35<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.1</td> 31<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.2</td>
36</tr> 32</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> 33<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> 34</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> 35<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> 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">deferred</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">30-April-2005</td> 43<tr class="field"><th class="field-name">Created:</th><td class="field-body">30-April-2005</td>
48</tr> 44</tr>
49<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">30-April-2005</td> 45<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">30-April-2005, 5-Sep-2006</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">
53<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> 54<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> 55<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> 56<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> 57<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> 58<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> 59<li><a class="reference" href="#overrides" id="id8" name="id8">Overrides</a></li>
63</ul> 60</ul>
64</li> 61</li>
65<li><a class="reference" href="#rationale" id="id8" name="id8">Rationale</a></li> 62<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> 63<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> 64<li><a class="reference" href="#copyright" id="id11" name="id11">Copyright</a></li>
68</ul> 65</ul>
69</div> 66</div>
70<div class="section" id="credits"> 67<div class="section">
68<h1><a class="toc-backref" href="#id2" id="status" name="status">Status</a></h1>
69<p>What has been implemented so far diverges somewhat from what is
70stated in this GLEP. As such, this GLEP (in its current form)
71has been marked &quot;deferred&quot;.</p>
72</div>
73<div class="section">
71<h1><a class="toc-backref" href="#id2" name="credits">Credits</a></h1> 74<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 75<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 76Latour. Ciaran McCreesh, Brian Harring and Stephen Bennett have also provided
74help in fleshing out the idea.</p> 77help in fleshing out the idea.</p>
75</div> 78</div>
76<div class="section" id="abstract"> 79<div class="section">
77<h1><a class="toc-backref" href="#id3" name="abstract">Abstract</a></h1> 80<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 81<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 82using regular ebuilds to serve the purpose of virtuals and what needs to be
80supported to make it viable.</p> 83supported to make it viable.</p>
81</div> 84</div>
82<div class="section" id="motivation"> 85<div class="section">
83<h1><a class="toc-backref" href="#id4" name="motivation">Motivation</a></h1> 86<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 87<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 88information 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 89they 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 90not - yes, the &quot;virtual/&quot; prefix could have been used but it isn't which has
88led to its abuse.</p> 91led to its abuse.</p>
94<p>The current virtuals system also has some other major shortcomings. The most 97<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 98well 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 99API 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> 100kaffe's versioning scheme differs. (ED: Need to add some more here. ;)</p>
98</div> 101</div>
99<div class="section" id="specification"> 102<div class="section">
100<h1><a class="toc-backref" href="#id5" name="specification">Specification</a></h1> 103<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. 104<p>This GLEP recommends that virtuals become no different to regular packages.
102Specifically, the standard virtual would include the DESCRIPTION, KEYWORDS, 105Specifically, the standard virtual would include the DESCRIPTION, KEYWORDS,
103IUSE and RDEPEND metadata. An example would be something like this:</p> 106IUSE and RDEPEND metadata. An example would be something like this:</p>
104<pre class="literal-block"> 107<pre class="literal-block">
105DESCRIPTION=&quot;Java Development Kit 1.4&quot; 108DESCRIPTION=&quot;Java Development Kit 1.4&quot;
112 =dev-java/sun-jdk-1.4* 115 =dev-java/sun-jdk-1.4*
113 )&quot; 116 )&quot;
114IUSE=&quot;&quot; 117IUSE=&quot;&quot;
115</pre> 118</pre>
116<p>However, there are some issues that have been brought up with doing this.</p> 119<p>However, there are some issues that have been brought up with doing this.</p>
117<div class="section" id="consistency"> 120<div class="section">
118<h2><a class="toc-backref" href="#id6" name="consistency">Consistency</a></h2> 121<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 122<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 123on them, which can lead to broken emerges when packages rely on indirect
121dependencies. For example, if kdelibs is merged bringing in qt and then 124dependencies. For example, if kdelibs is merged bringing in qt and then
122qt is unmerged, attempting to merge kdebase will likely fail. This becomes 125qt is unmerged, attempting to merge kdebase will likely fail. This becomes
123a much bigger problem with virtuals as packages because the dependencies 126a much bigger problem with virtuals as packages because the dependencies
126verification to portage. The details of how it will be done are outside the 129verification 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 130scope 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 131forced to unmerge a package that is depended on by another and will also be
129able to scan and fix any broken dependencies.</p> 132able to scan and fix any broken dependencies.</p>
130</div> 133</div>
131<div class="section" id="overrides"> 134<div class="section">
132<h2><a class="toc-backref" href="#id7" name="overrides">Overrides</a></h2> 135<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 136<p>Profiles currently specify the default provider of each virtual and users are
134able to override these defaults using /etc/portage/profile/virtuals. If 137able to override these defaults using /etc/portage/profile/virtuals. If
135virtuals are replaced by regular packages and thus able to have arbitrarily 138virtuals are replaced by regular packages and thus able to have arbitrarily
136complex DEPENDs, the current method of overriding default virtuals can not 139complex DEPENDs, the current method of overriding default virtuals can not
137be extended to support this.</p> 140be extended to support this.</p>
185 ) 188 )
186</pre> 189</pre>
187<p>Ranged deps are outside of the scope of this GLEP.</p> 190<p>Ranged deps are outside of the scope of this GLEP.</p>
188</div> 191</div>
189</div> 192</div>
190<div class="section" id="rationale"> 193<div class="section">
191<h1><a class="toc-backref" href="#id8" name="rationale">Rationale</a></h1> 194<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 195<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 196the developer. Flexibility of virtuals is far greater in this scheme and
194fulfills requirements that exist already. It also means that the maintainers 197fulfills requirements that exist already. It also means that the maintainers
195of profiles will not need to list a default for every virtual. The user 198of 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 199benefits 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 204feature, for example USE-based PROVIDEs. This scheme is also much easier to
202optimize which will benefit the processing of all packages. It also means 205optimize which will benefit the processing of all packages. It also means
203that any additions to the DEPEND vocabulary become available for use in the 206that any additions to the DEPEND vocabulary become available for use in the
204definitions of virtuals.</p> 207definitions of virtuals.</p>
205</div> 208</div>
206<div class="section" id="backwards-compatibility"> 209<div class="section">
207<h1><a class="toc-backref" href="#id9" name="backwards-compatibility">Backwards Compatibility</a></h1> 210<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 211<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; 212regular 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 213override files, the only virtuals that these portages will use are those that
211the user has specified and those gleaned from installed packages. Any 214the user has specified and those gleaned from installed packages. Any
212unknown virtual will be treated like a regular package and looked for in the 215unknown 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 222<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 223major 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 224will be written to create packages from the existing virtuals system as well
222as to create appropriate package.prefer overrides within the profiles.</p> 225as to create appropriate package.prefer overrides within the profiles.</p>
223</div> 226</div>
224<div class="section" id="copyright"> 227<div class="section">
225<h1><a class="toc-backref" href="#id10" name="copyright">Copyright</a></h1> 228<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> 229<p>This document has been placed in the public domain.</p>
227</div> 230</div>
228 231
229</div> 232</div>
230<hr class="docutils footer" />
231<div class="footer"> 233<div class="footer">
234<hr class="footer" />
232<a class="reference" href="glep-0037.txt">View document source</a>. 235<a class="reference" href="glep-0037.txt">View document source</a>.
233Generated on: 2005-04-30 22:36 UTC. 236Generated on: 2007-10-13 13:39 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. 237Generated 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.
238
235</div> 239</div>
236</body> 240</body>
237</html> 241</html>
238 242

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

  ViewVC Help
Powered by ViewVC 1.1.20