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

Diff of /xml/htdocs/proj/en/glep/glep-0035.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.5: http://docutils.sourceforge.net/" /> 7 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 35 -- Automated consistency check for ebuilds</title> 8 <title>GLEP 35 -- Automated consistency check for ebuilds</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-0035.txt">GLEP Source</a></b>] 21[<b><a href="http://www.gentoo.org/proj/en/glep/glep-0035.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">35</td> 27<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">35</td>
33</tr> 28</tr>
34<tr class="field"><th class="field-name">Title:</th><td class="field-body">Automated consistency check for ebuilds</td> 29<tr class="field"><th class="field-name">Title:</th><td class="field-body">Automated consistency check for ebuilds</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/xml/htdocs/proj/en/glep/glep-0035.txt?cvsroot=gentoo">2005/03/12 20:26:01</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-0035.txt?cvsroot=gentoo">2007/04/21 03:13:16</a></td>
39</tr> 34</tr>
40<tr class="field"><th class="field-name">Author:</th><td class="field-body">Adrian Lambeck &lt;adrian&#32;&#97;t&#32;basicsedv.de&gt;,</td> 35<tr class="field"><th class="field-name">Author:</th><td class="field-body">Adrian Lambeck &lt;adrian&#32;&#97;t&#32;basicsedv.de&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-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>
47</tr> 42</tr>
48<tr class="field"><th class="field-name">Created:</th><td class="field-body">12-Mar-2005</td> 43<tr class="field"><th class="field-name">Created:</th><td class="field-body">12-Mar-2005</td>
49</tr> 44</tr>
50<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">12-Mar-2005</td> 45<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">12-Mar-2005</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 first"><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="id5" name="id5">Abstract</a></li> 53<li><a class="reference" href="#abstract" id="id5" name="id5">Abstract</a></li>
59<li><a class="reference" href="#motivation" id="id6" name="id6">Motivation</a></li> 54<li><a class="reference" href="#motivation" id="id6" name="id6">Motivation</a></li>
60<li><a class="reference" href="#specification" id="id7" name="id7">Specification</a></li> 55<li><a class="reference" href="#specification" id="id7" name="id7">Specification</a></li>
61<li><a class="reference" href="#implementation" id="id8" name="id8">Implementation</a></li> 56<li><a class="reference" href="#implementation" id="id8" name="id8">Implementation</a></li>
62<li><a class="reference" href="#backwards-compatibility" id="id9" name="id9">Backwards Compatibility</a></li> 57<li><a class="reference" href="#backwards-compatibility" id="id9" name="id9">Backwards Compatibility</a></li>
63<li><a class="reference" href="#id1" id="id10" name="id10">References</a></li> 58<li><a class="reference" href="#id1" id="id10" name="id10">References</a></li>
64</ul> 59</ul>
65</div> 60</div>
66<div class="section" id="abstract"> 61<div class="section">
67<h1><a class="toc-backref" href="#id5" name="abstract">Abstract</a></h1> 62<h1><a class="toc-backref" href="#id5" id="abstract" name="abstract">Abstract</a></h1>
68<p>This proposal is meant to enhance productivity for Gentoo developers. 63<p>This proposal is meant to enhance productivity for Gentoo developers.
69It aims to reduce the number of trivial bugs by automatically detecting them 64It aims to reduce the number of trivial bugs by automatically detecting them
70through a consistency check that is performed before checking and on a regular 65through a consistency check that is performed before checking and on a regular
71basis through the whole tree. 66basis through the whole tree.
72Why bother with trivial bugs when automated tests find them ? 67Why bother with trivial bugs when automated tests find them ?
73Save time and improve quality !</p> 68Save time and improve quality !</p>
74</div> 69</div>
75<div class="section" id="motivation"> 70<div class="section">
76<h1><a class="toc-backref" href="#id6" name="motivation">Motivation</a></h1> 71<h1><a class="toc-backref" href="#id6" id="motivation" name="motivation">Motivation</a></h1>
77<p>When browsing <a class="reference" href="http://bugs.gentoo.org">bugs.gentoo.org</a> <a class="footnote-reference" href="#id2" id="id3" name="id3">[1]</a> you will find Bugs that take away a good 72<p>When browsing <a class="reference" href="http://bugs.gentoo.org">bugs.gentoo.org</a> <a class="footnote-reference" href="#id2" id="id3" name="id3">[1]</a> you will find Bugs that take away a good
78amount of scarce developing time that could be used otherwise. These are 73amount of scarce developing time that could be used otherwise. These are
79trivial bugs, i.e. wrong SRC_URI or cycles in DEPEND. Even worst - these bugs 74trivial bugs, i.e. wrong SRC_URI or cycles in DEPEND. Even worst - these bugs
80are sometimes reported several times so that they need to be marked as 75are sometimes reported several times so that they need to be marked as
81dublicates. Bugs of that kind are easy to find and easy to fix. By using 76dublicates. Bugs of that kind are easy to find and easy to fix. By using
84(hopefully) be fewer bugs that need to be checked and assigned and they might 79(hopefully) be fewer bugs that need to be checked and assigned and they might
85get fixed faster.</p> 80get fixed faster.</p>
86<p>The Bugs found should be kept in an automatically generated list so that users 81<p>The Bugs found should be kept in an automatically generated list so that users
87can see that the problem has been caught and that it is being worked on.</p> 82can see that the problem has been caught and that it is being worked on.</p>
88</div> 83</div>
89<div class="section" id="specification"> 84<div class="section">
90<h1><a class="toc-backref" href="#id7" name="specification">Specification</a></h1> 85<h1><a class="toc-backref" href="#id7" id="specification" name="specification">Specification</a></h1>
91<p>Checks need to be performed for every ebuild.</p> 86<p>Checks need to be performed for every ebuild.</p>
92<p>A report needs to be generated</p> 87<p>A report needs to be generated</p>
93<blockquote> 88<blockquote>
94<ul class="simple"> 89<ul class="simple">
95<li>links to the specific problem need to be included</li> 90<li>links to the specific problem need to be included</li>
110</blockquote> 105</blockquote>
111<p>There might be other checks and tests that should be run 106<p>There might be other checks and tests that should be run
112that have not come to my mind yet. Also I might have suggested something that 107that have not come to my mind yet. Also I might have suggested something that
113is not useful at all.</p> 108is not useful at all.</p>
114<p>If there are major problems (needs to be defined) within an ebuild a possible 109<p>If there are major problems (needs to be defined) within an ebuild a possible
115action could be to disable the ebuild (with <tt class="literal"><span class="pre">&quot;-*&quot;</span></tt>,) perhaps, and send a 110action could be to disable the ebuild (with <tt class="docutils literal"><span class="pre">&quot;-*&quot;</span></tt>,) perhaps, and send a
116mail to the maintainer.</p> 111mail to the maintainer.</p>
117<p>These kind of errors are not always the fault of the developers.</p> 112<p>These kind of errors are not always the fault of the developers.</p>
118<p>There should be no compilation or something like that. If an ebuild fails to 113<p>There should be no compilation or something like that. If an ebuild fails to
119build somewhere then the user should file it as a bug as usual.</p> 114build somewhere then the user should file it as a bug as usual.</p>
120</div> 115</div>
121<div class="section" id="implementation"> 116<div class="section">
122<h1><a class="toc-backref" href="#id8" name="implementation">Implementation</a></h1> 117<h1><a class="toc-backref" href="#id8" id="implementation" name="implementation">Implementation</a></h1>
123<p>The functionality described could be implemented in three ways:</p> 118<p>The functionality described could be implemented in three ways:</p>
124<blockquote> 119<blockquote>
125<ol class="arabic"> 120<ol class="arabic">
126<li><dl class="first"> 121<li><dl class="first docutils">
127<dt>On the developers machine (&quot;client&quot;) where it is run before checking</dt> 122<dt>On the developers machine (&quot;client&quot;) where it is run before checking</dt>
128<dd><p class="first last">only for the ebuilds that changed. (client does not fit here because 123<dd><p class="first last">only for the ebuilds that changed. (client does not fit here because
129the server and client should not communicate with each other at all)</p> 124the server and client should not communicate with each other at all)</p>
130</dd> 125</dd>
131</dl> 126</dl>
132</li> 127</li>
133<li><p class="first">On the server where checks are run, i.e. once a week.</p> 128<li><p class="first">On the server where checks are run, i.e. once a week.</p>
135<li><p class="first">On the &quot;client&quot; AND server</p> 130<li><p class="first">On the &quot;client&quot; AND server</p>
136</li> 131</li>
137</ol> 132</ol>
138<p>Of course there are cons and pros (what came to my mind so far)</p> 133<p>Of course there are cons and pros (what came to my mind so far)</p>
139<ol class="arabic"> 134<ol class="arabic">
140<li><blockquote class="first"> 135<li><dl class="first docutils">
141<dl>
142<dt>pro: </dt> 136<dt>pro:</dt>
143<dd><ul class="first last simple"> 137<dd><ul class="first last simple">
144<li>the tree can not become inconsistent in the first place (? see contra)</li> 138<li>the tree can not become inconsistent in the first place (? see contra)</li>
145<li>once an ebuild is checked there is no need to do this again</li> 139<li>once an ebuild is checked there is no need to do this again</li>
146<li>no dedicated machine necessary</li> 140<li>no dedicated machine necessary</li>
147<li>generate traffic only once on one machine</li> 141<li>generate traffic only once on one machine</li>
148<li>errors that are caught here do not bother later on</li> 142<li>errors that are caught here do not bother later on</li>
149</ul> 143</ul>
150</dd> 144</dd>
151<dt>contra:</dt> 145<dt>contra:</dt>
152<dd><ul class="first last"> 146<dd><ul class="first last">
153<li><dl class="first"> 147<li><dl class="first docutils">
154<dt>the consistency is based on the tool installed </dt> 148<dt>the consistency is based on the tool installed</dt>
155<dd><p class="first last">(what happens when different devs use different versions ?)</p> 149<dd><p class="first last">(what happens when different devs use different versions ?)</p>
156</dd> 150</dd>
157</dl> 151</dl>
158</li> 152</li>
159<li><dl class="first"> 153<li><dl class="first docutils">
160<dt>what happens when the ebuild layout changes and some ebuilds</dt> 154<dt>what happens when the ebuild layout changes and some ebuilds</dt>
161<dd><p class="first last">do not get updated ?</p> 155<dd><p class="first last">do not get updated ?</p>
162</dd> 156</dd>
163</dl> 157</dl>
164</li> 158</li>
165</ul> 159</ul>
166</dd> 160</dd>
167</dl> 161</dl>
168</blockquote>
169</li> 162</li>
170<li><blockquote class="first"> 163<li><dl class="first docutils">
171<dl>
172<dt>pro:</dt> 164<dt>pro:</dt>
173<dd><ul class="first last simple"> 165<dd><ul class="first last simple">
174<li>Properties of other ebuilds might change that fit while writing an ebuild</li> 166<li>Properties of other ebuilds might change that fit while writing an ebuild</li>
175</ul> 167</ul>
176</dd> 168</dd>
178<dd><ul class="first last"> 170<dd><ul class="first last">
179<li><p class="first">the errors are found when the ebuild is already in CVS</p> 171<li><p class="first">the errors are found when the ebuild is already in CVS</p>
180</li> 172</li>
181<li><p class="first">the whole tree needs to be checked</p> 173<li><p class="first">the whole tree needs to be checked</p>
182</li> 174</li>
183<li><dl class="first"> 175<li><dl class="first docutils">
184<dt>possibly creates a lot of traffic on every run</dt> 176<dt>possibly creates a lot of traffic on every run</dt>
185<dd><p class="first last">(-&gt; is there an FTP equivalent to HTTP`s HEAD ?)</p> 177<dd><p class="first last">(-&gt; is there an FTP equivalent to HTTP`s HEAD ?)</p>
186</dd> 178</dd>
187</dl> 179</dl>
188</li> 180</li>
189</ul> 181</ul>
190</dd> 182</dd>
191</dl> 183</dl>
192</blockquote>
193</li> 184</li>
194<li><p class="first">see 1. and 2.</p> 185<li><p class="first">see 1. and 2.</p>
195</li> 186</li>
196</ol> 187</ol>
197</blockquote> 188</blockquote>
198<p>My favorite is 3 . All properties are checked before check-in and 189<p>My favorite is 3 . All properties are checked before check-in and
199the properties that change might be checked on a regular basis on the server. 190the properties that change might be checked on a regular basis on the server.
200Only solution 3 brings the best from 1 and 2 together while delivering the best result.</p> 191Only solution 3 brings the best from 1 and 2 together while delivering the best result.</p>
201<p>I never had a look at portage source but I can imagine that there is a library 192<p>I never had a look at portage source but I can imagine that there is a library
202that has everything that a developer needs to &quot;query&quot; ebuilds. If not, this 193that has everything that a developer needs to &quot;query&quot; ebuilds. If not, this
203would be a reason for another GLEP (?).</p> 194would be a reason for another GLEP (?).</p>
204<p>For performance I would use a database (on the server) to store the whole tree before 195<p>For performance I would use a database (on the server) to store the whole tree before
205running the checks. This is not necessary for the &quot;client&quot;.</p> 196running the checks. This is not necessary for the &quot;client&quot;.</p>
206</div> 197</div>
207<div class="section" id="backwards-compatibility"> 198<div class="section">
208<h1><a class="toc-backref" href="#id9" name="backwards-compatibility">Backwards Compatibility</a></h1> 199<h1><a class="toc-backref" href="#id9" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
209<p>Not a problem for this GLEP.</p> 200<p>Not a problem for this GLEP.</p>
210</div> 201</div>
211<div class="section" id="id1"> 202<div class="section">
212<h1><a class="toc-backref" href="#id10" name="id1">References</a></h1> 203<h1><a class="toc-backref" href="#id10" id="id1" name="id1">References</a></h1>
213<table class="footnote" frame="void" id="id2" rules="none"> 204<table class="docutils footnote" frame="void" id="id2" rules="none">
214<colgroup><col class="label" /><col /></colgroup> 205<colgroup><col class="label" /><col /></colgroup>
215<tbody valign="top"> 206<tbody valign="top">
216<tr><td class="label"><a name="id2">[1]</a></td><td><em>(<a class="fn-backref" href="#id3">1</a>, <a class="fn-backref" href="#id4">2</a>)</em> <a class="reference" href="http://bugs.gentoo.org">http://bugs.gentoo.org</a></td></tr> 207<tr><td class="label"><a name="id2">[1]</a></td><td><em>(<a class="fn-backref" href="#id3">1</a>, <a class="fn-backref" href="#id4">2</a>)</em> <a class="reference" href="http://bugs.gentoo.org">http://bugs.gentoo.org</a></td></tr>
217</tbody> 208</tbody>
218</table> 209</table>
219</div> 210</div>
220</div>
221 211
212</div>
213<div class="footer">
222<hr class="footer" /> 214<hr class="footer" />
223<div class="footer">
224<a class="reference" href="glep-0035.txt">View document source</a>. 215<a class="reference" href="glep-0035.txt">View document source</a>.
225Generated on: 2005-03-12 20:26 UTC. 216Generated on: 2007-10-13 13:39 UTC.
226Generated 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. 217Generated 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.
218
227</div> 219</div>
228</body> 220</body>
229</html> 221</html>
230 222

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

  ViewVC Help
Powered by ViewVC 1.1.20