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

Diff of /xml/htdocs/proj/en/glep/glep-0026.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.0: http://docutils.sourceforge.net/" /> 7 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 26 -- Handling kernels with portage</title> 8 <title>GLEP 26 -- Handling kernels with portage</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"
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="http://www.gentoo.org/proj/en/glep/glep-0026.txt">GLEP Source</a></b>] 21[<b><a href="http://www.gentoo.org/proj/en/glep/glep-0026.txt">GLEP Source</a></b>]
26</td></tr></table> 22</td></tr></table>
27<div class="document">
28<table class="rfc2822 field-list" frame="void" rules="none"> 23<table class="rfc2822 docutils field-list" frame="void" rules="none">
29<col class="field-name" /> 24<col class="field-name" />
30<col class="field-body" /> 25<col class="field-body" />
31<tbody valign="top"> 26<tbody valign="top">
32<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">26</td> 27<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">26</td>
33</tr> 28</tr>
34<tr class="field"><th class="field-name">Title:</th><td class="field-body">Handling kernels with portage</td> 29<tr class="field"><th class="field-name">Title:</th><td class="field-body">Handling kernels with portage</td>
35</tr> 30</tr>
36<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>
37</tr> 32</tr>
38<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-0026.txt?cvsroot=gentoo">2004/05/03 01:48:45</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-0026.txt?cvsroot=gentoo">2004/11/11 21:32:21</a></td>
39</tr> 34</tr>
40<tr class="field"><th class="field-name">Author:</th><td class="field-body">Nathaniel McCallum &lt;npmccallum&#32;&#97;t&#32;gentoo.org&gt;, Joshua Campbell &lt;warpzero&#32;&#97;t&#32;gentoo.org&gt;</td> 35<tr class="field"><th class="field-name">Author:</th><td class="field-body">Nathaniel McCallum &lt;npmccallum&#32;&#97;t&#32;gentoo.org&gt;, Joshua Campbell &lt;warpzero&#32;&#97;t&#32;gentoo.org&gt;</td>
41</tr> 36</tr>
42<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>
43</tr> 38</tr>
44<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>
45</tr> 40</tr>
46<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> 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>
47</tr> 42</tr>
48<tr class="field"><th class="field-name">Created:</th><td class="field-body">2-May-2004</td> 43<tr class="field"><th class="field-name">Created:</th><td class="field-body">2-May-2004</td>
49</tr> 44</tr>
50<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">2-May-2004</td> 45<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">2-May-2004, 11-Nov-2004</td>
51</tr> 46</tr>
52</tbody> 47</tbody>
53</table> 48</table>
54<hr /> 49<hr />
55<div class="contents topic" id="contents"> 50<div class="contents topic">
56<p class="topic-title"><a name="contents">Contents</a></p> 51<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
57<ul class="simple"> 52<ul class="simple">
58<li><a class="reference" href="#abstract" id="id2" name="id2">Abstract</a></li> 53<li><a class="reference" href="#abstract" id="id2" name="id2">Abstract</a></li>
54<li><a class="reference" href="#status" id="id3" name="id3">Status</a></li>
59<li><a class="reference" href="#motivation" id="id3" name="id3">Motivation</a></li> 55<li><a class="reference" href="#motivation" id="id4" name="id4">Motivation</a></li>
60<li><a class="reference" href="#specification" id="id4" name="id4">Specification</a></li> 56<li><a class="reference" href="#specification" id="id5" name="id5">Specification</a></li>
61<li><a class="reference" href="#rationale" id="id5" name="id5">Rationale</a></li> 57<li><a class="reference" href="#rationale" id="id6" name="id6">Rationale</a></li>
62<li><a class="reference" href="#backwards-compatibility" id="id6" name="id6">Backwards Compatibility</a></li> 58<li><a class="reference" href="#backwards-compatibility" id="id7" name="id7">Backwards Compatibility</a></li>
63<li><a class="reference" href="#reference-implementation" id="id7" name="id7">Reference Implementation</a></li> 59<li><a class="reference" href="#reference-implementation" id="id8" name="id8">Reference Implementation</a></li>
64<li><a class="reference" href="#copyright" id="id8" name="id8">Copyright</a></li> 60<li><a class="reference" href="#copyright" id="id9" name="id9">Copyright</a></li>
65</ul> 61</ul>
66</div> 62</div>
67<div class="section" id="abstract"> 63<div class="section">
68<h1><a class="toc-backref" href="#id2" name="abstract">Abstract</a></h1> 64<h1><a class="toc-backref" href="#id2" id="abstract" name="abstract">Abstract</a></h1>
69<p>This GLEP proposes to create a more consistent handling of kernels and kernel building. 65<p>This GLEP proposes to create a more consistent handling of kernels and kernel building.
70Currently &quot;emerge kernel-name&quot; only installs the sources and does not build anything. 66Currently &quot;emerge kernel-name&quot; only installs the sources and does not build anything.
71&quot;emerge kernel-name&quot; should install only sources OR only a binary kernel, its modules, 67&quot;emerge kernel-name&quot; should install only sources OR only a binary kernel, its modules,
72and a tarballed package of kernel-headers, depending on USE flag.</p> 68and a tarballed package of kernel-headers, depending on USE flag.</p>
73</div> 69</div>
74<div class="section" id="motivation"> 70<div class="section">
71<h1><a class="toc-backref" href="#id3" id="status" name="status">Status</a></h1>
72<p>Timed out</p>
73</div>
74<div class="section">
75<h1><a class="toc-backref" href="#id3" name="motivation">Motivation</a></h1> 75<h1><a class="toc-backref" href="#id4" id="motivation" name="motivation">Motivation</a></h1>
76<p>Currently, the only automated kernel build proceedure that we have is genkernel. While 76<p>Currently, the only automated kernel build proceedure that we have is genkernel. While
77genkernel is a great tool, its main weakness is that it does not port well to other 77genkernel is a great tool, its main weakness is that it does not port well to other
78arches because of the initrd and the lack of good &quot;generic&quot; settings for other arches. 78arches because of the initrd and the lack of good &quot;generic&quot; settings for other arches.
79This GLEP hopes to overcome this by abstracting the various layers of genkernel and 79This GLEP hopes to overcome this by abstracting the various layers of genkernel and
80implementing the most common aspect (the build proceedure) into a portage eclass.</p> 80implementing the most common aspect (the build proceedure) into a portage eclass.</p>
81</div> 81</div>
82<div class="section" id="specification"> 82<div class="section">
83<h1><a class="toc-backref" href="#id4" name="specification">Specification</a></h1> 83<h1><a class="toc-backref" href="#id5" id="specification" name="specification">Specification</a></h1>
84<p>There would be 3 layers to kernel building: (place of implementation)</p> 84<p>There would be 3 layers to kernel building: (place of implementation)</p>
85<blockquote> 85<blockquote>
86<ul class="simple"> 86<ul class="simple">
87<li>Stage 1 - Configuring the kernel (optional) -- external utility</li> 87<li>Stage 1 - Configuring the kernel (optional) -- external utility</li>
88<li>Stage 2 - Building the kernel -- in an eclass</li> 88<li>Stage 2 - Building the kernel -- in an eclass</li>
91</blockquote> 91</blockquote>
92<p>Stages 1 and 3 are optional on most arches.</p> 92<p>Stages 1 and 3 are optional on most arches.</p>
93<p>Stage 1 would be achieved through a seperate utility (perhaps like the current 93<p>Stage 1 would be achieved through a seperate utility (perhaps like the current
94genkernel). This utility would help the user configure the kernel and any kernel/build 94genkernel). This utility would help the user configure the kernel and any kernel/build
95related settings. This stage is optional and would only be used if a person wanted a 95related settings. This stage is optional and would only be used if a person wanted a
96customized kernel settings. One optional thought is to have this utility a part of the 96customized kernel settings. One optional thought is to have this utility a part of the
97base Gentoo system. That way there are less steps to make a custom kernel.</p> 97base Gentoo system. That way there are less steps to make a custom kernel.</p>
98<p>Stage 2 would be implimented through an eclass. This stage is not optional. One would 98<p>Stage 2 would be implimented through an eclass. This stage is not optional. One would
99perform this step by typing &quot;emerge kernel-name&quot;, where &quot;kernel-name&quot; is the name of 99perform this step by typing &quot;emerge kernel-name&quot;, where &quot;kernel-name&quot; is the name of
100the kernel package you want to use (ie. &quot;gentoo-dev&quot;). This package would have a 100the kernel package you want to use (ie. &quot;gentoo-dev&quot;). This package would have a
101&quot;buildkernel&quot; USE flag. If the flag was not set, it would simply download and install 101&quot;buildkernel&quot; USE flag. If the flag was not set, it would simply download and install
102sources like we do currently. However, if the &quot;buildkernel&quot; flag is set, portage will 102sources like we do currently. However, if the &quot;buildkernel&quot; flag is set, portage will
103perform the following steps:</p> 103perform the following steps:</p>
104<blockquote> 104<blockquote>
105<ol class="arabic simple"> 105<ol class="arabic simple">
106<li>(as a dependency) download and install a tarball of &quot;generic&quot; kernel config files.</li> 106<li>(as a dependency) download and install a tarball of &quot;generic&quot; kernel config files.</li>
107<li>Check to see if customized kernel config/settings have been set via Stage 1.</li> 107<li>Check to see if customized kernel config/settings have been set via Stage 1.</li>
121kernel or, lacking a running kernel, the newest kernel installed (by version/date installed?). 121kernel or, lacking a running kernel, the newest kernel installed (by version/date installed?).
122Initrd's can't be used on all arches, so this ebuild can be keyword masked as appropriate. 122Initrd's can't be used on all arches, so this ebuild can be keyword masked as appropriate.
123The initrd package would also have a &quot;bootsplash&quot; USE flag (on x86, maybe others) that 123The initrd package would also have a &quot;bootsplash&quot; USE flag (on x86, maybe others) that
124would build in bootsplash support. Any non-default actions desired by the user can be 124would build in bootsplash support. Any non-default actions desired by the user can be
125handled with the utility from Stage 1.</p> 125handled with the utility from Stage 1.</p>
126<p>This would lead us to several case scenarios (assuming kernel-config is part of the base 126<p>This would lead us to several case scenarios (assuming kernel-config is part of the base
127system):</p> 127system):</p>
128<blockquote> 128<blockquote>
129<ol class="arabic"> 129<ol class="arabic">
130<li><p class="first">default kernel, no initrd: &quot;emerge gentoo-kernel&quot;</p> 130<li><p class="first">default kernel, no initrd: &quot;emerge gentoo-kernel&quot;</p>
131</li> 131</li>
132<li><p class="first">default kernel, initrd: &quot;emerge aa-kernel initrd&quot;</p> 132<li><p class="first">default kernel, initrd: &quot;emerge aa-kernel initrd&quot;</p>
133</li> 133</li>
134<li><p class="first">default kernel, bootsplash initrd: &quot;USE=bootsplash emerge mm-kernel initrd&quot;</p> 134<li><p class="first">default kernel, bootsplash initrd: &quot;USE=bootsplash emerge mm-kernel initrd&quot;</p>
135</li> 135</li>
136<li><dl class="first"> 136<li><dl class="first docutils">
137<dt>non-default kernel, no initrd: &quot;kernel-config gentoo-dev-kernel&quot;</dt> 137<dt>non-default kernel, no initrd: &quot;kernel-config gentoo-dev-kernel&quot;</dt>
138<dd><p class="first last">&quot;emerge gentoo-dev-kernel&quot;</p> 138<dd><p class="first last">&quot;emerge gentoo-dev-kernel&quot;</p>
139</dd> 139</dd>
140</dl> 140</dl>
141</li> 141</li>
142<li><dl class="first"> 142<li><dl class="first docutils">
143<dt>non-default kernel, initrd: &quot;kernel-config alpha-kernel&quot;</dt> 143<dt>non-default kernel, initrd: &quot;kernel-config alpha-kernel&quot;</dt>
144<dd><p class="first last">&quot;emerge alpha-kernel initrd&quot;</p> 144<dd><p class="first last">&quot;emerge alpha-kernel initrd&quot;</p>
145</dd> 145</dd>
146</dl> 146</dl>
147</li> 147</li>
148<li><p class="first">JUST sources, no binary &quot;USE=-buildkernel emerge grsec-kernel&quot;</p> 148<li><p class="first">JUST sources, no binary &quot;USE=-buildkernel emerge grsec-kernel&quot;</p>
149</li> 149</li>
150</ol> 150</ol>
151</blockquote> 151</blockquote>
152</div> 152</div>
153<div class="section" id="rationale"> 153<div class="section">
154<h1><a class="toc-backref" href="#id5" name="rationale">Rationale</a></h1> 154<h1><a class="toc-backref" href="#id6" id="rationale" name="rationale">Rationale</a></h1>
155<p>There are many advantages gained by this method:</p> 155<p>There are many advantages gained by this method:</p>
156<blockquote> 156<blockquote>
157<ol class="arabic simple"> 157<ol class="arabic simple">
158<li>Full arch support (GentooInstaller really could use this)</li> 158<li>Full arch support (GentooInstaller really could use this)</li>
159<li>More consistent with the rest of portage (installs binaries by building from source)</li> 159<li>More consistent with the rest of portage (installs binaries by building from source)</li>
166</blockquote> 166</blockquote>
167<p>The major problem is, however, that we currently have two different build systems, 167<p>The major problem is, however, that we currently have two different build systems,
168portage and genkernel. Having competing build systems is not a GoodThing TM. Therefore, 168portage and genkernel. Having competing build systems is not a GoodThing TM. Therefore,
169we can either make portage build kernels or we can make genkernel build everything else.</p> 169we can either make portage build kernels or we can make genkernel build everything else.</p>
170</div> 170</div>
171<div class="section" id="backwards-compatibility"> 171<div class="section">
172<h1><a class="toc-backref" href="#id6" name="backwards-compatibility">Backwards Compatibility</a></h1> 172<h1><a class="toc-backref" href="#id7" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
173<p>If you want to emerge kernel sources the old way, just do: USE=&quot;-buildkernel&quot; emerge kernel-name</p> 173<p>If you want to emerge kernel sources the old way, just do: USE=&quot;-buildkernel&quot; emerge kernel-name</p>
174<p>Perhaps we could also name the new kernel-config program (from Stage 1) &quot;genkernel&quot; so that users 174<p>Perhaps we could also name the new kernel-config program (from Stage 1) &quot;genkernel&quot; so that users
175can have a seemless transition.</p> 175can have a seemless transition.</p>
176</div> 176</div>
177<div class="section" id="reference-implementation"> 177<div class="section">
178<h1><a class="toc-backref" href="#id7" name="reference-implementation">Reference Implementation</a></h1> 178<h1><a class="toc-backref" href="#id8" id="reference-implementation" name="reference-implementation">Reference Implementation</a></h1>
179<p>not yet ..</p> 179<p>not yet ..</p>
180</div> 180</div>
181<div class="section" id="copyright"> 181<div class="section">
182<h1><a class="toc-backref" href="#id8" name="copyright">Copyright</a></h1> 182<h1><a class="toc-backref" href="#id9" id="copyright" name="copyright">Copyright</a></h1>
183<p>This document has been placed in the public domain.</p> 183<p>This document has been placed in the public domain.</p>
184</div> 184</div>
185
185</div> 186</div>
187<div class="footer">
188<hr class="footer" />
189<a class="reference" href="glep-0026.txt">View document source</a>.
190Generated on: 2007-10-13 13:39 UTC.
191Generated 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.
186 192
187<hr class="footer"/>
188<div class="footer">
189<a class="reference" href="glep-0026.txt">View document source</a>.
190Generated on: 2004-05-03 01:48 UTC.
191Generated 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.
192</div> 193</div>
193</body> 194</body>
194</html> 195</html>
195 196

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

  ViewVC Help
Powered by ViewVC 1.1.20