📄 package-structure.html
字号:
<!-- Copyright (C) 2003 Red Hat, Inc. -->
<!-- This material may be distributed only subject to the terms -->
<!-- and conditions set forth in the Open Publication License, v1.0 -->
<!-- or later (the latest version is presently available at -->
<!-- http://www.opencontent.org/openpub/). -->
<!-- Distribution of the work or derivative of the work in any -->
<!-- standard (paper) book form is prohibited unless prior -->
<!-- permission is obtained from the copyright holder. -->
<HTML
><HEAD
><TITLE
>Package Structure</TITLE
><meta name="MSSmartTagsPreventParsing" content="TRUE">
<META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="eCos User Guide"
HREF="ecos-user-guide.html"><LINK
REL="UP"
TITLE="Managing the Package Repository"
HREF="managing-package-repository.html"><LINK
REL="PREVIOUS"
TITLE="Managing the Package Repository"
HREF="managing-package-repository.html"><LINK
REL="NEXT"
TITLE="Appendixes"
HREF="appendices.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>eCos User Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="managing-package-repository.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 29. Managing the Package Repository</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="appendices.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="PACKAGE-STRUCTURE">Package Structure</H1
><P
>The files in an installed <SPAN
CLASS="PRODUCTNAME"
>eCos</SPAN
> source tree are organized in
a natural tree structure, grouping together files which work together
into <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Packages</I
></SPAN
>. For example, the kernel files
are all together in: </P
><P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="FILENAME"
><TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/kernel/<TT
CLASS="REPLACEABLE"
><I
><version></I
></TT
>/include/</TT
></TD
></TR
><TR
><TD
> <TT
CLASS="FILENAME"
><TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/kernel/<TT
CLASS="REPLACEABLE"
><I
><version></I
></TT
>/src/</TT
></TD
></TR
><TR
><TD
> <TT
CLASS="FILENAME"
><TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/kernel/<TT
CLASS="REPLACEABLE"
><I
><version></I
></TT
>/tests/</TT
></TD
></TR
></TBODY
></TABLE
><P
></P
><P
>and µITRON compatibility layer files are in:
</P
><P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
> <TT
CLASS="FILENAME"
><TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/compat/uitron/<TT
CLASS="REPLACEABLE"
><I
><version></I
></TT
>/include/</TT
></TD
></TR
><TR
><TD
> <TT
CLASS="FILENAME"
><TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/compat/uitron/<TT
CLASS="REPLACEABLE"
><I
><version></I
></TT
>/src/</TT
></TD
></TR
><TR
><TD
> <TT
CLASS="FILENAME"
><TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/compat/uitron/<TT
CLASS="REPLACEABLE"
><I
><version></I
></TT
>/tests/</TT
></TD
></TR
></TBODY
></TABLE
><P
></P
><P
>The feature of these names which is of interest here is
the <TT
CLASS="REPLACEABLE"
><I
><version></I
></TT
> near the end. It may seem odd to place a version number deep in the
path, rather than having something like
<TT
CLASS="FILENAME"
><TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/<TT
CLASS="REPLACEABLE"
><I
><version></I
></TT
>/...everything...</TT
>
or leaving it up to you to choose a different
install-place when a new release of the system arrives.
</P
><P
>There is a rationale for this organization: as
indicated, the kernel and the
µITRON compatibility subsystem
are examples of software packages. For the first few
releases of <SPAN
CLASS="PRODUCTNAME"
>eCos</SPAN
>, all the packages will move along
in step, i.e. Release 1.3.x will feature Version
1.3.x of every package, and so forth. But in future,
especially when third party packages become available, it is
intended that the package be the unit of software
distribution, so it will be possible to build a system from
a selection of packages with different version numbers, and
even differing versioning <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>schemes</I
></SPAN
>. A
Tcl script <B
CLASS="COMMAND"
>ecosadmin.tcl</B
> is
provided in the <SPAN
CLASS="PRODUCTNAME"
>eCos</SPAN
> repository to manage the installation
and removal of packages in this way.</P
><P
>Many users will have their own source code control system,
version control system or equivalent, and will want to use it with
<SPAN
CLASS="PRODUCTNAME"
>eCos</SPAN
> sources. In that case, since a new release of <SPAN
CLASS="PRODUCTNAME"
>eCos</SPAN
> comes with
different pathnames for all the source files, a bit of work is necessary
to import a new release into your source repository. </P
><P
>One way of handling the import is to rename all the version
parts to some common name, for example “current”,
and continue to work. “current” is suggested because <B
CLASS="COMMAND"
>ecosconfig</B
> recognizes
it and places it first in any list of versions. In the future, we
may provide a tool to help with this, or an option in the install
wizard. Alternatively, in a POSIX shell environment (Linux or Cygwin
on Windows) use the following command: </P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="SCREEN"
>find . -name <TT
CLASS="REPLACEABLE"
><I
><version></I
></TT
> -type d -printf 'mv %p %h/current\n' | sh</PRE
></TD
></TR
></TABLE
><P
>Having carried out such a renaming operation, your
source tree will now look like this: </P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="SCREEN"
><TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/kernel/current/include/
<TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/kernel/current/src/
<TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/kernel/current/tests/
...
<TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/compat/uitron/current/include/
<TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/compat/uitron/current/src/
<TT
CLASS="REPLACEABLE"
><I
>BASE_DIR</I
></TT
>/compat/uitron/current/tests/
</PRE
></TD
></TR
></TABLE
><P
>which is a suitable format for import into your own
source code control system. When you get a subsequent
release of <SPAN
CLASS="PRODUCTNAME"
>eCos</SPAN
>, do the same thing and use your own source
code control system to manage the new source base, by
importing the new version from </P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="SCREEN"
><TT
CLASS="REPLACEABLE"
><I
>NEW_BASE_DIR</I
></TT
>/kernel/current/include/</PRE
></TD
></TR
></TABLE
><P
>and so on. </P
><P
>The <SPAN
CLASS="PRODUCTNAME"
>eCos</SPAN
> build tool will now offer only the
“current” version of each package; select this
for the packages you wish to use. </P
><P
>Making such a change has implications for any build
trees you already have in use. A configured build tree
contains information about the selected packages and their
selected versions. Changing the name of the
“versioning” folder in the source tree
invalidates this information, and in consequence it also
invalidates any local configuration options you have set up
in this build tree. So if you want to change the version
information in the source tree, do it first, before
investing any serious time in configuring and building your
system. When you create a new build tree to deal with the
new source layout, it will contain default settings for all
the configuration options, just like the old build tree did
before you configured it. You will need to redo that
configuration work in the new tree. </P
><P
>Moving source code around also invalidates debugging information
in any programs or libraries built from the old tree; these will
need to be rebuilt. </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="managing-package-repository.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="ecos-user-guide.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="appendices.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Managing the Package Repository</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="managing-package-repository.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Appendixes</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -