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