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

Contents of /xml/htdocs/proj/en/glep/glep-0035.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations) (download) (as text)
Sat Apr 21 03:13:16 2007 UTC (7 years, 4 months ago) by antarus
Branch: MAIN
Changes since 1.3: +3 -3 lines
File MIME type: text/html
Two gleps are Rejected, a bunch moving from Draft -> Deferred since no one is working on them

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">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 <!--
5 This HTML is auto-generated. DO NOT EDIT THIS FILE! If you are writing a new
6 PEP, see http://www.python.org/peps/pep-0001.html for instructions and links
7 to templates. DO NOT USE THIS HTML FILE AS YOUR TEMPLATE!
8 -->
9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 35 -- Automated consistency check for ebuilds</title>
13 <style type="text/css">
14
15 /*
16 :Author: David Goodger
17 :Contact: goodger@users.sourceforge.net
18 :date: $Date: 2007/01/25 03:26:26 $
19 :version: $Revision: 1.3 $
20 :copyright: This stylesheet has been placed in the public domain.
21
22 Default 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
66 a.toc-backref {
67 text-decoration: none ;
68 color: black }
69
70 body {
71 margin: 0px ;
72 margin-bottom: 1em ;
73 padding: 0px }
74
75 dd {
76 margin-bottom: 0.5em }
77
78 div.section {
79 margin-left: 1em ;
80 margin-right: 1em ;
81 margin-bottom: 1.5em }
82
83 div.section div.section {
84 margin-left: 0em ;
85 margin-right: 0em ;
86 margin-top: 1.5em }
87
88 div.abstract {
89 margin: 2em 5em }
90
91 div.abstract p.topic-title {
92 font-weight: bold ;
93 text-align: center }
94
95 div.attention, div.caution, div.danger, div.error, div.hint,
96 div.important, div.note, div.tip, div.warning {
97 margin: 2em ;
98 border: medium outset ;
99 padding: 1em }
100
101 div.attention p.admonition-title, div.caution p.admonition-title,
102 div.danger p.admonition-title, div.error p.admonition-title,
103 div.warning p.admonition-title {
104 color: red ;
105 font-weight: bold ;
106 font-family: sans-serif }
107
108 div.hint p.admonition-title, div.important p.admonition-title,
109 div.note p.admonition-title, div.tip p.admonition-title {
110 font-weight: bold ;
111 font-family: sans-serif }
112
113 div.figure {
114 margin-left: 2em }
115
116 div.footer, div.header {
117 font-size: smaller }
118
119 div.footer {
120 margin-left: 1em ;
121 margin-right: 1em }
122
123 div.system-messages {
124 margin: 5em }
125
126 div.system-messages h1 {
127 color: red }
128
129 div.system-message {
130 border: medium outset ;
131 padding: 1em }
132
133 div.system-message p.system-message-title {
134 color: red ;
135 font-weight: bold }
136
137 div.topic {
138 margin: 2em }
139
140 h1 {
141 font-family: sans-serif ;
142 font-size: large }
143
144 h2 {
145 font-family: sans-serif ;
146 font-size: medium }
147
148 h3 {
149 font-family: sans-serif ;
150 font-size: small }
151
152 h4 {
153 font-family: sans-serif ;
154 font-style: italic ;
155 font-size: small }
156
157 h5 {
158 font-family: sans-serif;
159 font-size: x-small }
160
161 h6 {
162 font-family: sans-serif;
163 font-style: italic ;
164 font-size: x-small }
165
166 .section hr {
167 width: 75% }
168
169 ol.simple, ul.simple {
170 margin-bottom: 1em }
171
172 ol.arabic {
173 list-style: decimal }
174
175 ol.loweralpha {
176 list-style: lower-alpha }
177
178 ol.upperalpha {
179 list-style: upper-alpha }
180
181 ol.lowerroman {
182 list-style: lower-roman }
183
184 ol.upperroman {
185 list-style: upper-roman }
186
187 p.caption {
188 font-style: italic }
189
190 p.credits {
191 font-style: italic ;
192 font-size: smaller }
193
194 p.label {
195 white-space: nowrap }
196
197 p.topic-title {
198 font-family: sans-serif ;
199 font-weight: bold }
200
201 pre.line-block {
202 font-family: serif ;
203 font-size: 100% }
204
205 pre.literal-block, pre.doctest-block {
206 margin-left: 2em ;
207 margin-right: 2em ;
208 background-color: #eeeeee }
209
210 span.classifier {
211 font-family: sans-serif ;
212 font-style: oblique }
213
214 span.classifier-delimiter {
215 font-family: sans-serif ;
216 font-weight: bold }
217
218 span.interpreted {
219 font-family: sans-serif }
220
221 span.option-argument {
222 font-style: italic }
223
224 span.pre {
225 white-space: pre }
226
227 span.problematic {
228 color: red }
229
230 table {
231 margin-top: 0.5em ;
232 margin-bottom: 0.5em }
233
234 td, th {
235 padding-left: 0.5em ;
236 padding-right: 0.5em ;
237 vertical-align: top }
238
239 td.num {
240 text-align: right }
241
242 th.field-name {
243 font-weight: bold ;
244 text-align: left ;
245 white-space: nowrap }
246
247 h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
248 font-size: 100% }
249
250 tt {
251 background-color: #eeeeee }
252
253 ul.auto-toc {
254 list-style-type: none }
255
256 </style>
257 </head>
258 <body bgcolor="white">
259 <table class="navigation" cellpadding="0" cellspacing="0"
260 width="100%" border="0">
261 <tr><td class="navicon" width="150" height="35">
262 <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
263 <img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
264 border="0" width="150" height="35" /></a></td>
265 <td class="textlinks" align="left">
266 [<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>]
267 [<b><a href="http://www.gentoo.org/proj/en/glep/">GLEP Index</a></b>]
268 [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0035.txt">GLEP Source</a></b>]
269 </td></tr></table>
270 <table class="rfc2822 docutils field-list" frame="void" rules="none">
271 <col class="field-name" />
272 <col class="field-body" />
273 <tbody valign="top">
274 <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">35</td>
275 </tr>
276 <tr class="field"><th class="field-name">Title:</th><td class="field-body">Automated consistency check for ebuilds</td>
277 </tr>
278 <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.1</td>
279 </tr>
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-0035.txt?cvsroot=gentoo">2005/03/12 20:26:01</a></td>
281 </tr>
282 <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>
283 </tr>
284 <tr class="field"><th class="field-name">Status:</th><td class="field-body">Deferred</td>
285 </tr>
286 <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
287 </tr>
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>
289 </tr>
290 <tr class="field"><th class="field-name">Created:</th><td class="field-body">12-Mar-2005</td>
291 </tr>
292 <tr class="field"><th class="field-name">Post-History:</th><td class="field-body">12-Mar-2005</td>
293 </tr>
294 </tbody>
295 </table>
296 <hr />
297 <div class="contents topic">
298 <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
299 <ul class="simple">
300 <li><a class="reference" href="#abstract" id="id5" name="id5">Abstract</a></li>
301 <li><a class="reference" href="#motivation" id="id6" name="id6">Motivation</a></li>
302 <li><a class="reference" href="#specification" id="id7" name="id7">Specification</a></li>
303 <li><a class="reference" href="#implementation" id="id8" name="id8">Implementation</a></li>
304 <li><a class="reference" href="#backwards-compatibility" id="id9" name="id9">Backwards Compatibility</a></li>
305 <li><a class="reference" href="#id1" id="id10" name="id10">References</a></li>
306 </ul>
307 </div>
308 <div class="section">
309 <h1><a class="toc-backref" href="#id5" id="abstract" name="abstract">Abstract</a></h1>
310 <p>This proposal is meant to enhance productivity for Gentoo developers.
311 It aims to reduce the number of trivial bugs by automatically detecting them
312 through a consistency check that is performed before checking and on a regular
313 basis through the whole tree.
314 Why bother with trivial bugs when automated tests find them ?
315 Save time and improve quality !</p>
316 </div>
317 <div class="section">
318 <h1><a class="toc-backref" href="#id6" id="motivation" name="motivation">Motivation</a></h1>
319 <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
320 amount of scarce developing time that could be used otherwise. These are
321 trivial bugs, i.e. wrong SRC_URI or cycles in DEPEND. Even worst - these bugs
322 are sometimes reported several times so that they need to be marked as
323 dublicates. Bugs of that kind are easy to find and easy to fix. By using
324 automatic checks on a regular schedule these bugs can be found. Users have to
325 be asked NOT to commit these bugs to <a class="reference" href="http://bugs.gentoo.org">bugs.gentoo.org</a> <a class="footnote-reference" href="#id2" id="id4" name="id4">[1]</a>. So there will
326 (hopefully) be fewer bugs that need to be checked and assigned and they might
327 get fixed faster.</p>
328 <p>The Bugs found should be kept in an automatically generated list so that users
329 can see that the problem has been caught and that it is being worked on.</p>
330 </div>
331 <div class="section">
332 <h1><a class="toc-backref" href="#id7" id="specification" name="specification">Specification</a></h1>
333 <p>Checks need to be performed for every ebuild.</p>
334 <p>A report needs to be generated</p>
335 <blockquote>
336 <ul class="simple">
337 <li>links to the specific problem need to be included</li>
338 <li>reports need to be send to the groups responsible</li>
339 </ul>
340 </blockquote>
341 <p>Checks could be:</p>
342 <blockquote>
343 <ul class="simple">
344 <li>cycles within DEPEND</li>
345 <li>invalid SRC_URI</li>
346 <li>&quot;non-official&quot; USE Flags</li>
347 <li>Packages within DEPEND that are &quot;*&quot; for the arch specified</li>
348 <li>broken shell scripts with invalid or missing commands</li>
349 <li>inheritance of eclasses</li>
350 <li>...</li>
351 </ul>
352 </blockquote>
353 <p>There might be other checks and tests that should be run
354 that have not come to my mind yet. Also I might have suggested something that
355 is not useful at all.</p>
356 <p>If there are major problems (needs to be defined) within an ebuild a possible
357 action could be to disable the ebuild (with <tt class="docutils literal"><span class="pre">&quot;-*&quot;</span></tt>,) perhaps, and send a
358 mail to the maintainer.</p>
359 <p>These kind of errors are not always the fault of the developers.</p>
360 <p>There should be no compilation or something like that. If an ebuild fails to
361 build somewhere then the user should file it as a bug as usual.</p>
362 </div>
363 <div class="section">
364 <h1><a class="toc-backref" href="#id8" id="implementation" name="implementation">Implementation</a></h1>
365 <p>The functionality described could be implemented in three ways:</p>
366 <blockquote>
367 <ol class="arabic">
368 <li><dl class="first docutils">
369 <dt>On the developers machine (&quot;client&quot;) where it is run before checking</dt>
370 <dd><p class="first last">only for the ebuilds that changed. (client does not fit here because
371 the server and client should not communicate with each other at all)</p>
372 </dd>
373 </dl>
374 </li>
375 <li><p class="first">On the server where checks are run, i.e. once a week.</p>
376 </li>
377 <li><p class="first">On the &quot;client&quot; AND server</p>
378 </li>
379 </ol>
380 <p>Of course there are cons and pros (what came to my mind so far)</p>
381 <ol class="arabic">
382 <li><dl class="first docutils">
383 <dt>pro:</dt>
384 <dd><ul class="first last simple">
385 <li>the tree can not become inconsistent in the first place (? see contra)</li>
386 <li>once an ebuild is checked there is no need to do this again</li>
387 <li>no dedicated machine necessary</li>
388 <li>generate traffic only once on one machine</li>
389 <li>errors that are caught here do not bother later on</li>
390 </ul>
391 </dd>
392 <dt>contra:</dt>
393 <dd><ul class="first last">
394 <li><dl class="first docutils">
395 <dt>the consistency is based on the tool installed</dt>
396 <dd><p class="first last">(what happens when different devs use different versions ?)</p>
397 </dd>
398 </dl>
399 </li>
400 <li><dl class="first docutils">
401 <dt>what happens when the ebuild layout changes and some ebuilds</dt>
402 <dd><p class="first last">do not get updated ?</p>
403 </dd>
404 </dl>
405 </li>
406 </ul>
407 </dd>
408 </dl>
409 </li>
410 <li><dl class="first docutils">
411 <dt>pro:</dt>
412 <dd><ul class="first last simple">
413 <li>Properties of other ebuilds might change that fit while writing an ebuild</li>
414 </ul>
415 </dd>
416 <dt>contra:</dt>
417 <dd><ul class="first last">
418 <li><p class="first">the errors are found when the ebuild is already in CVS</p>
419 </li>
420 <li><p class="first">the whole tree needs to be checked</p>
421 </li>
422 <li><dl class="first docutils">
423 <dt>possibly creates a lot of traffic on every run</dt>
424 <dd><p class="first last">(-&gt; is there an FTP equivalent to HTTP`s HEAD ?)</p>
425 </dd>
426 </dl>
427 </li>
428 </ul>
429 </dd>
430 </dl>
431 </li>
432 <li><p class="first">see 1. and 2.</p>
433 </li>
434 </ol>
435 </blockquote>
436 <p>My favorite is 3 . All properties are checked before check-in and
437 the properties that change might be checked on a regular basis on the server.
438 Only solution 3 brings the best from 1 and 2 together while delivering the best result.</p>
439 <p>I never had a look at portage source but I can imagine that there is a library
440 that has everything that a developer needs to &quot;query&quot; ebuilds. If not, this
441 would be a reason for another GLEP (?).</p>
442 <p>For performance I would use a database (on the server) to store the whole tree before
443 running the checks. This is not necessary for the &quot;client&quot;.</p>
444 </div>
445 <div class="section">
446 <h1><a class="toc-backref" href="#id9" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
447 <p>Not a problem for this GLEP.</p>
448 </div>
449 <div class="section">
450 <h1><a class="toc-backref" href="#id10" id="id1" name="id1">References</a></h1>
451 <table class="docutils footnote" frame="void" id="id2" rules="none">
452 <colgroup><col class="label" /><col /></colgroup>
453 <tbody valign="top">
454 <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>
455 </tbody>
456 </table>
457 </div>
458
459 </div>
460 <div class="footer">
461 <hr class="footer" />
462 <a class="reference" href="glep-0035.txt">View document source</a>.
463 Generated on: 2006-10-10 20:23 UTC.
464 Generated 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.
465
466 </div>
467 </body>
468 </html>

  ViewVC Help
Powered by ViewVC 1.1.20