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

Parent Directory Parent Directory | Revision Log Revision Log

Revision 1.5 - (show annotations) (download) (as text)
Sun Oct 14 17:00:15 2007 UTC (11 years, 5 months ago) by antarus
Branch: MAIN
Changes since 1.4: +6 -253 lines
File MIME type: text/html
the canary on 53 went well, changing the rest

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

  ViewVC Help
Powered by ViewVC 1.1.20