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