]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - doc/html/user-guide/package-structure.html
0ffaa4066258940e80b7274899b6d381466bbc16
[karo-tx-redboot.git] / doc / html / user-guide / package-structure.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 >Package Structure</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="Managing the Package Repository"
23 HREF="managing-package-repository.html"><LINK
24 REL="PREVIOUS"
25 TITLE="Managing the Package Repository"
26 HREF="managing-package-repository.html"><LINK
27 REL="NEXT"
28 TITLE="Appendixes"
29 HREF="appendices.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="managing-package-repository.html"
58 ACCESSKEY="P"
59 >Prev</A
60 ></TD
61 ><TD
62 WIDTH="80%"
63 ALIGN="center"
64 VALIGN="bottom"
65 >Chapter 29. Managing the Package Repository</TD
66 ><TD
67 WIDTH="10%"
68 ALIGN="right"
69 VALIGN="bottom"
70 ><A
71 HREF="appendices.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="PACKAGE-STRUCTURE">Package Structure</H1
86 ><P
87 >The files in an installed <SPAN
88 CLASS="PRODUCTNAME"
89 >eCos</SPAN
90 > source tree are organized in
91 a natural tree structure, grouping together files which work together
92 into <SPAN
93 CLASS="emphasis"
94 ><I
95 CLASS="EMPHASIS"
96 >Packages</I
97 ></SPAN
98 >. For example, the kernel files
99 are all together in: </P
100 ><P
101 ></P
102 ><TABLE
103 BORDER="0"
104 ><TBODY
105 ><TR
106 ><TD
107 ><TT
108 CLASS="FILENAME"
109 ><TT
110 CLASS="REPLACEABLE"
111 ><I
112 >BASE_DIR</I
113 ></TT
114 >/kernel/<TT
115 CLASS="REPLACEABLE"
116 ><I
117 >&#60;version&#62;</I
118 ></TT
119 >/include/</TT
120 ></TD
121 ></TR
122 ><TR
123 ><TD
124 >           <TT
125 CLASS="FILENAME"
126 ><TT
127 CLASS="REPLACEABLE"
128 ><I
129 >BASE_DIR</I
130 ></TT
131 >/kernel/<TT
132 CLASS="REPLACEABLE"
133 ><I
134 >&#60;version&#62;</I
135 ></TT
136 >/src/</TT
137 ></TD
138 ></TR
139 ><TR
140 ><TD
141 >       <TT
142 CLASS="FILENAME"
143 ><TT
144 CLASS="REPLACEABLE"
145 ><I
146 >BASE_DIR</I
147 ></TT
148 >/kernel/<TT
149 CLASS="REPLACEABLE"
150 ><I
151 >&#60;version&#62;</I
152 ></TT
153 >/tests/</TT
154 ></TD
155 ></TR
156 ></TBODY
157 ></TABLE
158 ><P
159 ></P
160 ><P
161 >and &micro;ITRON compatibility layer files are in:
162         </P
163 ><P
164 ></P
165 ><TABLE
166 BORDER="0"
167 ><TBODY
168 ><TR
169 ><TD
170 >           <TT
171 CLASS="FILENAME"
172 ><TT
173 CLASS="REPLACEABLE"
174 ><I
175 >BASE_DIR</I
176 ></TT
177 >/compat/uitron/<TT
178 CLASS="REPLACEABLE"
179 ><I
180 >&#60;version&#62;</I
181 ></TT
182 >/include/</TT
183 ></TD
184 ></TR
185 ><TR
186 ><TD
187 >       <TT
188 CLASS="FILENAME"
189 ><TT
190 CLASS="REPLACEABLE"
191 ><I
192 >BASE_DIR</I
193 ></TT
194 >/compat/uitron/<TT
195 CLASS="REPLACEABLE"
196 ><I
197 >&#60;version&#62;</I
198 ></TT
199 >/src/</TT
200 ></TD
201 ></TR
202 ><TR
203 ><TD
204 >       <TT
205 CLASS="FILENAME"
206 ><TT
207 CLASS="REPLACEABLE"
208 ><I
209 >BASE_DIR</I
210 ></TT
211 >/compat/uitron/<TT
212 CLASS="REPLACEABLE"
213 ><I
214 >&#60;version&#62;</I
215 ></TT
216 >/tests/</TT
217 ></TD
218 ></TR
219 ></TBODY
220 ></TABLE
221 ><P
222 ></P
223 ><P
224 >The feature of these names which is of interest here is
225           the <TT
226 CLASS="REPLACEABLE"
227 ><I
228 >&#60;version&#62;</I
229 ></TT
230 > near the end. It may seem odd to place a version number deep in the
231           path, rather than having something like
232           <TT
233 CLASS="FILENAME"
234 ><TT
235 CLASS="REPLACEABLE"
236 ><I
237 >BASE_DIR</I
238 ></TT
239 >/<TT
240 CLASS="REPLACEABLE"
241 ><I
242 >&#60;version&#62;</I
243 ></TT
244 >/...everything...</TT
245 >
246           or leaving it up to you to choose a different
247           install-place when a new release of the system arrives.
248         </P
249 ><P
250 >There is a rationale for this organization: as
251           indicated, the kernel and the
252           &micro;ITRON compatibility subsystem
253           are examples of software packages. For the first few
254           releases of <SPAN
255 CLASS="PRODUCTNAME"
256 >eCos</SPAN
257 >, all the packages will move along
258           in step, i.e. Release 1.3.x will feature Version
259           1.3.x of every package, and so forth. But in future,
260           especially when third party packages become available, it is
261           intended that the package be the unit of software
262           distribution, so it will be possible to build a system from
263           a selection of packages with different version numbers, and
264           even differing versioning <SPAN
265 CLASS="emphasis"
266 ><I
267 CLASS="EMPHASIS"
268 >schemes</I
269 ></SPAN
270 >. A
271           Tcl script <B
272 CLASS="COMMAND"
273 >ecosadmin.tcl</B
274 > is
275           provided in the <SPAN
276 CLASS="PRODUCTNAME"
277 >eCos</SPAN
278 > repository to manage the installation
279           and removal of packages in this way.</P
280 ><P
281 >Many users will have their own source code control system,
282 version control system or equivalent, and will want to use it with
283 <SPAN
284 CLASS="PRODUCTNAME"
285 >eCos</SPAN
286 > sources. In that case, since a new release of <SPAN
287 CLASS="PRODUCTNAME"
288 >eCos</SPAN
289 > comes with
290 different pathnames for all the source files, a bit of work is necessary
291 to import a new release into your source repository. </P
292 ><P
293 >One way of handling the import is to rename all the version
294 parts to some common name, for example &#8220;current&#8221;,
295 and continue to work. &#8220;current&#8221; is suggested because <B
296 CLASS="COMMAND"
297 >ecosconfig</B
298 > recognizes
299 it and places it first in any list of versions. In the future, we
300 may provide a tool to help with this, or an option in the install
301 wizard. Alternatively, in a POSIX shell environment (Linux or Cygwin
302 on Windows) use the following command: </P
303 ><TABLE
304 BORDER="5"
305 BGCOLOR="#E0E0F0"
306 WIDTH="70%"
307 ><TR
308 ><TD
309 ><PRE
310 CLASS="SCREEN"
311 >find . -name <TT
312 CLASS="REPLACEABLE"
313 ><I
314 >&#60;version&#62;</I
315 ></TT
316 > -type d -printf 'mv &#0037;p &#0037;h/current\n' | sh</PRE
317 ></TD
318 ></TR
319 ></TABLE
320 ><P
321 >Having carried out such a renaming operation, your
322           source tree will now look like this: </P
323 ><TABLE
324 BORDER="5"
325 BGCOLOR="#E0E0F0"
326 WIDTH="70%"
327 ><TR
328 ><TD
329 ><PRE
330 CLASS="SCREEN"
331 ><TT
332 CLASS="REPLACEABLE"
333 ><I
334 >BASE_DIR</I
335 ></TT
336 >/kernel/current/include/
337 <TT
338 CLASS="REPLACEABLE"
339 ><I
340 >BASE_DIR</I
341 ></TT
342 >/kernel/current/src/
343 <TT
344 CLASS="REPLACEABLE"
345 ><I
346 >BASE_DIR</I
347 ></TT
348 >/kernel/current/tests/
349         ...
350 <TT
351 CLASS="REPLACEABLE"
352 ><I
353 >BASE_DIR</I
354 ></TT
355 >/compat/uitron/current/include/
356 <TT
357 CLASS="REPLACEABLE"
358 ><I
359 >BASE_DIR</I
360 ></TT
361 >/compat/uitron/current/src/
362 <TT
363 CLASS="REPLACEABLE"
364 ><I
365 >BASE_DIR</I
366 ></TT
367 >/compat/uitron/current/tests/
368         </PRE
369 ></TD
370 ></TR
371 ></TABLE
372 ><P
373 >which is a suitable format for import into your own
374           source code control system. When you get a subsequent
375           release of <SPAN
376 CLASS="PRODUCTNAME"
377 >eCos</SPAN
378 >, do the same thing and use your own source
379           code control system to manage the new source base, by
380           importing the new version from </P
381 ><TABLE
382 BORDER="5"
383 BGCOLOR="#E0E0F0"
384 WIDTH="70%"
385 ><TR
386 ><TD
387 ><PRE
388 CLASS="SCREEN"
389 ><TT
390 CLASS="REPLACEABLE"
391 ><I
392 >NEW_BASE_DIR</I
393 ></TT
394 >/kernel/current/include/</PRE
395 ></TD
396 ></TR
397 ></TABLE
398 ><P
399 >and so on. </P
400 ><P
401 >The <SPAN
402 CLASS="PRODUCTNAME"
403 >eCos</SPAN
404 > build tool will now offer only the
405           &#8220;current&#8221; version of each package; select this
406           for the packages you wish to use. </P
407 ><P
408 >Making such a change has implications for any build
409           trees you already have in use. A configured build tree
410           contains information about the selected packages and their
411           selected versions. Changing the name of the
412           &#8220;versioning&#8221; folder in the source tree
413           invalidates this information, and in consequence it also
414           invalidates any local configuration options you have set up
415           in this build tree. So if you want to change the version
416           information in the source tree, do it first, before
417           investing any serious time in configuring and building your
418           system. When you create a new build tree to deal with the
419           new source layout, it will contain default settings for all
420           the configuration options, just like the old build tree did
421           before you configured it. You will need to redo that
422           configuration work in the new tree. </P
423 ><P
424 >Moving source code around also invalidates debugging information
425 in any programs or libraries built from the old tree; these will
426 need to be rebuilt. </P
427 ></DIV
428 ><DIV
429 CLASS="NAVFOOTER"
430 ><HR
431 ALIGN="LEFT"
432 WIDTH="100%"><TABLE
433 SUMMARY="Footer navigation table"
434 WIDTH="100%"
435 BORDER="0"
436 CELLPADDING="0"
437 CELLSPACING="0"
438 ><TR
439 ><TD
440 WIDTH="33%"
441 ALIGN="left"
442 VALIGN="top"
443 ><A
444 HREF="managing-package-repository.html"
445 ACCESSKEY="P"
446 >Prev</A
447 ></TD
448 ><TD
449 WIDTH="34%"
450 ALIGN="center"
451 VALIGN="top"
452 ><A
453 HREF="ecos-user-guide.html"
454 ACCESSKEY="H"
455 >Home</A
456 ></TD
457 ><TD
458 WIDTH="33%"
459 ALIGN="right"
460 VALIGN="top"
461 ><A
462 HREF="appendices.html"
463 ACCESSKEY="N"
464 >Next</A
465 ></TD
466 ></TR
467 ><TR
468 ><TD
469 WIDTH="33%"
470 ALIGN="left"
471 VALIGN="top"
472 >Managing the Package Repository</TD
473 ><TD
474 WIDTH="34%"
475 ALIGN="center"
476 VALIGN="top"
477 ><A
478 HREF="managing-package-repository.html"
479 ACCESSKEY="U"
480 >Up</A
481 ></TD
482 ><TD
483 WIDTH="33%"
484 ALIGN="right"
485 VALIGN="top"
486 >Appendixes</TD
487 ></TR
488 ></TABLE
489 ></DIV
490 ></BODY
491 ></HTML
492 >