doc: update tex documentation
[opendreambox.git] / doc / opendreambox.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
2   "http://www.w3.org/TR/html4/loose.dtd">  
3 <html > 
4 <head><title>opendreambox</title> 
5 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
6 <meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
7 <meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
8 <!-- html --> 
9 <meta name="src" content="opendreambox.tex"> 
10 <meta name="date" content="2016-11-08 10:29:00"> 
11 <link rel="stylesheet" type="text/css" href="opendreambox.css"> 
12 </head><body 
13 >
14 <div class="maketitle">
15                                                                   
16
17                                                                   
18                                                                   
19
20                                                                   
21
22 <h2 class="titleHead">opendreambox</h2>
23 <div class="author" ><span 
24 class="cmr-12">Andreas Oberritter </span><span 
25 class="cmtt-9">&#x003C;obi@opendreambox.org&#x003E;</span></div>
26 <br />
27 <div class="date" ><span 
28 class="cmr-12">October 2016</span></div>
29 </div>
30 <h3 class="likesectionHead"><a 
31  id="x1-1000"></a>Contents</h3>
32 <div class="tableofcontents">
33 <span class="sectionToc" >1 <a 
34 href="#x1-20001" id="QQ2-1-2">Introduction</a></span>
35 <br />&#x00A0;<span class="subsectionToc" >1.1 <a 
36 href="#x1-30001.1" id="QQ2-1-3">Target audience</a></span>
37 <br />&#x00A0;<span class="subsectionToc" >1.2 <a 
38 href="#x1-40001.2" id="QQ2-1-4">Supported products</a></span>
39 <br />&#x00A0;<span class="subsectionToc" >1.3 <a 
40 href="#x1-50001.3" id="QQ2-1-5">License</a></span>
41 <br />&#x00A0;<span class="subsectionToc" >1.4 <a 
42 href="#x1-60001.4" id="QQ2-1-6">Obtaining the source code</a></span>
43 <br />&#x00A0;<span class="subsectionToc" >1.5 <a 
44 href="#x1-70001.5" id="QQ2-1-7">Quick start</a></span>
45 <br />&#x00A0;<span class="subsectionToc" >1.6 <a 
46 href="#x1-80001.6" id="QQ2-1-8">Directory structure</a></span>
47 <br />&#x00A0;&#x00A0;<span class="subsubsectionToc" >1.6.1 <a 
48 href="#x1-90001.6.1" id="QQ2-1-9">openembedded-core and meta-openembedded</a></span>
49 <br />&#x00A0;&#x00A0;<span class="subsubsectionToc" >1.6.2 <a 
50 href="#x1-100001.6.2" id="QQ2-1-10">meta-opendreambox</a></span>
51 <br />&#x00A0;&#x00A0;<span class="subsubsectionToc" >1.6.3 <a 
52 href="#x1-110001.6.3" id="QQ2-1-11">meta-dreambox</a></span>
53 <br /><span class="sectionToc" >2 <a 
54 href="#x1-120002" id="QQ2-1-12">Further readings</a></span>
55 <br /><span class="sectionToc" >3 <a 
56 href="#x1-130003" id="QQ2-1-13">Prerequisites</a></span>
57 <br />&#x00A0;<span class="subsectionToc" >3.1 <a 
58 href="#x1-140003.1" id="QQ2-1-14">Required software</a></span>
59 <br /><span class="sectionToc" >4 <a 
60 href="#x1-150004" id="QQ2-1-15">Major changes since previous public releases</a></span>
61 <br />&#x00A0;<span class="subsectionToc" >4.1 <a 
62 href="#x1-160004.1" id="QQ2-1-16">Changes since release 1.6</a></span>
63 <br />&#x00A0;<span class="subsectionToc" >4.2 <a 
64 href="#x1-170004.2" id="QQ2-1-17">Changes since release 2.0</a></span>
65 <br />&#x00A0;<span class="subsectionToc" >4.3 <a 
66 href="#x1-180004.3" id="QQ2-1-18">Changes since release 2.2</a></span>
67                                                                   
68
69                                                                   
70 <br /><span class="sectionToc" >5 <a 
71 href="#x1-190005" id="QQ2-1-19">Known Issues</a></span>
72 <br /><span class="sectionToc" >6 <a 
73 href="#x1-200006" id="QQ2-1-20">Building OpenDreambox</a></span>
74 <br />&#x00A0;<span class="subsectionToc" >6.1 <a 
75 href="#x1-210006.1" id="QQ2-1-21">Makefile targets</a></span>
76 <br />&#x00A0;<span class="subsectionToc" >6.2 <a 
77 href="#x1-220006.2" id="QQ2-1-22">Configuration variables</a></span>
78 <br />&#x00A0;&#x00A0;<span class="subsubsectionToc" >6.2.1 <a 
79 href="#x1-230006.2.1" id="QQ2-1-23">BB_NUMBER_THREADS</a></span>
80 <br />&#x00A0;&#x00A0;<span class="subsubsectionToc" >6.2.2 <a 
81 href="#x1-240006.2.2" id="QQ2-1-24">MACHINE</a></span>
82 <br />&#x00A0;&#x00A0;<span class="subsubsectionToc" >6.2.3 <a 
83 href="#x1-250006.2.3" id="QQ2-1-25">PARALLEL_MAKE</a></span>
84 <br />&#x00A0;<span class="subsectionToc" >6.3 <a 
85 href="#x1-260006.3" id="QQ2-1-26">Adding custom layers</a></span>
86 <br />&#x00A0;<span class="subsectionToc" >6.4 <a 
87 href="#x1-270006.4" id="QQ2-1-27">Adding custom options</a></span>
88 <br />&#x00A0;&#x00A0;<span class="subsubsectionToc" >6.4.1 <a 
89 href="#x1-280006.4.1" id="QQ2-1-28">DISTRO_FEED_PREFIX</a></span>
90 <br />&#x00A0;&#x00A0;<span class="subsubsectionToc" >6.4.2 <a 
91 href="#x1-290006.4.2" id="QQ2-1-29">DISTRO_FEED_URI</a></span>
92 <br />&#x00A0;&#x00A0;<span class="subsubsectionToc" >6.4.3 <a 
93 href="#x1-300006.4.3" id="QQ2-1-30">INHERIT</a></span>
94 <br />&#x00A0;<span class="subsectionToc" >6.5 <a 
95 href="#x1-310006.5" id="QQ2-1-31">Setting up a build directory</a></span>
96 <br />&#x00A0;<span class="subsectionToc" >6.6 <a 
97 href="#x1-320006.6" id="QQ2-1-32">Building a firmware image</a></span>
98 <br />&#x00A0;<span class="subsectionToc" >6.7 <a 
99 href="#x1-330006.7" id="QQ2-1-33">Building a package</a></span>
100 <br /><span class="sectionToc" >7 <a 
101 href="#x1-340007" id="QQ2-1-34">Development hints</a></span>
102 <br />&#x00A0;<span class="subsectionToc" >7.1 <a 
103 href="#x1-350007.1" id="QQ2-1-35">Cross-compilation of external software</a></span>
104 <br />&#x00A0;<span class="subsectionToc" >7.2 <a 
105 href="#x1-360007.2" id="QQ2-1-36">Coding style</a></span>
106 <br />&#x00A0;<span class="subsectionToc" >7.3 <a 
107 href="#x1-370007.3" id="QQ2-1-37">Package architecture</a></span>
108 <br /><span class="sectionToc" >8 <a 
109 href="#x1-380008" id="QQ2-1-38">Bug reports and patches</a></span>
110 </div>
111                                                                   
112
113                                                                   
114 <!--l. 54--><p class="noindent" >
115 <h3 class="sectionHead"><span class="titlemark">1   </span> <a 
116  id="x1-20001"></a>Introduction</h3>
117 <div class="flushleft" 
118 >
119 <!--l. 55--><p class="noindent" >
120  This document briefly describes the OpenDreambox distribution, an
121 embedded Linux distribution for Set-Top-Boxes manufactured by <a 
122 href="https://dreambox.de/" >Dream
123 Property GmbH</a>.
124 <!--l. 59--><p class="noindent" >OpenDreambox is based on the <a 
125 href="http://www.openembedded.org/" >OpenEmbedded</a> build framework, which uses
126 BitBake to transform build instructions into distributable firmare images and
127 software packages.
128 <!--l. 63--><p class="noindent" >The current version, OpenDreambox 2.5, is based on the <a 
129 href="https://www.yoctoproject.org/" >Yocto Project</a>, release
130 2.1 &#8221;Krogoth&#8221;, an umbrella project for OpenEmbedded and related tools.</div>
131 <!--l. 67--><p class="noindent" >
132 <h4 class="subsectionHead"><span class="titlemark">1.1   </span> <a 
133  id="x1-30001.1"></a>Target audience</h4>
134 <div class="flushleft" 
135 >
136 <!--l. 68--><p class="noindent" >
137  Developers familiar with previous versions of OpenDreambox or
138 OpenEmbedded in general.</div>
139 <!--l. 73--><p class="noindent" >
140 <h4 class="subsectionHead"><span class="titlemark">1.2   </span> <a 
141  id="x1-40001.2"></a>Supported products</h4>
142 <div class="flushleft" 
143 >
144 <!--l. 75--><p class="noindent" >
145  The current version includes support for the following products:
146                                                                   
147
148                                                                   
149 <div class="tabular"> <table id="TBL-2" class="tabular" 
150 cellspacing="0" cellpadding="0" rules="groups" 
151 ><colgroup id="TBL-2-1g"><col 
152 id="TBL-2-1"></colgroup><colgroup id="TBL-2-2g"><col 
153 id="TBL-2-2"></colgroup><tr 
154 class="hline"><td><hr></td><td><hr></td></tr><tr  
155  style="vertical-align:baseline;" id="TBL-2-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-1"  
156 class="td11"><span 
157 class="cmbx-10">Product name     </span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-2"  
158 class="td11"><span 
159 class="cmbx-10">Environment variable</span></td></tr><tr 
160 class="hline"><td><hr></td><td><hr></td></tr><tr  
161  style="vertical-align:baseline;" id="TBL-2-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-1"  
162 class="td11"> </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-2"  
163 class="td11"></td>
164 </tr><tr  
165  style="vertical-align:baseline;" id="TBL-2-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-1"  
166 class="td11">DM900 UHD           </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-2"  
167 class="td11"><span 
168 class="cmtt-9">MACHINE=dm900          </span></td>
169 </tr><tr  
170  style="vertical-align:baseline;" id="TBL-2-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-1"  
171 class="td11">DM525 S2 CI-Slot    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-2"  
172 class="td11"><span 
173 class="cmtt-9">MACHINE=dm520          </span></td>
174 </tr><tr  
175  style="vertical-align:baseline;" id="TBL-2-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-1"  
176 class="td11">DM525 C/T2 CI-Slot</td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-2"  
177 class="td11"><span 
178 class="cmtt-9">MACHINE=dm520          </span></td>
179 </tr><tr  
180  style="vertical-align:baseline;" id="TBL-2-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-1"  
181 class="td11">DM520 S2               </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-2"  
182 class="td11"><span 
183 class="cmtt-9">MACHINE=dm520          </span></td>
184 </tr><tr  
185  style="vertical-align:baseline;" id="TBL-2-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-1"  
186 class="td11">DM520 C/T2          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-2"  
187 class="td11"><span 
188 class="cmtt-9">MACHINE=dm520          </span></td>
189 </tr><tr  
190  style="vertical-align:baseline;" id="TBL-2-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-1"  
191 class="td11">DM7080 HD            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-2"  
192 class="td11"><span 
193 class="cmtt-9">MACHINE=dm7080         </span></td>
194 </tr><tr  
195  style="vertical-align:baseline;" id="TBL-2-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-1"  
196 class="td11">DM820 HD             </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-2"  
197 class="td11"><span 
198 class="cmtt-9">MACHINE=dm820          </span></td>
199 </tr><tr  
200  style="vertical-align:baseline;" id="TBL-2-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-1"  
201 class="td11">                  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-2"  
202 class="td11">                     </td>
203 </tr><tr 
204 class="hline"><td><hr></td><td><hr></td></tr><tr  
205  style="vertical-align:baseline;" id="TBL-2-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-1"  
206 class="td11">                  </td>
207 </tr></table></div>
208 <!--l. 93--><p class="noindent" >Note, that not all of these platforms offer enough internal storage to actually flash a
209 generated firmware image. It might be possible to boot from external storage or
210 network, though.</div>
211 <!--l. 98--><p class="noindent" >
212 <h4 class="subsectionHead"><span class="titlemark">1.3   </span> <a 
213  id="x1-50001.3"></a>License</h4>
214                                                                   
215
216                                                                   
217 <div class="verbatim" id="verbatim-1">
218 Copyright&#x00A0;(c)&#x00A0;2016&#x00A0;Dream&#x00A0;Property&#x00A0;GmbH,&#x00A0;Germany
219 &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;https://dreambox.de/
220 &#x00A0;<br />
221 &#x00A0;<br />Permission&#x00A0;is&#x00A0;hereby&#x00A0;granted,&#x00A0;free&#x00A0;of&#x00A0;charge,&#x00A0;to&#x00A0;any&#x00A0;person&#x00A0;obtaining&#x00A0;a&#x00A0;copy
222 &#x00A0;<br />of&#x00A0;this&#x00A0;software&#x00A0;and&#x00A0;associated&#x00A0;documentation&#x00A0;files&#x00A0;(the&#x00A0;"Software"),&#x00A0;to&#x00A0;deal
223 &#x00A0;<br />in&#x00A0;the&#x00A0;Software&#x00A0;without&#x00A0;restriction,&#x00A0;including&#x00A0;without&#x00A0;limitation&#x00A0;the&#x00A0;rights
224 &#x00A0;<br />to&#x00A0;use,&#x00A0;copy,&#x00A0;modify,&#x00A0;merge,&#x00A0;publish,&#x00A0;distribute,&#x00A0;sublicense,&#x00A0;and/or&#x00A0;sell
225 &#x00A0;<br />copies&#x00A0;of&#x00A0;the&#x00A0;Software,&#x00A0;and&#x00A0;to&#x00A0;permit&#x00A0;persons&#x00A0;to&#x00A0;whom&#x00A0;the&#x00A0;Software&#x00A0;is
226 &#x00A0;<br />furnished&#x00A0;to&#x00A0;do&#x00A0;so,&#x00A0;subject&#x00A0;to&#x00A0;the&#x00A0;following&#x00A0;conditions:
227 &#x00A0;<br />
228 &#x00A0;<br />The&#x00A0;above&#x00A0;copyright&#x00A0;notice&#x00A0;and&#x00A0;this&#x00A0;permission&#x00A0;notice&#x00A0;shall&#x00A0;be&#x00A0;included&#x00A0;in
229 &#x00A0;<br />all&#x00A0;copies&#x00A0;or&#x00A0;substantial&#x00A0;portions&#x00A0;of&#x00A0;the&#x00A0;Software.
230 &#x00A0;<br />
231 &#x00A0;<br />THE&#x00A0;SOFTWARE&#x00A0;IS&#x00A0;PROVIDED&#x00A0;"AS&#x00A0;IS",&#x00A0;WITHOUT&#x00A0;WARRANTY&#x00A0;OF&#x00A0;ANY&#x00A0;KIND,&#x00A0;EXPRESS&#x00A0;OR
232 &#x00A0;<br />IMPLIED,&#x00A0;INCLUDING&#x00A0;BUT&#x00A0;NOT&#x00A0;LIMITED&#x00A0;TO&#x00A0;THE&#x00A0;WARRANTIES&#x00A0;OF&#x00A0;MERCHANTABILITY,
233 &#x00A0;<br />FITNESS&#x00A0;FOR&#x00A0;A&#x00A0;PARTICULAR&#x00A0;PURPOSE&#x00A0;AND&#x00A0;NONINFRINGEMENT.&#x00A0;IN&#x00A0;NO&#x00A0;EVENT&#x00A0;SHALL&#x00A0;THE
234 &#x00A0;<br />AUTHORS&#x00A0;OR&#x00A0;COPYRIGHT&#x00A0;HOLDERS&#x00A0;BE&#x00A0;LIABLE&#x00A0;FOR&#x00A0;ANY&#x00A0;CLAIM,&#x00A0;DAMAGES&#x00A0;OR&#x00A0;OTHER
235 &#x00A0;<br />LIABILITY,&#x00A0;WHETHER&#x00A0;IN&#x00A0;AN&#x00A0;ACTION&#x00A0;OF&#x00A0;CONTRACT,&#x00A0;TORT&#x00A0;OR&#x00A0;OTHERWISE,&#x00A0;ARISING&#x00A0;FROM,
236 &#x00A0;<br />OUT&#x00A0;OF&#x00A0;OR&#x00A0;IN&#x00A0;CONNECTION&#x00A0;WITH&#x00A0;THE&#x00A0;SOFTWARE&#x00A0;OR&#x00A0;THE&#x00A0;USE&#x00A0;OR&#x00A0;OTHER&#x00A0;DEALINGS&#x00A0;IN
237 &#x00A0;<br />THE&#x00A0;SOFTWARE.
238 &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;</div>
239 <!--l. 121--><p class="nopar" >
240 <!--l. 123--><p class="noindent" >
241 <h4 class="subsectionHead"><span class="titlemark">1.4   </span> <a 
242  id="x1-60001.4"></a>Obtaining the source code</h4>
243 <!--l. 124--><p class="noindent" >OpenDreambox uses the Git version control system. To obtain the source code, it is
244 required to install Git. See <a 
245 href="http://git-scm.com/" class="url" ><span 
246 class="cmtt-10">http://git-_scm.com/</span></a>.
247 <!--l. 127--><p class="noindent" >To initially download the source into the current directory, issue the following
248 command:
249 <!--l. 130--><p class="noindent" ><span 
250 class="cmtt-9">git clone -b krogoth git://git.opendreambox.org/git/opendreambox.git</span>
251 <!--l. 132--><p class="noindent" >The Git repository can be viewed online at:
252 <!--l. 134--><p class="noindent" ><a 
253 href="http://git.opendreambox.org/?p=opendreambox.git" class="url" ><span 
254 class="cmtt-10">http://git.opendreambox.org/?p=opendreambox.git</span></a>
255 <!--l. 136--><p class="noindent" >
256 <h4 class="subsectionHead"><span class="titlemark">1.5   </span> <a 
257  id="x1-70001.5"></a>Quick start</h4>
258 <!--l. 137--><p class="noindent" >For the impatient:
259                                                                   
260
261                                                                   
262 <!--l. 139--><p class="noindent" ><span 
263 class="cmtt-9">make -C opendreambox image</span>
264 <!--l. 141--><p class="noindent" >If this command fails, prerequisites my be missing. See section <a 
265 href="#x1-130003">3<!--tex4ht:ref: prerequisites --></a>.
266 <!--l. 143--><p class="noindent" >
267 <h4 class="subsectionHead"><span class="titlemark">1.6   </span> <a 
268  id="x1-80001.6"></a>Directory structure</h4>
269 <!--l. 144--><p class="noindent" >OpenDreambox consists of a set of layers containing build instructions. This meta
270 data is used by BitBake to download and compile source code and to assemble
271 installable software packages and firmware images.
272 <!--l. 148--><p class="noindent" >Currently, these layers are used:
273      <ul class="itemize1">
274      <li class="itemize"><span 
275 class="cmtt-9">meta-dreambox</span>
276      </li>
277      <li class="itemize"><span 
278 class="cmtt-9">meta-opendreambox</span>
279      </li>
280      <li class="itemize"><span 
281 class="cmtt-9">meta-openembedded/meta-filesystems</span>
282      </li>
283      <li class="itemize"><span 
284 class="cmtt-9">meta-openembedded/meta-multimedia</span>
285      </li>
286      <li class="itemize"><span 
287 class="cmtt-9">meta-openembedded/meta-networking</span>
288      </li>
289      <li class="itemize"><span 
290 class="cmtt-9">meta-openembedded/meta-oe</span>
291      </li>
292      <li class="itemize"><span 
293 class="cmtt-9">meta-openembedded/meta-python</span>
294      </li>
295      <li class="itemize"><span 
296 class="cmtt-9">meta-openembedded/meta-ruby</span>
297      </li>
298      <li class="itemize"><span 
299 class="cmtt-9">meta-openembedded/meta-webserver</span>
300      </li>
301      <li class="itemize"><span 
302 class="cmtt-9">meta-qt5</span>
303      </li>
304      <li class="itemize"><span 
305 class="cmtt-9">openembedded-core/meta</span></li></ul>
306 <!--l. 164--><p class="noindent" >If a recipe for the same package exists in multiple layers, then the higher priority
307 layer takes precedence over the lower priority layer.
308 <!--l. 168--><p class="noindent" >For example, if <span 
309 class="cmtt-9">libmad</span><span 
310 class="cmtt-9">_0.15.1b.bb </span>existed in both <span 
311 class="cmtt-9">meta-openembedded </span>and
312 <span 
313 class="cmtt-9">openembedded-core</span>, the recipe in <span 
314 class="cmtt-9">meta-openembedded </span>would be used, because
315 <span 
316 class="cmtt-9">openembedded-core </span>has lower priority. Priority values are determined by the variable
317 <span 
318 class="cmtt-9">BBFILE</span><span 
319 class="cmtt-9">_PRIORITY </span>in <span 
320 class="cmtt-9">conf/layer.conf </span>of each layer.
321                                                                   
322
323                                                                   
324 <!--l. 174--><p class="noindent" ><span 
325 class="cmbx-10">NOTE: </span>This would still be true even if the version of <span 
326 class="cmtt-9">libmad </span>in <span 
327 class="cmtt-9">openembeded-core</span>
328 was higher than the version in <span 
329 class="cmtt-9">meta-openembedded</span>, unless <span 
330 class="cmtt-9">PREFERRED</span><span 
331 class="cmtt-9">_VERSION</span><span 
332 class="cmtt-9">_libmad</span>
333 was set to the version in <span 
334 class="cmtt-9">openembedded-core</span>. There is currently no way to prefer a
335 version of a lower priority layer, if the same version is present in a higher priority
336 layer.
337 <!--l. 180--><p class="noindent" >
338 <h5 class="subsubsectionHead"><span class="titlemark">1.6.1   </span> <a 
339  id="x1-90001.6.1"></a>openembedded-core and meta-openembedded</h5>
340 <!--l. 181--><p class="noindent" >These directories contain copies of Git repositories from git.openembedded.org,
341 including the OpenEmbedded-Core layer and the (Meta-)OpenEmbedded layers.
342 They get created automatically when building the distribution for the first
343 time.
344 <!--l. 185--><p class="noindent" >Throughout this document, the combination of these directories will be referred to as
345 OpenEmbedded.
346 <!--l. 188--><p class="noindent" >The latest changes to these Git repositories can be seen at:
347 <!--l. 190--><p class="noindent" ><a 
348 href="http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/krogoth" class="url" ><span 
349 class="cmtt-10">http://git.openembedded.org/openembedded-_core-_contrib/log/?h=obi/krogoth</span></a>
350 <!--l. 192--><p class="noindent" ><a 
351 href="http://git.openembedded.org/meta-openembedded-contrib/log/?h=obi/krogoth" class="url" ><span 
352 class="cmtt-10">http://git.openembedded.org/meta-_openembedded-_contrib/log/?h=obi/krogoth</span></a>
353 <!--l. 194--><p class="noindent" >
354 <h5 class="subsubsectionHead"><span class="titlemark">1.6.2   </span> <a 
355  id="x1-100001.6.2"></a>meta-opendreambox</h5>
356 <!--l. 195--><p class="noindent" >This directory contains:
357      <ul class="itemize1">
358      <li class="itemize">Recipes   for   packages   written   specifically   for   the   OpenDreambox
359      distribution
360      </li>
361      <li class="itemize">Modifications to recipes from OpenEmbedded
362      </li>
363      <li class="itemize">Recipes   for   software   versions   older   than   those   available   from
364      OpenEmbedded
365      </li>
366      <li class="itemize">Recipes   for   software   versions   newer   than   those   available   from
367      OpenEmbedded</li></ul>
368                                                                   
369
370                                                                   
371 <!--l. 204--><p class="noindent" >
372 <h5 class="subsubsectionHead"><span class="titlemark">1.6.3   </span> <a 
373  id="x1-110001.6.3"></a>meta-dreambox</h5>
374 <!--l. 205--><p class="noindent" >The directory <span 
375 class="cmtt-9">meta-dreambox </span>contains Board Support Packages (BSP) for the
376 supported Dreambox models. This includes:
377      <ul class="itemize1">
378      <li class="itemize">Hardware drivers
379      </li>
380      <li class="itemize">Machine specific overrides
381      </li>
382      <li class="itemize">The Linux kernel
383      </li>
384      <li class="itemize">The boot loader
385      </li>
386      <li class="itemize">Splash images</li></ul>
387 <!--l. 216--><p class="noindent" >
388 <h3 class="sectionHead"><span class="titlemark">2   </span> <a 
389  id="x1-120002"></a>Further readings</h3>
390      <ul class="itemize1">
391      <li class="itemize">The Yocto Project Reference Manual: <a 
392 href="https://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html" class="url" ><span 
393 class="cmtt-10">https://www.yoctoproject.org/docs/2.1/ref-_manual/ref-_manual.html</span></a></li></ul>
394 <!--l. 222--><p class="noindent" >
395 <h3 class="sectionHead"><span class="titlemark">3   </span> <a 
396  id="x1-130003"></a>Prerequisites</h3>
397 <!--l. 225--><p class="noindent" >
398 <h4 class="subsectionHead"><span class="titlemark">3.1   </span> <a 
399  id="x1-140003.1"></a>Required software</h4>
400 <!--l. 227--><p class="noindent" >The OpenEmbedded project provides a general list of prerequisites for many Linux
401 distributions and also for some other operating systems.
402      <ul class="itemize1">
403      <li class="itemize"><a 
404 href="http://www.openembedded.org/wiki/Getting\_started#Required\_software" class="url" ><span 
405 class="cmtt-10">http://www.openembedded.org/wiki/Getting\_started#Required\_software</span></a></li></ul>
406                                                                   
407
408                                                                   
409 <!--l. 234--><p class="noindent" >It is highly recommended to use Linux to build OpenDreambox. In theory, any recent
410 distribution will do, but not many distributions have been verified to build
411 OpenDreambox without errors. Tested distributions include:
412      <ul class="itemize1">
413      <li class="itemize">Debian 8.6 &#8221;Jessie&#8221; [amd64]
414      </li>
415      <li class="itemize">Ubuntu 16.04.1 LTS &#8221;Xenial Xerus&#8221; [amd64]</li></ul>
416                                                                   
417
418                                                                   
419 <!--l. 246--><p class="noindent" >
420 <h3 class="sectionHead"><span class="titlemark">4   </span> <a 
421  id="x1-150004"></a>Major changes since previous public releases</h3>
422 <!--l. 248--><p class="noindent" >
423 <h4 class="subsectionHead"><span class="titlemark">4.1   </span> <a 
424  id="x1-160004.1"></a>Changes since release 1.6</h4>
425      <ul class="itemize1">
426      <li class="itemize">Recipes were split across multiple layers and categorized.
427      </li>
428      <li class="itemize"><span 
429 class="cmtt-9">env.source  </span>has   been   replaced   by   two   files,   <span 
430 class="cmtt-9">bitbake.env  </span>and
431      <span 
432 class="cmtt-9">cross-compile.env</span>. The former sets a minimal environment that is needed
433      to execute bitbake. The latter creates machine-specific command aliases,
434      in order to compile external software.
435      </li>
436      <li class="itemize">All machines share a common <span 
437 class="cmtt-9">tmp </span>directory.
438      </li>
439      <li class="itemize"><span 
440 class="cmtt-9">$</span><span 
441 class="cmsy-9">{</span><span 
442 class="cmtt-9">MACHINE</span><span 
443 class="cmsy-9">}</span><span 
444 class="cmtt-9">/build </span>directories were renamed to <span 
445 class="cmtt-9">build/$</span><span 
446 class="cmsy-9">{</span><span 
447 class="cmtt-9">MACHINE</span><span 
448 class="cmsy-9">}</span>.
449      </li>
450      <li class="itemize">Kernel packages were renamed from <span 
451 class="cmtt-9">linux-$</span><span 
452 class="cmsy-9">{</span><span 
453 class="cmtt-9">MACHINE</span><span 
454 class="cmsy-9">} </span>to <span 
455 class="cmtt-9">linux-dreambox</span>.
456      </li>
457      <li class="itemize">Support for machines based on ATI Xilleon or IBM STB was dropped.</li></ul>
458 <!--l. 261--><p class="noindent" >
459 <h4 class="subsectionHead"><span class="titlemark">4.2   </span> <a 
460  id="x1-170004.2"></a>Changes since release 2.0</h4>
461      <ul class="itemize1">
462      <li class="itemize">Added support for DM520, DM525, DM820 and DM7080.
463      </li>
464      <li class="itemize">If   a   recipe   changes,   the   corresponding   packages   will   be   rebuilt
465      automatically, in contrast to required manual PR bumps in the past.
466      </li>
467      <li class="itemize">Each machine uses its own tmp directory again, like before 2.0. However,
468      there is a shared <span 
469 class="cmtt-9">sstate-cache</span>, which allows to share already compiled
470      data between compatible machines. This impacts performance and size of
471      the build system, but improves reliability and consistency across builds.
472                                                                   
473
474                                                                   
475      </li>
476      <li class="itemize">Support for machines without FPU and kernel versions below 3.x was
477      dropped (DM800).
478      </li>
479      <li class="itemize">Layers under meta-bsp were combined into meta-dreambox.
480      </li>
481      <li class="itemize">Default package format switched from ipk (opkg) to deb (dpkg + apt).
482      </li>
483      <li class="itemize"><span 
484 class="cmtt-9">dreambox-image   </span>was    renamed    to    include    the    package    format
485      (<span 
486 class="cmtt-9">dreambox-image-deb</span>).</li></ul>
487 <!--l. 276--><p class="noindent" >
488 <h4 class="subsectionHead"><span class="titlemark">4.3   </span> <a 
489  id="x1-180004.3"></a>Changes since release 2.2</h4>
490      <ul class="itemize1">
491      <li class="itemize">Added support for DM900.
492      </li>
493      <li class="itemize">Support  for  machines  with  low  memory  was  dropped  (DM500HD,
494      DM800SE).
495      </li>
496      <li class="itemize">Switched from Qt4 to Qt5.</li></ul>
497 <!--l. 283--><p class="noindent" >
498 <h3 class="sectionHead"><span class="titlemark">5   </span> <a 
499  id="x1-190005"></a>Known Issues</h3>
500 <!--l. 285--><p class="noindent" >None.
501                                                                   
502
503                                                                   
504 <!--l. 289--><p class="noindent" >
505 <h3 class="sectionHead"><span class="titlemark">6   </span> <a 
506  id="x1-200006"></a>Building OpenDreambox</h3>
507 <!--l. 291--><p class="noindent" >In the top level directory, there is a <span 
508 class="cmtt-9">Makefile</span>, which is used to set up build
509 directories and to fetch or update all used repositories. The Makefile can
510 be influenced by environment variables, either by specifing them on the
511 command-line or by storing them in a file called <span 
512 class="cmtt-9">conf/make.conf</span>. It is not
513 recommended to edit the <span 
514 class="cmtt-9">Makefile </span>directly in order to avoid conflicts with future
515 updates.
516 <!--l. 298--><p class="noindent" >When the <span 
517 class="cmtt-9">Makefile </span>is run for the first time, the following steps will be executed:
518      <ul class="itemize1">
519      <li class="itemize">Creation of configuration files
520          <ul class="itemize2">
521          <li class="itemize"><span 
522 class="cmtt-9">bitbake.env</span>
523          </li>
524          <li class="itemize"><span 
525 class="cmtt-9">conf/opendreambox.conf</span>
526          </li>
527          <li class="itemize"><span 
528 class="cmtt-9">build/$</span><span 
529 class="cmsy-9">{</span><span 
530 class="cmtt-9">MACHINE</span><span 
531 class="cmsy-9">}</span><span 
532 class="cmtt-9">/conf/bblayers.conf</span>
533          </li>
534          <li class="itemize"><span 
535 class="cmtt-9">build/$</span><span 
536 class="cmsy-9">{</span><span 
537 class="cmtt-9">MACHINE</span><span 
538 class="cmsy-9">}</span><span 
539 class="cmtt-9">/conf/local.conf</span></li></ul>
540      </li>
541      <li class="itemize">Update or checkout of Git repositories
542          <ul class="itemize2">
543          <li class="itemize">OpenDreambox
544          </li>
545          <li class="itemize">BitBake
546          </li>
547          <li class="itemize">OpenEmbedded</li></ul>
548      </li></ul>
549 <!--l. 317--><p class="noindent" >
550 <h4 class="subsectionHead"><span class="titlemark">6.1   </span> <a 
551  id="x1-210006.1"></a>Makefile targets</h4>
552 <!--l. 318--><p class="noindent" >Run <span 
553 class="cmtt-9">make help </span>to get a list of targets of the top level Makefile, together with a brief
554 description.
555                                                                   
556
557                                                                   
558 <!--l. 320--><p class="noindent" >
559 <h4 class="subsectionHead"><span class="titlemark">6.2   </span> <a 
560  id="x1-220006.2"></a>Configuration variables</h4>
561 <!--l. 321--><p class="noindent" >
562 <h5 class="subsubsectionHead"><span class="titlemark">6.2.1   </span> <a 
563  id="x1-230006.2.1"></a>BB_NUMBER_THREADS</h5>
564 <!--l. 322--><p class="noindent" >Controls how many BitBake tasks may run at a time. Defaults to the number of cores
565 available on the build system.
566 <!--l. 325--><p class="noindent" >
567 <h5 class="subsubsectionHead"><span class="titlemark">6.2.2   </span> <a 
568  id="x1-240006.2.2"></a>MACHINE</h5>
569 <!--l. 326--><p class="noindent" >Controls the target machine to build packages for. See section <a 
570 href="#x1-40001.2">1.2<!--tex4ht:ref: products --></a> for a list of
571 supported products.
572 <!--l. 329--><p class="noindent" >
573 <h5 class="subsubsectionHead"><span class="titlemark">6.2.3   </span> <a 
574  id="x1-250006.2.3"></a>PARALLEL_MAKE</h5>
575 <!--l. 330--><p class="noindent" >Controls how many processes per recipe <span 
576 class="cmtt-9">make </span>may use. Defaults to the number of
577 cores available on the build system.
578 <!--l. 333--><p class="noindent" >
579 <h4 class="subsectionHead"><span class="titlemark">6.3   </span> <a 
580  id="x1-260006.3"></a>Adding custom layers</h4>
581 <!--l. 335--><p class="noindent" >It is possible to add custom layers to the build system. This can be done globally and
582 per machine. To add a layer globally, edit <span 
583 class="cmtt-9">conf/bblayers-ext.conf</span>. To add a
584 machine-specific layer, edit <span 
585 class="cmtt-9">conf/bblayers-$</span><span 
586 class="cmsy-9">{</span><span 
587 class="cmtt-9">MACHINE</span><span 
588 class="cmsy-9">}</span><span 
589 class="cmtt-9">-ext.conf</span>. Assuming that an
590 additional layer is available at <span 
591 class="cmtt-9">$</span><span 
592 class="cmsy-9">{</span><span 
593 class="cmtt-9">HOME</span><span 
594 class="cmsy-9">}</span><span 
595 class="cmtt-9">/custom-layer</span>, the entry to add to the file will
596 look like this:
597 <!--l. 341--><p class="noindent" ><span 
598 class="cmtt-9">BBLAYERS =+ "$</span><span 
599 class="cmsy-9">{</span><span 
600 class="cmtt-9">HOME</span><span 
601 class="cmsy-9">}</span><span 
602 class="cmtt-9">/custom-layer"</span>
603 <!--l. 343--><p class="noindent" >
604 <h4 class="subsectionHead"><span class="titlemark">6.4   </span> <a 
605  id="x1-270006.4"></a>Adding custom options</h4>
606 <!--l. 344--><p class="noindent" >It is possible to tweak a lot more options than those used by the <span 
607 class="cmtt-9">Makefile </span>by editing
608 <span 
609 class="cmtt-9">conf/local-ext.conf </span>or <span 
610 class="cmtt-9">conf/local-$</span><span 
611 class="cmsy-9">{</span><span 
612 class="cmtt-9">MACHINE</span><span 
613 class="cmsy-9">}</span><span 
614 class="cmtt-9">-ext.conf</span>.
615                                                                   
616
617                                                                   
618 <!--l. 347--><p class="noindent" >For example, if the firmware shall use the package feed built on the develoment
619 machine, which happens to be 192.168.1.1 and has a webserver configured to point to
620 <span 
621 class="cmtt-9">tmp/deploy/ipk</span>, a line like the following may be added:
622 <!--l. 351--><p class="noindent" ><span 
623 class="cmtt-9">DISTRO</span><span 
624 class="cmtt-9">_FEED</span><span 
625 class="cmtt-9">_URI = "http://192.168.1.1/$</span><span 
626 class="cmsy-9">{</span><span 
627 class="cmtt-9">DISTRO</span><span 
628 class="cmsy-9">}</span><span 
629 class="cmtt-9">/$</span><span 
630 class="cmsy-9">{</span><span 
631 class="cmtt-9">DISTRO</span><span 
632 class="cmtt-9">_VERSION</span><span 
633 class="cmsy-9">}</span><span 
634 class="cmtt-9">"</span>
635 <!--l. 353--><p class="noindent" >In general, any variable in OpenEmbedded that uses weak assignment (<span 
636 class="cmtt-9">?=</span>) may be
637 overridden from these files.
638 <!--l. 356--><p class="noindent" >The following sections list some commonly used options.
639 <!--l. 358--><p class="noindent" >
640 <h5 class="subsubsectionHead"><span class="titlemark">6.4.1   </span> <a 
641  id="x1-280006.4.1"></a>DISTRO_FEED_PREFIX</h5>
642 <!--l. 360--><p class="noindent" ><span 
643 class="cmtt-9">DISTRO</span><span 
644 class="cmtt-9">_FEED</span><span 
645 class="cmtt-9">_PREFIX </span>specifies the name of the package update feed. This name may be
646 chosen arbitarily.
647 <!--l. 363--><p class="noindent" >Default: <span 
648 class="cmtt-9">DISTRO</span><span 
649 class="cmtt-9">_FEED</span><span 
650 class="cmtt-9">_PREFIX = "remote"</span>
651 <!--l. 365--><p class="noindent" >
652 <h5 class="subsubsectionHead"><span class="titlemark">6.4.2   </span> <a 
653  id="x1-290006.4.2"></a>DISTRO_FEED_URI</h5>
654 <!--l. 367--><p class="noindent" ><span 
655 class="cmtt-9">DISTRO</span><span 
656 class="cmtt-9">_FEED</span><span 
657 class="cmtt-9">_URI </span>specifies the URI of the package update feed.
658 <!--l. 369--><p class="noindent" >Default: <span 
659 class="cmtt-9">DISTRO</span><span 
660 class="cmtt-9">_FEED</span><span 
661 class="cmtt-9">_URI = "http://my-distribution.example/remote-feed/"</span>
662 <!--l. 371--><p class="noindent" >
663 <h5 class="subsubsectionHead"><span class="titlemark">6.4.3   </span> <a 
664  id="x1-300006.4.3"></a>INHERIT</h5>
665 <!--l. 373--><p class="noindent" ><span 
666 class="cmtt-9">INHERIT </span>specifies bbclasses to include from a configuration file. Usually, this variable
667 gets appended to by using the <span 
668 class="cmtt-9">+= </span>operator.
669 <!--l. 376--><p class="noindent" >The OpenDreambox distribution automatically appends <span 
670 class="cmtt-9">"buildhistory recipe</span><span 
671 class="cmtt-9">_sanity"</span>
672 to <span 
673 class="cmtt-9">INHERIT</span>.
674 <!--l. 378--><p class="noindent" >Default: <span 
675 class="cmtt-9">INHERIT = ""</span>
676 <!--l. 380--><p class="noindent" ><span 
677 class="cmbx-10">Some examples:</span>
678 <!--l. 382--><p class="noindent" >Always build the latest versions of OpenDreambox-related projects from
679 Git:
680 <!--l. 384--><p class="noindent" ><span 
681 class="cmtt-9">INHERIT += "opendreambox-autorev"</span>
682                                                                   
683
684                                                                   
685 <!--l. 386--><p class="noindent" >
686 <h4 class="subsectionHead"><span class="titlemark">6.5   </span> <a 
687  id="x1-310006.5"></a>Setting up a build directory</h4>
688 <!--l. 387--><p class="noindent" >To set up a build directory for e.g. <span 
689 class="cmbx-10">DM 7080 </span>run <span 
690 class="cmtt-9">make MACHINE=dm7080</span>. If
691 <span 
692 class="cmtt-9">MACHINE=dm7080 </span>has been set in <span 
693 class="cmtt-9">conf/make.conf </span>(default: dm900), you can simply run
694 <span 
695 class="cmtt-9">make </span>with no arguments instead. This will create and initialize the directory
696 <span 
697 class="cmtt-9">build/dm7080</span>.
698 <!--l. 391--><p class="noindent" >
699 <h4 class="subsectionHead"><span class="titlemark">6.6   </span> <a 
700  id="x1-320006.6"></a>Building a firmware image</h4>
701 <!--l. 392--><p class="noindent" >To build a firmware image for e.g. <span 
702 class="cmbx-10">DM 7080 </span>run <span 
703 class="cmtt-9">make MACHINE=dm7080 image</span>. If
704 <span 
705 class="cmtt-9">MACHINE=dm7080 </span>has been set in <span 
706 class="cmtt-9">conf/make.conf </span>(default: dm900), you can simply run
707 <span 
708 class="cmtt-9">make image </span>instead.
709 <!--l. 396--><p class="noindent" >
710 <h4 class="subsectionHead"><span class="titlemark">6.7   </span> <a 
711  id="x1-330006.7"></a>Building a package</h4>
712 <!--l. 397--><p class="noindent" >To build a single package, BitBake has to be used directly. First, the environment has
713 to be set up, in order to make BitBake available to the shell. This can be done with
714 the following command:
715 <!--l. 401--><p class="noindent" ><span 
716 class="cmtt-9">source bitbake.env</span>
717 <!--l. 403--><p class="noindent" >BitBake must be run from the machine&#8217;s build directory. For <span 
718 class="cmbx-10">DM 7080</span>
719 run:
720 <!--l. 405--><p class="noindent" ><span 
721 class="cmtt-9">cd build/dm7080</span>
722 <!--l. 407--><p class="noindent" >In order to build enigma2, run:
723 <!--l. 409--><p class="noindent" ><span 
724 class="cmtt-9">bitbake enigma2</span>.
725 <!--l. 411--><p class="noindent" >
726 <h3 class="sectionHead"><span class="titlemark">7   </span> <a 
727  id="x1-340007"></a>Development hints</h3>
728 <!--l. 413--><p class="noindent" >
729 <h4 class="subsectionHead"><span class="titlemark">7.1   </span> <a 
730  id="x1-350007.1"></a>Cross-compilation of external software</h4>
731 <!--l. 414--><p class="noindent" >OpenDreambox provides a script called <span 
732 class="cmtt-9">cross-compile.env</span>. Once run, the script will
733 create the following commands (shell aliases), aiming to ease cross-compilation of
734 external source trees:
735                                                                   
736
737                                                                   
738      <ul class="itemize1">
739      <li class="itemize"><span 
740 class="cmtt-9">oe</span><span 
741 class="cmtt-9">_autoreconf </span>- Calls OE&#8217;s version of <span 
742 class="cmtt-9">autoreconf</span>. Useful for projects based
743      on GNU autotools.
744      </li>
745      <li class="itemize"><span 
746 class="cmtt-9">oe</span><span 
747 class="cmtt-9">_runconf </span>- Calls <span 
748 class="cmtt-9">./configure </span>with parameters suitable for OE. Useful
749      for projects based on GNU autotools.
750      </li>
751      <li class="itemize"><span 
752 class="cmtt-9">oe</span><span 
753 class="cmtt-9">_runmake </span>-  Calls  <span 
754 class="cmtt-9">make </span>with  parameters  suitable  for  OE.  Useful  for
755      projects based on GNU autotools or GNU make.
756      </li>
757      <li class="itemize"><span 
758 class="cmtt-9">oe</span><span 
759 class="cmtt-9">_env </span>- Useful to execute arbitrary commands in the OE environment
760      (e.g. <span 
761 class="cmtt-9">oe</span><span 
762 class="cmtt-9">_env env</span>).
763      </li>
764      <li class="itemize"><span 
765 class="cmtt-9">oe</span><span 
766 class="cmtt-9">_setenv </span>- Exports the OE environment to the currently running shell
767      session.</li></ul>
768 <!--l. 425--><p class="noindent" >The script needs to know the target machine, which can be one of the supported
769 products (see <a 
770 href="#x1-40001.2">1.2<!--tex4ht:ref: products --></a>). Because the script adds aliases to your currently running shell
771 session, it has to be invoked using <span 
772 class="cmtt-9">source </span>or <span 
773 class="cmtt-9">. </span>(the dot operator), e.g.:
774 <!--l. 428--><p class="noindent" ><span 
775 class="cmtt-9">source cross-compile.env dm7080</span>
776 <!--l. 430--><p class="noindent" >The script may be called from any location, but must reside inside the OpenDreambox
777 Git tree. You may want to create a symlink to <span 
778 class="cmtt-9">cross-compile.env </span>somewhere in your
779 <span 
780 class="cmtt-9">PATH</span>.
781 <!--l. 433--><p class="noindent" >
782 <h4 class="subsectionHead"><span class="titlemark">7.2   </span> <a 
783  id="x1-360007.2"></a>Coding style</h4>
784 <!--l. 434--><p class="noindent" >Run <span 
785 class="cmtt-9">scripts/do</span><span 
786 class="cmtt-9">_stylize.sh </span>on new recipes to ensure proper coding style.
787 <!--l. 436--><p class="noindent" >
788 <h4 class="subsectionHead"><span class="titlemark">7.3   </span> <a 
789  id="x1-370007.3"></a>Package architecture</h4>
790 <!--l. 437--><p class="noindent" >Set <span 
791 class="cmtt-9">PACKAGE</span><span 
792 class="cmtt-9">_ARCH = "$</span><span 
793 class="cmsy-9">{</span><span 
794 class="cmtt-9">MACHINE</span><span 
795 class="cmtt-9">_ARCH</span><span 
796 class="cmsy-9">}</span><span 
797 class="cmtt-9">" </span>if either condition is met:
798      <ul class="itemize1">
799      <li class="itemize">The     recipe     uses     <span 
800 class="cmtt-9">COMBINED</span><span 
801 class="cmtt-9">_FEATURES</span>,     <span 
802 class="cmtt-9">MACHINE</span><span 
803 class="cmtt-9">_FEATURES    </span>or
804      <span 
805 class="cmtt-9">DREAMBOX</span><span 
806 class="cmtt-9">_FEATURES</span>.
807      </li>
808      <li class="itemize">The recipe uses <span 
809 class="cmtt-9">COMPATIBLE</span><span 
810 class="cmtt-9">_MACHINE</span>.
811                                                                   
812
813                                                                   
814      </li>
815      <li class="itemize">The recipe is part of <span 
816 class="cmtt-9">meta-dreambox</span>.</li></ul>
817 <!--l. 444--><p class="noindent" >
818 <h3 class="sectionHead"><span class="titlemark">8   </span> <a 
819  id="x1-380008"></a>Bug reports and patches</h3>
820 <!--l. 446--><p class="noindent" >Please send bug reports and patches to the Enigma2 development mailing list
821 <span 
822 class="cmtt-9">&#x003C;enigma2-devel@lists.elitedvb.net&#x003E;</span>.
823 <!--l. 448--><p class="noindent" >A comfortable way to create patches is to use <span 
824 class="cmtt-9">git format-patch</span>, after all changes
825 have been committed to your local copy of the repository.
826  
827 </body></html> 
828
829                                                                   
830
831