/[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.5 - (hide annotations) (download) (as text)
Sun Oct 14 17:00:15 2007 UTC (6 years, 6 months ago) by antarus
Branch: MAIN
CVS Tags: HEAD
Changes since 1.4: +6 -253 lines
File MIME type: text/html
the canary on 53 went well, changing the rest

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 antarus 1.5
5 g2boojum 1.1 <head>
6     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7 g2boojum 1.2 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
8 g2boojum 1.1 <title>GLEP 35 -- Automated consistency check for ebuilds</title>
9 antarus 1.5 <link rel="stylesheet" href="tools/glep.css" type="text/css" />
10 g2boojum 1.1 </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 antarus 1.5 [<b><a href="http://www.gentoo.org/proj/en/glep">GLEP Index</a></b>]
21 g2boojum 1.2 [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0035.txt">GLEP Source</a></b>]
22 g2boojum 1.1 </td></tr></table>
23 g2boojum 1.2 <table class="rfc2822 docutils field-list" frame="void" rules="none">
24 g2boojum 1.1 <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 antarus 1.5 <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.2</td>
32 g2boojum 1.1 </tr>
33 antarus 1.5 <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 g2boojum 1.1 </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 antarus 1.4 <tr class="field"><th class="field-name">Status:</th><td class="field-body">Deferred</td>
38 g2boojum 1.1 </tr>
39     <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
40     </tr>
41 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>
42 g2boojum 1.1 </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 g2boojum 1.2 <div class="contents topic">
51     <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
52 g2boojum 1.1 <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 g2boojum 1.2 <div class="section">
62     <h1><a class="toc-backref" href="#id5" id="abstract" name="abstract">Abstract</a></h1>
63 g2boojum 1.1 <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 g2boojum 1.2 <div class="section">
71     <h1><a class="toc-backref" href="#id6" id="motivation" name="motivation">Motivation</a></h1>
72 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
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 g2boojum 1.2 <div class="section">
85     <h1><a class="toc-backref" href="#id7" id="specification" name="specification">Specification</a></h1>
86 g2boojum 1.1 <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 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
111 g2boojum 1.1 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 g2boojum 1.2 <div class="section">
117     <h1><a class="toc-backref" href="#id8" id="implementation" name="implementation">Implementation</a></h1>
118 g2boojum 1.1 <p>The functionality described could be implemented in three ways:</p>
119     <blockquote>
120     <ol class="arabic">
121 g2boojum 1.2 <li><dl class="first docutils">
122 g2boojum 1.1 <dt>On the developers machine (&quot;client&quot;) where it is run before checking</dt>
123 g2boojum 1.2 <dd><p class="first last">only for the ebuilds that changed. (client does not fit here because
124 g2boojum 1.1 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 g2boojum 1.2 <li><dl class="first docutils">
136     <dt>pro:</dt>
137 g2boojum 1.1 <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 g2boojum 1.2 <li><dl class="first docutils">
148     <dt>the consistency is based on the tool installed</dt>
149 g2boojum 1.1 <dd><p class="first last">(what happens when different devs use different versions ?)</p>
150     </dd>
151     </dl>
152     </li>
153 g2boojum 1.2 <li><dl class="first docutils">
154 g2boojum 1.1 <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 g2boojum 1.2 <li><dl class="first docutils">
164 g2boojum 1.1 <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 g2boojum 1.2 <li><dl class="first docutils">
176 g2boojum 1.1 <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 g2boojum 1.2 <p>My favorite is 3 . All properties are checked before check-in and
190 g2boojum 1.1 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 g2boojum 1.2 <div class="section">
199     <h1><a class="toc-backref" href="#id9" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
200 g2boojum 1.1 <p>Not a problem for this GLEP.</p>
201     </div>
202 g2boojum 1.2 <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 g2boojum 1.1 <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>
211 g2boojum 1.2
212 g2boojum 1.1 </div>
213 g2boojum 1.2 <div class="footer">
214 g2boojum 1.1 <hr class="footer" />
215     <a class="reference" href="glep-0035.txt">View document source</a>.
216 antarus 1.5 Generated on: 2007-10-13 13:39 UTC.
217 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.
218 g2boojum 1.2
219 g2boojum 1.1 </div>
220     </body>
221     </html>

  ViewVC Help
Powered by ViewVC 1.1.20