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