]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - doc/html/user-guide/conflicts-and-constraints.html
RedBoot TX53 Release 2012-02-15
[karo-tx-redboot.git] / doc / html / user-guide / conflicts-and-constraints.html
1 <!-- Copyright (C) 2003 Red Hat, Inc.                                -->
2 <!-- This material may be distributed only subject to the terms      -->
3 <!-- and conditions set forth in the Open Publication License, v1.0  -->
4 <!-- or later (the latest version is presently available at          -->
5 <!-- http://www.opencontent.org/openpub/).                           -->
6 <!-- Distribution of the work or derivative of the work in any       -->
7 <!-- standard (paper) book form is prohibited unless prior           -->
8 <!-- permission is obtained from the copyright holder.               -->
9 <HTML
10 ><HEAD
11 ><TITLE
12 >Conflicts and constraints</TITLE
13 ><meta name="MSSmartTagsPreventParsing" content="TRUE">
14 <META
15 NAME="GENERATOR"
16 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
17 "><LINK
18 REL="HOME"
19 TITLE="eCos User Guide"
20 HREF="ecos-user-guide.html"><LINK
21 REL="UP"
22 TITLE="Manual Configuration"
23 HREF="manual-configuration.html"><LINK
24 REL="PREVIOUS"
25 TITLE="Creating the Build Tree"
26 HREF="creating-build-tree.html"><LINK
27 REL="NEXT"
28 TITLE="Building the System"
29 HREF="building-the-system.html"></HEAD
30 ><BODY
31 CLASS="SECT1"
32 BGCOLOR="#FFFFFF"
33 TEXT="#000000"
34 LINK="#0000FF"
35 VLINK="#840084"
36 ALINK="#0000FF"
37 ><DIV
38 CLASS="NAVHEADER"
39 ><TABLE
40 SUMMARY="Header navigation table"
41 WIDTH="100%"
42 BORDER="0"
43 CELLPADDING="0"
44 CELLSPACING="0"
45 ><TR
46 ><TH
47 COLSPAN="3"
48 ALIGN="center"
49 >eCos User Guide</TH
50 ></TR
51 ><TR
52 ><TD
53 WIDTH="10%"
54 ALIGN="left"
55 VALIGN="bottom"
56 ><A
57 HREF="creating-build-tree.html"
58 ACCESSKEY="P"
59 >Prev</A
60 ></TD
61 ><TD
62 WIDTH="80%"
63 ALIGN="center"
64 VALIGN="bottom"
65 >Chapter 28. Manual Configuration</TD
66 ><TD
67 WIDTH="10%"
68 ALIGN="right"
69 VALIGN="bottom"
70 ><A
71 HREF="building-the-system.html"
72 ACCESSKEY="N"
73 >Next</A
74 ></TD
75 ></TR
76 ></TABLE
77 ><HR
78 ALIGN="LEFT"
79 WIDTH="100%"></DIV
80 ><DIV
81 CLASS="SECT1"
82 ><H1
83 CLASS="SECT1"
84 ><A
85 NAME="CONFLICTS-AND-CONSTRAINTS">Conflicts and constraints</H1
86 ><P
87 >Configuration options are not completely independent. For example
88 the C library's <TT
89 CLASS="FUNCTION"
90 >strtod()</TT
91 > and <TT
92 CLASS="FUNCTION"
93 >atof()</TT
94 >
95 functions rely on the math library package to provide certain functionality. If the math library package is removed then the C
96 library can no longer provide these functions. Each package describes constraints like these in CDL <SPAN
97 CLASS="emphasis"
98 ><I
99 CLASS="EMPHASIS"
100 >"requires"</I
101 ></SPAN
102 > properties. If a constraint is not satisfied, then the configuration contains a conflict. For any given conflict there can
103 be several resolution options. For example, it would be possible to add the math library package back to the
104 configuration, or to disable the <TT
105 CLASS="FUNCTION"
106 >strtod()</TT
107 > and <TT
108 CLASS="FUNCTION"
109 >atof()</TT
110 > functions.</P
111 ><P
112 >The <SPAN
113 CLASS="PRODUCTNAME"
114 >eCos</SPAN
115 > configuration tools will report any conflicts in the current configuration. If there are any such conflicts
116 then the configuration is usually unsafe and it makes no sense to build and run <SPAN
117 CLASS="PRODUCTNAME"
118 >eCos</SPAN
119 > in such circumstances. In fact,
120 any attempt at building <SPAN
121 CLASS="PRODUCTNAME"
122 >eCos</SPAN
123 > is likely to fail. In exceptional cases it is possible to override this by using e.g. the
124 <TT
125 CLASS="OPTION"
126 >--ignore-errors</TT
127 > qualifier with ecosconfig. </P
128 ><P
129 >Many constraints are fairly simple in nature, and the configuration tools contain an inference engine which can
130 resolve the associated conflicts automatically. For example, if the math library package is removed then the
131 inference engine can resolve the resulting conflict by disabling the configuration option for <TT
132 CLASS="FUNCTION"
133 >strtod()</TT
134 > and <TT
135 CLASS="FUNCTION"
136 >atof()</TT
137 >. All
138 such changes will be reported. Sometimes the inference engine cannot resolve a conflict, for example it is not
139 allowed to override a change that has been made explicitly by the user. Sometimes it will find a solution which does
140 not match the application's requirements. </P
141 ><P
142 >A typical session involving conflicts would look something like this: 
143 <TABLE
144 BORDER="5"
145 BGCOLOR="#E0E0F0"
146 WIDTH="70%"
147 ><TR
148 ><TD
149 ><PRE
150 CLASS="SCREEN"
151 >$ ecosconfig new pid</PRE
152 ></TD
153 ></TR
154 ></TABLE
155 >This creates a new configuration with the default template. For most targets this will not result in any conflicts,
156 because the default settings for the various options meet the requirements of the default template.</P
157 ><P
158 > For some targets
159 there may be conflicts and the inference engine would come into play. 
160 <TABLE
161 BORDER="5"
162 BGCOLOR="#E0E0F0"
163 WIDTH="70%"
164 ><TR
165 ><TD
166 ><PRE
167 CLASS="SCREEN"
168 >$ ecosconfig remove libm 
169 U CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT, new inferred value 0 
170 U CYGFUN_LIBC_strtod, new inferred value 0 
171 U CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT, new inferred value 0 </PRE
172 ></TD
173 ></TR
174 ></TABLE
175 >
176 ecosconfig reports that this change caused three conflicts, all in the C library. The inference engine was able to
177 resolve all the conflicts and update the relevant configuration options accordingly. </P
178 ><P
179 >To suppress the inference engine <TT
180 CLASS="OPTION"
181 >--no-resolve</TT
182 > can be used: 
183 <TABLE
184 BORDER="5"
185 BGCOLOR="#E0E0F0"
186 WIDTH="70%"
187 ><TR
188 ><TD
189 ><PRE
190 CLASS="SCREEN"
191 >$ ecosconfig new pid
192 $ ecosconfig --no-resolve remove libm 
193 C CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT, "requires" constraint not satisfied:      CYGPKG_LIBM 
194 C CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT, "requires" constraint not satisfied:      CYGPKG_LIBM 
195 C CYGFUN_LIBC_strtod, "requires" constraint not satisfied: CYGPKG_LIBM </PRE
196 ></TD
197 ></TR
198 ></TABLE
199 >
200 Three unresolved conflicts are reported.</P
201 ><P
202 >The <B
203 CLASS="COMMAND"
204 >check</B
205 > command can be used to get the current state of the
206 configuration, and the <TT
207 CLASS="OPTION"
208 >--verbose</TT
209 > qualifier will provide additional information: </P
210 ><TABLE
211 BORDER="5"
212 BGCOLOR="#E0E0F0"
213 WIDTH="70%"
214 ><TR
215 ><TD
216 ><PRE
217 CLASS="SCREEN"
218 >$ ecosconfig --srcdir /home/bartv/ecc/ecc --verbose check 
219 Target: pid 
220 Template: default 
221 Removed:
222  CYGPKG_LIBM 
223 3 conflict(s): 
224 C CYGFUN_LIBC_strtod, "requires" constraint not satisfied: CYGPKG_LIBM
225  Possible solution: 
226     CYGFUN_LIBC_strtod -&#62; 0 
227     CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT -&#62; 0 
228 C CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT, "requires" constraint not satisfied:      CYGPKG_LIBM 
229  Possible solution: 
230     CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT -&#62; 0 
231 C CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT, "requires" constraint not satisfied:      CYGPKG_LIBM 
232  Possible solution: 
233     CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT -&#62; 0 </PRE
234 ></TD
235 ></TR
236 ></TABLE
237 ><P
238 >If the proposed solutions are acceptable, the resolve command can be used to apply them: 
239 <TABLE
240 BORDER="5"
241 BGCOLOR="#E0E0F0"
242 WIDTH="70%"
243 ><TR
244 ><TD
245 ><PRE
246 CLASS="SCREEN"
247 >$ ecosconfig resolve 
248 U CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT, new inferred value 0 
249 U CYGFUN_LIBC_strtod, new inferred value 0 
250 U CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT, new inferred value 0 </PRE
251 ></TD
252 ></TR
253 ></TABLE
254 ></P
255 ><P
256 >The current configuration is again conflict-free and it is possible to generate a build tree. The <TT
257 CLASS="OPTION"
258 >--quiet</TT
259 > qualifier can
260 be used to suppress the change messages, if desired.</P
261 ><P
262 >When changing individual configuration options by editing the ecos.ecc file (as described below), the resulting
263 system should be checked and any problems should be resolved. For example, if CYGFUN_LIBC_strtod is
264 explicitly enabled in the savefile:
265 <TABLE
266 BORDER="5"
267 BGCOLOR="#E0E0F0"
268 WIDTH="70%"
269 ><TR
270 ><TD
271 ><PRE
272 CLASS="SCREEN"
273 >$ edit ecos.ecc
274 $ ecosconfig check 
275 Target: pid 
276 Template: default 
277 Removed: 
278     CYGPKG_LIBM 
279 1 conflict(s): 
280 C CYGFUN_LIBC_strtod, "requires" constraint not satisfied: CYGPKG_LIBM 
281 $ ecosconfig resolve 
282 C CYGFUN_LIBC_strtod, "requires" constraint not satisfied: CYGPKG_LIBM </PRE
283 ></TD
284 ></TR
285 ></TABLE
286 >
287 In this case the inference engine cannot resolve the conflict automatically because that would involve changing a
288 user setting. Any attempt to generate a build tree will fail: 
289 <TABLE
290 BORDER="5"
291 BGCOLOR="#E0E0F0"
292 WIDTH="70%"
293 ><TR
294 ><TD
295 ><PRE
296 CLASS="SCREEN"
297 >$ ecosconfig --srcdir /home/bartv/ecc/ecc tree 
298 C CYGFUN_LIBC_strtod, "requires" constraint not satisfied: CYGPKG_LIBM
299 Unable to generate build tree, this configuration still contains conflicts.
300 Either resolve the conflicts or use --ignore-errors </PRE
301 ></TD
302 ></TR
303 ></TABLE
304 ></P
305 ><P
306 >It is still possible to generate a build tree: 
307 <TABLE
308 BORDER="5"
309 BGCOLOR="#E0E0F0"
310 WIDTH="70%"
311 ><TR
312 ><TD
313 ><PRE
314 CLASS="SCREEN"
315 >$ ecosconfig --srcdir /home/bartv/ecc/ecc --ignore-errors tree 
316 C CYGFUN_LIBC_strtod, "requires" constraint not satisfied: CYGPKG_LIBM 
317 $ make </PRE
318 ></TD
319 ></TR
320 ></TABLE
321 >
322 In this case <SPAN
323 CLASS="PRODUCTNAME"
324 >eCos</SPAN
325 > will fail to build. In other cases of unresolved conflicts <SPAN
326 CLASS="PRODUCTNAME"
327 >eCos</SPAN
328 > may build, but may not run. In
329 general all conflicts should be resolved by editing the <TT
330 CLASS="FILENAME"
331 >ecos.ecc</TT
332 > file, by letting the inference engine make appropriate
333 changes, or by other means, before any attempt is made to build or run <SPAN
334 CLASS="PRODUCTNAME"
335 >eCos</SPAN
336 >. </P
337 ></DIV
338 ><DIV
339 CLASS="NAVFOOTER"
340 ><HR
341 ALIGN="LEFT"
342 WIDTH="100%"><TABLE
343 SUMMARY="Footer navigation table"
344 WIDTH="100%"
345 BORDER="0"
346 CELLPADDING="0"
347 CELLSPACING="0"
348 ><TR
349 ><TD
350 WIDTH="33%"
351 ALIGN="left"
352 VALIGN="top"
353 ><A
354 HREF="creating-build-tree.html"
355 ACCESSKEY="P"
356 >Prev</A
357 ></TD
358 ><TD
359 WIDTH="34%"
360 ALIGN="center"
361 VALIGN="top"
362 ><A
363 HREF="ecos-user-guide.html"
364 ACCESSKEY="H"
365 >Home</A
366 ></TD
367 ><TD
368 WIDTH="33%"
369 ALIGN="right"
370 VALIGN="top"
371 ><A
372 HREF="building-the-system.html"
373 ACCESSKEY="N"
374 >Next</A
375 ></TD
376 ></TR
377 ><TR
378 ><TD
379 WIDTH="33%"
380 ALIGN="left"
381 VALIGN="top"
382 >Creating the Build Tree</TD
383 ><TD
384 WIDTH="34%"
385 ALIGN="center"
386 VALIGN="top"
387 ><A
388 HREF="manual-configuration.html"
389 ACCESSKEY="U"
390 >Up</A
391 ></TD
392 ><TD
393 WIDTH="33%"
394 ALIGN="right"
395 VALIGN="top"
396 >Building the System</TD
397 ></TR
398 ></TABLE
399 ></DIV
400 ></BODY
401 ></HTML
402 >