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