URL
https://opencores.org/ocsvn/or1k_old/or1k_old/trunk
Subversion Repositories or1k_old
[/] [or1k_old/] [trunk/] [ecos-2.0/] [doc/] [html/] [cdl-guide/] [package.html] - Rev 1782
Compare with Previous | Blame | View Log
<!-- 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 Organization</TITLE ><meta name="MSSmartTagsPreventParsing" content="TRUE"> <META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ "><LINK REL="HOME" TITLE="The eCos Component Writer's Guide" HREF="cdl-guide.html"><LINK REL="PREVIOUS" TITLE="Warnings" HREF="overview.warning.html"><LINK REL="NEXT" TITLE="Package Versioning" HREF="package.versions.html"></HEAD ><BODY CLASS="CHAPTER" 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" >The <SPAN CLASS="APPLICATION" >eCos</SPAN > Component Writer's Guide</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="overview.warning.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="package.versions.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="CHAPTER" ><H1 ><A NAME="PACKAGE">Chapter 2. Package Organization</H1 ><DIV CLASS="TOC" ><DL ><DT ><B >Table of Contents</B ></DT ><DT ><A HREF="package.html#PACKAGE.HIERARCHY" >Packages and the Component Repository</A ></DT ><DT ><A HREF="package.versions.html" >Package Versioning</A ></DT ><DT ><A HREF="package.contents.html" >Package Contents and Layout</A ></DT ><DT ><A HREF="package.distrib.html" >Making a Package Distribution</A ></DT ></DL ></DIV ><P >For a package to be usable in the <SPAN CLASS="APPLICATION" >eCos</SPAN > component framework it must conform to certain rules imposed by that framework. Packages must be distributed in a form that is understood by the component repository administration tool. There must be a top-level <SPAN CLASS="APPLICATION" >CDL</SPAN > script which describes the package to the component framework. There are certain limitations related to how a package gets built, so that the package can still be used in a variety of host environments. In addition to these rules, the component framework provides a number of guidelines. Packages do not have to conform to the guidelines, but sticking to them can simplify certain operations.</P ><P >This chapter deals with the general organization of a package, for example how to distinguish between private and exported header files. <A HREF="language.html" >Chapter 3</A > describes the <SPAN CLASS="APPLICATION" >CDL</SPAN > language. <A HREF="build.html" >Chapter 4</A > details the build process.</P ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="PACKAGE.HIERARCHY">Packages and the Component Repository</H1 ><P >All <SPAN CLASS="APPLICATION" >eCos</SPAN > installations include a component repository. This is a directory structure for all installed packages. The component framework comes with an administration tool that allows new packages or new versions of a package to be installed, old packages to be removed, and so on. The component repository includes a simple database, maintained by the administration tool, which contains details of the various packages.</P ><DIV CLASS="INFORMALFIGURE" ><A NAME="AEN187"><P ></P ><DIV CLASS="MEDIAOBJECT" ><P ><IMG SRC="repo.png" ALIGN="CENTER"></P ></DIV ><P ></P ></DIV ><P >Each package has its own little directory hierarchy within the component repository. Keeping several packages in a single directory is illegal. The error, infra and kernel packages all live at the top-level of the repository. For other types of packages there are some pre-defined directories: <TT CLASS="FILENAME" >compat</TT > is used for compatibility packages, which implement other interfaces such as µITRON or POSIX using native <SPAN CLASS="APPLICATION" >eCos</SPAN > calls; <TT CLASS="FILENAME" >hal</TT > is used for packages that port <SPAN CLASS="APPLICATION" >eCos</SPAN > to different architectures or platforms, and this directory is further organized on a per-architecture basis; <TT CLASS="FILENAME" >io</TT > is intended for device drivers; <TT CLASS="FILENAME" >language</TT > is used for language support libraries, for example the C library. There are no strict rules defining where new packages should get installed. Obviously if an existing top-level directory such as <TT CLASS="FILENAME" >compat</TT > is applicable then the new package should go in there. If a new category is desirable then it is possible to create a new sub-directory in the component repository. For example, an organization planning to release a number of <SPAN CLASS="APPLICATION" >eCos</SPAN > packages may want them all to appear below a sub-directory corresponding to the organization's name — in the hope that the name will not change too often. It is possible to add new packages directly to the top-level of the component repository, but this should be avoided.</P ><P >The <SPAN CLASS="DATABASE" >ecos.db</SPAN > file holds the component repository database and is managed by the administration tool. The various configuration tools read in this file when they start-up to obtain information about the various packages that have been installed. When developing a new package it is necessary to add some information to the file, as described in <A HREF="language.database.html" >the Section called <I >Updating the <SPAN CLASS="DATABASE" >ecos.db</SPAN > database</I > in Chapter 3</A >. The <TT CLASS="FILENAME" >templates</TT > directory holds various configuration templates.</P ><DIV CLASS="NOTE" ><BLOCKQUOTE CLASS="NOTE" ><P ><B >Note: </B >Earlier releases of <SPAN CLASS="APPLICATION" >eCos</SPAN > came with two separate files, <TT CLASS="FILENAME" >targets</TT > and <TT CLASS="FILENAME" >packages</TT >. The <SPAN CLASS="DATABASE" >ecos.db</SPAN > database replaces both of these.</P ></BLOCKQUOTE ></DIV ><DIV CLASS="CAUTION" ><P ></P ><TABLE CLASS="CAUTION" BORDER="1" WIDTH="100%" ><TR ><TD ALIGN="CENTER" ><B >Caution</B ></TD ></TR ><TR ><TD ALIGN="LEFT" ><P >The current <SPAN CLASS="DATABASE" >ecos.db</SPAN > database does not yet provide all of the information needed by the component framework. Its format is subject to change in future releases, and the file may be replaced completely if necessary. There are a number of other likely future developments related to the component repository and the database. The way targets are described is subject to change. Sometimes it is desirable for component writers to do their initial development in a directory outside the component repository, but there is no specific support in the framework for that yet.</P ></TD ></TR ></TABLE ></DIV ></DIV ></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="overview.warning.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="cdl-guide.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="package.versions.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Warnings</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Package Versioning</TD ></TR ></TABLE ></DIV ></BODY ></HTML >