/[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 - (hide annotations) (download) (as text)
Sat Apr 21 03:13:16 2007 UTC (7 years, 3 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 g2boojum 1.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 g2boojum 1.2 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 g2boojum 1.1 <title>GLEP 35 -- Automated consistency check for ebuilds</title>
13 g2boojum 1.2 <style type="text/css">
14    
15     /*
16     :Author: David Goodger
17     :Contact: goodger@users.sourceforge.net
18 antarus 1.4 :date: $Date: 2007/01/25 03:26:26 $
19     :version: $Revision: 1.3 $
20 g2boojum 1.2 :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 g2boojum 1.1 </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 antarus 1.3 [<b><a href="http://www.gentoo.org/proj/en/glep/">GLEP Index</a></b>]
268 g2boojum 1.2 [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0035.txt">GLEP Source</a></b>]
269 g2boojum 1.1 </td></tr></table>
270 g2boojum 1.2 <table class="rfc2822 docutils field-list" frame="void" rules="none">
271 g2boojum 1.1 <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 g2boojum 1.2 <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 g2boojum 1.1 </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 antarus 1.4 <tr class="field"><th class="field-name">Status:</th><td class="field-body">Deferred</td>
285 g2boojum 1.1 </tr>
286     <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
287     </tr>
288 g2boojum 1.2 <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 g2boojum 1.1 </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 g2boojum 1.2 <div class="contents topic">
298     <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
299 g2boojum 1.1 <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 g2boojum 1.2 <div class="section">
309     <h1><a class="toc-backref" href="#id5" id="abstract" name="abstract">Abstract</a></h1>
310 g2boojum 1.1 <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 g2boojum 1.2 <div class="section">
318     <h1><a class="toc-backref" href="#id6" id="motivation" name="motivation">Motivation</a></h1>
319 g2boojum 1.1 <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 g2boojum 1.2 <div class="section">
332     <h1><a class="toc-backref" href="#id7" id="specification" name="specification">Specification</a></h1>
333 g2boojum 1.1 <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 g2boojum 1.2 action could be to disable the ebuild (with <tt class="docutils literal"><span class="pre">&quot;-*&quot;</span></tt>,) perhaps, and send a
358 g2boojum 1.1 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 g2boojum 1.2 <div class="section">
364     <h1><a class="toc-backref" href="#id8" id="implementation" name="implementation">Implementation</a></h1>
365 g2boojum 1.1 <p>The functionality described could be implemented in three ways:</p>
366     <blockquote>
367     <ol class="arabic">
368 g2boojum 1.2 <li><dl class="first docutils">
369 g2boojum 1.1 <dt>On the developers machine (&quot;client&quot;) where it is run before checking</dt>
370 g2boojum 1.2 <dd><p class="first last">only for the ebuilds that changed. (client does not fit here because
371 g2boojum 1.1 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 g2boojum 1.2 <li><dl class="first docutils">
383     <dt>pro:</dt>
384 g2boojum 1.1 <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 g2boojum 1.2 <li><dl class="first docutils">
395     <dt>the consistency is based on the tool installed</dt>
396 g2boojum 1.1 <dd><p class="first last">(what happens when different devs use different versions ?)</p>
397     </dd>
398     </dl>
399     </li>
400 g2boojum 1.2 <li><dl class="first docutils">
401 g2boojum 1.1 <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 g2boojum 1.2 <li><dl class="first docutils">
411 g2boojum 1.1 <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 g2boojum 1.2 <li><dl class="first docutils">
423 g2boojum 1.1 <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 g2boojum 1.2 <p>My favorite is 3 . All properties are checked before check-in and
437 g2boojum 1.1 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 g2boojum 1.2 <div class="section">
446     <h1><a class="toc-backref" href="#id9" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
447 g2boojum 1.1 <p>Not a problem for this GLEP.</p>
448     </div>
449 g2boojum 1.2 <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 g2boojum 1.1 <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 g2boojum 1.2
459 g2boojum 1.1 </div>
460 g2boojum 1.2 <div class="footer">
461 g2boojum 1.1 <hr class="footer" />
462     <a class="reference" href="glep-0035.txt">View document source</a>.
463 g2boojum 1.2 Generated on: 2006-10-10 20:23 UTC.
464 g2boojum 1.1 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 g2boojum 1.2
466 g2boojum 1.1 </div>
467     </body>
468     </html>

  ViewVC Help
Powered by ViewVC 1.1.20