<!-- Copyright (C) 2003 Red Hat, Inc. -->
|
<!-- Copyright (C) 2003 Red Hat, Inc. -->
|
<!-- This material may be distributed only subject to the terms -->
|
<!-- This material may be distributed only subject to the terms -->
|
<!-- and conditions set forth in the Open Publication License, v1.0 -->
|
<!-- and conditions set forth in the Open Publication License, v1.0 -->
|
<!-- or later (the latest version is presently available at -->
|
<!-- or later (the latest version is presently available at -->
|
<!-- http://www.opencontent.org/openpub/). -->
|
<!-- http://www.opencontent.org/openpub/). -->
|
<!-- Distribution of the work or derivative of the work in any -->
|
<!-- Distribution of the work or derivative of the work in any -->
|
<!-- standard (paper) book form is prohibited unless prior -->
|
<!-- standard (paper) book form is prohibited unless prior -->
|
<!-- permission is obtained from the copyright holder. -->
|
<!-- permission is obtained from the copyright holder. -->
|
<HTML
|
<HTML
|
><HEAD
|
><HEAD
|
><TITLE
|
><TITLE
|
>Making a Package Distribution</TITLE
|
>Making a Package Distribution</TITLE
|
><meta name="MSSmartTagsPreventParsing" content="TRUE">
|
><meta name="MSSmartTagsPreventParsing" content="TRUE">
|
<META
|
<META
|
NAME="GENERATOR"
|
NAME="GENERATOR"
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
"><LINK
|
"><LINK
|
REL="HOME"
|
REL="HOME"
|
TITLE="The eCos Component Writer's Guide"
|
TITLE="The eCos Component Writer's Guide"
|
HREF="cdl-guide.html"><LINK
|
HREF="cdl-guide.html"><LINK
|
REL="UP"
|
REL="UP"
|
TITLE="Package Organization"
|
TITLE="Package Organization"
|
HREF="package.html"><LINK
|
HREF="package.html"><LINK
|
REL="PREVIOUS"
|
REL="PREVIOUS"
|
TITLE="Package Contents and Layout"
|
TITLE="Package Contents and Layout"
|
HREF="package.contents.html"><LINK
|
HREF="package.contents.html"><LINK
|
REL="NEXT"
|
REL="NEXT"
|
TITLE="The CDL Language"
|
TITLE="The CDL Language"
|
HREF="language.html"></HEAD
|
HREF="language.html"></HEAD
|
><BODY
|
><BODY
|
CLASS="SECT1"
|
CLASS="SECT1"
|
BGCOLOR="#FFFFFF"
|
BGCOLOR="#FFFFFF"
|
TEXT="#000000"
|
TEXT="#000000"
|
LINK="#0000FF"
|
LINK="#0000FF"
|
VLINK="#840084"
|
VLINK="#840084"
|
ALINK="#0000FF"
|
ALINK="#0000FF"
|
><DIV
|
><DIV
|
CLASS="NAVHEADER"
|
CLASS="NAVHEADER"
|
><TABLE
|
><TABLE
|
SUMMARY="Header navigation table"
|
SUMMARY="Header navigation table"
|
WIDTH="100%"
|
WIDTH="100%"
|
BORDER="0"
|
BORDER="0"
|
CELLPADDING="0"
|
CELLPADDING="0"
|
CELLSPACING="0"
|
CELLSPACING="0"
|
><TR
|
><TR
|
><TH
|
><TH
|
COLSPAN="3"
|
COLSPAN="3"
|
ALIGN="center"
|
ALIGN="center"
|
>The <SPAN
|
>The <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> Component Writer's Guide</TH
|
> Component Writer's Guide</TH
|
></TR
|
></TR
|
><TR
|
><TR
|
><TD
|
><TD
|
WIDTH="10%"
|
WIDTH="10%"
|
ALIGN="left"
|
ALIGN="left"
|
VALIGN="bottom"
|
VALIGN="bottom"
|
><A
|
><A
|
HREF="package.contents.html"
|
HREF="package.contents.html"
|
ACCESSKEY="P"
|
ACCESSKEY="P"
|
>Prev</A
|
>Prev</A
|
></TD
|
></TD
|
><TD
|
><TD
|
WIDTH="80%"
|
WIDTH="80%"
|
ALIGN="center"
|
ALIGN="center"
|
VALIGN="bottom"
|
VALIGN="bottom"
|
>Chapter 2. Package Organization</TD
|
>Chapter 2. Package Organization</TD
|
><TD
|
><TD
|
WIDTH="10%"
|
WIDTH="10%"
|
ALIGN="right"
|
ALIGN="right"
|
VALIGN="bottom"
|
VALIGN="bottom"
|
><A
|
><A
|
HREF="language.html"
|
HREF="language.html"
|
ACCESSKEY="N"
|
ACCESSKEY="N"
|
>Next</A
|
>Next</A
|
></TD
|
></TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
><HR
|
><HR
|
ALIGN="LEFT"
|
ALIGN="LEFT"
|
WIDTH="100%"></DIV
|
WIDTH="100%"></DIV
|
><DIV
|
><DIV
|
CLASS="SECT1"
|
CLASS="SECT1"
|
><H1
|
><H1
|
CLASS="SECT1"
|
CLASS="SECT1"
|
><A
|
><A
|
NAME="PACKAGE.DISTRIB">Making a Package Distribution</H1
|
NAME="PACKAGE.DISTRIB">Making a Package Distribution</H1
|
><P
|
><P
|
>Developers of new <SPAN
|
>Developers of new <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> packages are advised to distribute their
|
> packages are advised to distribute their
|
packages in the form of <SPAN
|
packages in the form of <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> package distribution files. Packages
|
> package distribution files. Packages
|
distributed in this format may be added to existing <SPAN
|
distributed in this format may be added to existing <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> component
|
> component
|
repositories in a robust manner using the Package Administration Tool.
|
repositories in a robust manner using the Package Administration Tool.
|
This chapter describes the format of package distribution files and
|
This chapter describes the format of package distribution files and
|
details how to prepare an eCos package for distribution in this format.</P
|
details how to prepare an eCos package for distribution in this format.</P
|
><DIV
|
><DIV
|
CLASS="SECT2"
|
CLASS="SECT2"
|
><H2
|
><H2
|
CLASS="SECT2"
|
CLASS="SECT2"
|
><A
|
><A
|
NAME="PACKAGE.DISTRIB.FORMAT">The <SPAN
|
NAME="PACKAGE.DISTRIB.FORMAT">The <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> package distribution file format</H2
|
> package distribution file format</H2
|
><P
|
><P
|
>eCos package distribution files are gzipped GNU tar archives which
|
>eCos package distribution files are gzipped GNU tar archives which
|
contain both the source code for one or more <SPAN
|
contain both the source code for one or more <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> packages and a
|
> packages and a
|
data file containing package information to be added to the component
|
data file containing package information to be added to the component
|
repository database. The distribution files are subject to the
|
repository database. The distribution files are subject to the
|
following rules:</P
|
following rules:</P
|
><P
|
><P
|
></P
|
></P
|
><OL
|
><OL
|
TYPE="a"
|
TYPE="a"
|
><LI
|
><LI
|
><P
|
><P
|
>The data file must be named <TT
|
>The data file must be named <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>pkgadd.db</TT
|
>pkgadd.db</TT
|
> and must be
|
> and must be
|
located in the root of the tar archive. It must contain data in a
|
located in the root of the tar archive. It must contain data in a
|
format suitable for appending to the eCos repository database
|
format suitable for appending to the eCos repository database
|
(<SPAN
|
(<SPAN
|
CLASS="DATABASE"
|
CLASS="DATABASE"
|
>ecos.db</SPAN
|
>ecos.db</SPAN
|
>). <A
|
>). <A
|
HREF="language.database.html"
|
HREF="language.database.html"
|
>the Section called <I
|
>the Section called <I
|
>Updating the <SPAN
|
>Updating the <SPAN
|
CLASS="DATABASE"
|
CLASS="DATABASE"
|
>ecos.db</SPAN
|
>ecos.db</SPAN
|
> database</I
|
> database</I
|
> in Chapter 3</A
|
> in Chapter 3</A
|
>
|
>
|
describes this data format. Note that a database consistency check is
|
describes this data format. Note that a database consistency check is
|
performed by the <SPAN
|
performed by the <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> Administration Tool when
|
> Administration Tool when
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>pkgadd.db</TT
|
>pkgadd.db</TT
|
> has been appended to the database. Any
|
> has been appended to the database. Any
|
new target entries which refer to unknown packages will be removed at
|
new target entries which refer to unknown packages will be removed at
|
this stage.</P
|
this stage.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>The package source code must be placed in one or more <TT
|
>The package source code must be placed in one or more <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
><package-path>/<version></TT
|
><package-path>/<version></TT
|
>
|
>
|
directories in the tar archive, where each <package-path>
|
directories in the tar archive, where each <package-path>
|
directory path is specified as the directory attribute of one of the
|
directory path is specified as the directory attribute of one of the
|
packages entries in <TT
|
packages entries in <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>pkgadd.db</TT
|
>pkgadd.db</TT
|
>.</P
|
>.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>An optional license agreement file named
|
>An optional license agreement file named
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>pkgadd.txt</TT
|
>pkgadd.txt</TT
|
> may be placed in the root of the tar
|
> may be placed in the root of the tar
|
archive. It should contain text with a maximum line length of 79
|
archive. It should contain text with a maximum line length of 79
|
characters. If this file exists, the contents will be presented to the
|
characters. If this file exists, the contents will be presented to the
|
user during installation of the package. The <SPAN
|
user during installation of the package. The <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> Package
|
> Package
|
Administration Tool will then prompt the user with the question
|
Administration Tool will then prompt the user with the question
|
<TT
|
<TT
|
CLASS="PROMPT"
|
CLASS="PROMPT"
|
>"Do you accept all the terms of the preceding license
|
>"Do you accept all the terms of the preceding license
|
agreement?"</TT
|
agreement?"</TT
|
>. The user must respond
|
>. The user must respond
|
<TT
|
<TT
|
CLASS="USERINPUT"
|
CLASS="USERINPUT"
|
><B
|
><B
|
>"yes"</B
|
>"yes"</B
|
></TT
|
></TT
|
> to this prompt in order to proceed with
|
> to this prompt in order to proceed with
|
the installation.</P
|
the installation.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Optional template files may be placed in one or more <TT
|
>Optional template files may be placed in one or more <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>templates/<template_name></TT
|
>templates/<template_name></TT
|
>
|
>
|
directories in the tar archive. Note that such template files would be
|
directories in the tar archive. Note that such template files would be
|
appropriate only where the packages to be distributed have a complex
|
appropriate only where the packages to be distributed have a complex
|
dependency relationship with other packages. Typically, a third party
|
dependency relationship with other packages. Typically, a third party
|
package can be simply added to an eCos configuration based on an
|
package can be simply added to an eCos configuration based on an
|
existing core template and the provision of new templates would not be
|
existing core template and the provision of new templates would not be
|
appropriate. <A
|
appropriate. <A
|
HREF="advanced.html#ADVANCED.TEMPLATES"
|
HREF="advanced.html#ADVANCED.TEMPLATES"
|
>the Section called <I
|
>the Section called <I
|
>Templates</I
|
>Templates</I
|
> in Chapter 6</A
|
> in Chapter 6</A
|
> contains more
|
> contains more
|
information on templates.</P
|
information on templates.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>The distribution file must be given a <TT
|
>The distribution file must be given a <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>.epk</TT
|
>.epk</TT
|
> (not
|
> (not
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>.tar.gz</TT
|
>.tar.gz</TT
|
>) file extension. The
|
>) file extension. The
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>.epk</TT
|
>.epk</TT
|
> file extension serves to distinguish <SPAN
|
> file extension serves to distinguish <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
>
|
>
|
package distributions files from generic gzipped GNU tar archives. It
|
package distributions files from generic gzipped GNU tar archives. It
|
also discourages users from attempting to extract the package from the
|
also discourages users from attempting to extract the package from the
|
archive manually. The file browsing dialog of the <SPAN
|
archive manually. The file browsing dialog of the <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> Package
|
> Package
|
Administration Tool lists only those files which have a
|
Administration Tool lists only those files which have a
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>.epk</TT
|
>.epk</TT
|
> extension.</P
|
> extension.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>No other files should be present in the archive.</P
|
>No other files should be present in the archive.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Files in the tar archive may use <TT
|
>Files in the tar archive may use <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>LF</TT
|
>LF</TT
|
> or
|
> or
|
<TT
|
<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>CRLF</TT
|
>CRLF</TT
|
> line endings interchangably. The <SPAN
|
> line endings interchangably. The <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
>
|
>
|
Administration Tool ensures that the installed files are given the
|
Administration Tool ensures that the installed files are given the
|
appropriate host-specific line endings.</P
|
appropriate host-specific line endings.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Binary files may be placed in the archive, but the distribution of
|
>Binary files may be placed in the archive, but the distribution of
|
object code is not recommended. All binary files must be given a
|
object code is not recommended. All binary files must be given a
|
<TT
|
<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>.bin</TT
|
>.bin</TT
|
> suffix in addition to any file extension they
|
> suffix in addition to any file extension they
|
may already have. For example, the GIF image file
|
may already have. For example, the GIF image file
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>myfile.gif</TT
|
>myfile.gif</TT
|
> must be named
|
> must be named
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>myfile.gif.bin</TT
|
>myfile.gif.bin</TT
|
> in the archive. The
|
> in the archive. The
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>.bin</TT
|
>.bin</TT
|
> suffix is removed during file extraction and
|
> suffix is removed during file extraction and
|
is used to inhibit the manipulation of line endings by the <SPAN
|
is used to inhibit the manipulation of line endings by the <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
>
|
>
|
Administration Tool.</P
|
Administration Tool.</P
|
></LI
|
></LI
|
></OL
|
></OL
|
></DIV
|
></DIV
|
><DIV
|
><DIV
|
CLASS="SECT2"
|
CLASS="SECT2"
|
><H2
|
><H2
|
CLASS="SECT2"
|
CLASS="SECT2"
|
><A
|
><A
|
NAME="PACKAGE.DISTRIB.PREPARE">Preparing eCos packages for distribution</H2
|
NAME="PACKAGE.DISTRIB.PREPARE">Preparing eCos packages for distribution</H2
|
><P
|
><P
|
>Development of new <SPAN
|
>Development of new <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> packages or new versions of existing <SPAN
|
> packages or new versions of existing <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
>
|
>
|
packages will take place in the context of an existing <SPAN
|
packages will take place in the context of an existing <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
>
|
>
|
component repository. This section details the steps involved in
|
component repository. This section details the steps involved in
|
extracting new packages from a repository and generating a
|
extracting new packages from a repository and generating a
|
corresponding <SPAN
|
corresponding <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> package distribution file for distribution of the
|
> package distribution file for distribution of the
|
packages to other <SPAN
|
packages to other <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> users. The steps required are as follows:</P
|
> users. The steps required are as follows:</P
|
><P
|
><P
|
></P
|
></P
|
><OL
|
><OL
|
TYPE="a"
|
TYPE="a"
|
><LI
|
><LI
|
><P
|
><P
|
>Create a temporary directory <TT
|
>Create a temporary directory <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>$PKGTMP</TT
|
>$PKGTMP</TT
|
> for manipulation of the package
|
> for manipulation of the package
|
distribution file contents and copy the source files of the new
|
distribution file contents and copy the source files of the new
|
packages into this directory, preserving the relative path to the
|
packages into this directory, preserving the relative path to the
|
package. In the case of a new package at <TT
|
package. In the case of a new package at <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>mypkg/current</TT
|
>mypkg/current</TT
|
> in the repository:</P
|
> in the repository:</P
|
><TABLE
|
><TABLE
|
BORDER="5"
|
BORDER="5"
|
BGCOLOR="#E0E0F0"
|
BGCOLOR="#E0E0F0"
|
WIDTH="70%"
|
WIDTH="70%"
|
><TR
|
><TR
|
><TD
|
><TD
|
><PRE
|
><PRE
|
CLASS="SCREEN"
|
CLASS="SCREEN"
|
> $ mkdir -p $PKGTMP/mypkg
|
> $ mkdir -p $PKGTMP/mypkg
|
$ cp -p -R $ECOS_REPOSITORY/mypkg/current $PKGTMP/mypkg</PRE
|
$ cp -p -R $ECOS_REPOSITORY/mypkg/current $PKGTMP/mypkg</PRE
|
></TD
|
></TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
><P
|
><P
|
>Where more than one package is to be distributed in a single package
|
>Where more than one package is to be distributed in a single package
|
distribution file, copy each package in the above manner. Note that
|
distribution file, copy each package in the above manner. Note that
|
multiple packages distributed in a single package distribution file
|
multiple packages distributed in a single package distribution file
|
cannot be installed separately. Where such flexibility is required,
|
cannot be installed separately. Where such flexibility is required,
|
distribution of each new package in separate package distribution files
|
distribution of each new package in separate package distribution files
|
is recommended.</P
|
is recommended.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Copy any template files associated with the distributed packages into
|
>Copy any template files associated with the distributed packages into
|
the temporary directory, preserving the relative path to the template.
|
the temporary directory, preserving the relative path to the template.
|
For example:</P
|
For example:</P
|
><TABLE
|
><TABLE
|
BORDER="5"
|
BORDER="5"
|
BGCOLOR="#E0E0F0"
|
BGCOLOR="#E0E0F0"
|
WIDTH="70%"
|
WIDTH="70%"
|
><TR
|
><TR
|
><TD
|
><TD
|
><PRE
|
><PRE
|
CLASS="SCREEN"
|
CLASS="SCREEN"
|
> $ mkdir -p $PKGTMP/templates
|
> $ mkdir -p $PKGTMP/templates
|
$ cp -p -R $ECOS_REPOSITORY/templates/mytemplate $PKGTMP/templates</PRE
|
$ cp -p -R $ECOS_REPOSITORY/templates/mytemplate $PKGTMP/templates</PRE
|
></TD
|
></TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Remove any files from the temporary directory hierarchy which you do
|
>Remove any files from the temporary directory hierarchy which you do
|
not want to distribute with the packages (eg object files, <TT
|
not want to distribute with the packages (eg object files, <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>CVS</TT
|
>CVS</TT
|
> directories).</P
|
> directories).</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Add a <TT
|
>Add a <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>.bin</TT
|
>.bin</TT
|
> suffix to the name of any binary
|
> suffix to the name of any binary
|
files. For example, if the packages contains GIF image files (*.gif)
|
files. For example, if the packages contains GIF image files (*.gif)
|
for documentation purposes, such files must be renamed to *.gif.bin as
|
for documentation purposes, such files must be renamed to *.gif.bin as
|
follows:</P
|
follows:</P
|
><TABLE
|
><TABLE
|
BORDER="5"
|
BORDER="5"
|
BGCOLOR="#E0E0F0"
|
BGCOLOR="#E0E0F0"
|
WIDTH="70%"
|
WIDTH="70%"
|
><TR
|
><TR
|
><TD
|
><TD
|
><PRE
|
><PRE
|
CLASS="SCREEN"
|
CLASS="SCREEN"
|
> $ find $PKGTMP -type f -name '*.gif' -exec mv {} {}.bin ';'</PRE
|
> $ find $PKGTMP -type f -name '*.gif' -exec mv {} {}.bin ';'</PRE
|
></TD
|
></TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
><P
|
><P
|
>The <TT
|
>The <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>.bin</TT
|
>.bin</TT
|
> suffix is removed during file extraction
|
> suffix is removed during file extraction
|
and is used to inhibit the manipulation of line endings by the eCos
|
and is used to inhibit the manipulation of line endings by the eCos
|
Package Administration Tool.</P
|
Package Administration Tool.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Extract the package records for the new packages from the package
|
>Extract the package records for the new packages from the package
|
database file at <SPAN
|
database file at <SPAN
|
CLASS="DATABASE"
|
CLASS="DATABASE"
|
>$ECOS_REPOSITORY/ecos.db</SPAN
|
>$ECOS_REPOSITORY/ecos.db</SPAN
|
> and
|
> and
|
create a new file containing these records at
|
create a new file containing these records at
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>$PKGTMP/pkgadd.db</TT
|
>$PKGTMP/pkgadd.db</TT
|
> (in the root of the temporary
|
> (in the root of the temporary
|
directory hierarchy). Any target records which reference the
|
directory hierarchy). Any target records which reference the
|
distributed packages must also be provided in pkgadd.db.</P
|
distributed packages must also be provided in pkgadd.db.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Rename the version directories under <TT
|
>Rename the version directories under <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>$PKGTMP</TT
|
>$PKGTMP</TT
|
> (typically <TT
|
> (typically <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>current</TT
|
>current</TT
|
> during development) to reflect
|
> during development) to reflect
|
the versions of the packages you are distributing. For example,
|
the versions of the packages you are distributing. For example,
|
version 1.0 of a package may use the version directory name <TT
|
version 1.0 of a package may use the version directory name <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>v1_0</TT
|
>v1_0</TT
|
>:</P
|
>:</P
|
><TABLE
|
><TABLE
|
BORDER="5"
|
BORDER="5"
|
BGCOLOR="#E0E0F0"
|
BGCOLOR="#E0E0F0"
|
WIDTH="70%"
|
WIDTH="70%"
|
><TR
|
><TR
|
><TD
|
><TD
|
><PRE
|
><PRE
|
CLASS="SCREEN"
|
CLASS="SCREEN"
|
> $ cd $PKGTMP/mypkg
|
> $ cd $PKGTMP/mypkg
|
$ mv current v1_0</PRE
|
$ mv current v1_0</PRE
|
></TD
|
></TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
><P
|
><P
|
><A
|
><A
|
HREF="package.versions.html"
|
HREF="package.versions.html"
|
>the Section called <I
|
>the Section called <I
|
>Package Versioning</I
|
>Package Versioning</I
|
></A
|
></A
|
> describes the version naming
|
> describes the version naming
|
conventions.</P
|
conventions.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Rename any template files under <TT
|
>Rename any template files under <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>$PKGTMP</TT
|
>$PKGTMP</TT
|
> (typically
|
> (typically
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>current.ect</TT
|
>current.ect</TT
|
> during development) to reflect the
|
> during development) to reflect the
|
version of the template you are distributing. For example, version 1.0
|
version of the template you are distributing. For example, version 1.0
|
of a template may use the filename <TT
|
of a template may use the filename <TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>v1_0.ect</TT
|
>v1_0.ect</TT
|
>:</P
|
>:</P
|
><TABLE
|
><TABLE
|
BORDER="5"
|
BORDER="5"
|
BGCOLOR="#E0E0F0"
|
BGCOLOR="#E0E0F0"
|
WIDTH="70%"
|
WIDTH="70%"
|
><TR
|
><TR
|
><TD
|
><TD
|
><PRE
|
><PRE
|
CLASS="SCREEN"
|
CLASS="SCREEN"
|
> $ cd $PKGTMP/templates/mytemplate
|
> $ cd $PKGTMP/templates/mytemplate
|
$ mv current.ect v1_0.ect</PRE
|
$ mv current.ect v1_0.ect</PRE
|
></TD
|
></TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
><P
|
><P
|
>It is also important to edit the contents of the template file, changing
|
>It is also important to edit the contents of the template file, changing
|
the version of each referenced package to match that of the packages you
|
the version of each referenced package to match that of the packages you
|
are distributing. This step will eliminate version warnings during the
|
are distributing. This step will eliminate version warnings during the
|
subsequent loading of the template.</P
|
subsequent loading of the template.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Optionally create a licence agreement file at
|
>Optionally create a licence agreement file at
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>$PKGTMP/pkgadd.txt</TT
|
>$PKGTMP/pkgadd.txt</TT
|
> containing the licensing terms
|
> containing the licensing terms
|
under which you are distributing the new packages. Limit each line in
|
under which you are distributing the new packages. Limit each line in
|
this file to a maximum of 79 characters.</P
|
this file to a maximum of 79 characters.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Create a GNU tar archive of the temporary directory hierarchy. By
|
>Create a GNU tar archive of the temporary directory hierarchy. By
|
convention, this archive would have a name of the form
|
convention, this archive would have a name of the form
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
><package_name>-<version></TT
|
><package_name>-<version></TT
|
>:</P
|
>:</P
|
><TABLE
|
><TABLE
|
BORDER="5"
|
BORDER="5"
|
BGCOLOR="#E0E0F0"
|
BGCOLOR="#E0E0F0"
|
WIDTH="70%"
|
WIDTH="70%"
|
><TR
|
><TR
|
><TD
|
><TD
|
><PRE
|
><PRE
|
CLASS="SCREEN"
|
CLASS="SCREEN"
|
> $ cd $PKGTMP
|
> $ cd $PKGTMP
|
$ tar cf mypkg-1.0.tar *</PRE
|
$ tar cf mypkg-1.0.tar *</PRE
|
></TD
|
></TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
><P
|
><P
|
>Note that non-GNU version of tar may create archive files which exhibit
|
>Note that non-GNU version of tar may create archive files which exhibit
|
subtle incompatibilities with GNU tar. For this reason, always use GNU
|
subtle incompatibilities with GNU tar. For this reason, always use GNU
|
tar to create the archive file.</P
|
tar to create the archive file.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>Compress the archive using gzip and give the resulting file a
|
>Compress the archive using gzip and give the resulting file a
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>.epk</TT
|
>.epk</TT
|
> file extension:</P
|
> file extension:</P
|
><TABLE
|
><TABLE
|
BORDER="5"
|
BORDER="5"
|
BGCOLOR="#E0E0F0"
|
BGCOLOR="#E0E0F0"
|
WIDTH="70%"
|
WIDTH="70%"
|
><TR
|
><TR
|
><TD
|
><TD
|
><PRE
|
><PRE
|
CLASS="SCREEN"
|
CLASS="SCREEN"
|
> $ gzip mypkg-1.0.tar
|
> $ gzip mypkg-1.0.tar
|
$ mv mypkg-1.0.tar.gz mypkg-1.0.epk</PRE
|
$ mv mypkg-1.0.tar.gz mypkg-1.0.epk</PRE
|
></TD
|
></TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
><P
|
><P
|
>The resulting eCos package distribution file (*.epk) is in a compressed
|
>The resulting eCos package distribution file (*.epk) is in a compressed
|
format and may be distributed without further compression.</P
|
format and may be distributed without further compression.</P
|
></LI
|
></LI
|
></OL
|
></OL
|
></DIV
|
></DIV
|
></DIV
|
></DIV
|
><DIV
|
><DIV
|
CLASS="NAVFOOTER"
|
CLASS="NAVFOOTER"
|
><HR
|
><HR
|
ALIGN="LEFT"
|
ALIGN="LEFT"
|
WIDTH="100%"><TABLE
|
WIDTH="100%"><TABLE
|
SUMMARY="Footer navigation table"
|
SUMMARY="Footer navigation table"
|
WIDTH="100%"
|
WIDTH="100%"
|
BORDER="0"
|
BORDER="0"
|
CELLPADDING="0"
|
CELLPADDING="0"
|
CELLSPACING="0"
|
CELLSPACING="0"
|
><TR
|
><TR
|
><TD
|
><TD
|
WIDTH="33%"
|
WIDTH="33%"
|
ALIGN="left"
|
ALIGN="left"
|
VALIGN="top"
|
VALIGN="top"
|
><A
|
><A
|
HREF="package.contents.html"
|
HREF="package.contents.html"
|
ACCESSKEY="P"
|
ACCESSKEY="P"
|
>Prev</A
|
>Prev</A
|
></TD
|
></TD
|
><TD
|
><TD
|
WIDTH="34%"
|
WIDTH="34%"
|
ALIGN="center"
|
ALIGN="center"
|
VALIGN="top"
|
VALIGN="top"
|
><A
|
><A
|
HREF="cdl-guide.html"
|
HREF="cdl-guide.html"
|
ACCESSKEY="H"
|
ACCESSKEY="H"
|
>Home</A
|
>Home</A
|
></TD
|
></TD
|
><TD
|
><TD
|
WIDTH="33%"
|
WIDTH="33%"
|
ALIGN="right"
|
ALIGN="right"
|
VALIGN="top"
|
VALIGN="top"
|
><A
|
><A
|
HREF="language.html"
|
HREF="language.html"
|
ACCESSKEY="N"
|
ACCESSKEY="N"
|
>Next</A
|
>Next</A
|
></TD
|
></TD
|
></TR
|
></TR
|
><TR
|
><TR
|
><TD
|
><TD
|
WIDTH="33%"
|
WIDTH="33%"
|
ALIGN="left"
|
ALIGN="left"
|
VALIGN="top"
|
VALIGN="top"
|
>Package Contents and Layout</TD
|
>Package Contents and Layout</TD
|
><TD
|
><TD
|
WIDTH="34%"
|
WIDTH="34%"
|
ALIGN="center"
|
ALIGN="center"
|
VALIGN="top"
|
VALIGN="top"
|
><A
|
><A
|
HREF="package.html"
|
HREF="package.html"
|
ACCESSKEY="U"
|
ACCESSKEY="U"
|
>Up</A
|
>Up</A
|
></TD
|
></TD
|
><TD
|
><TD
|
WIDTH="33%"
|
WIDTH="33%"
|
ALIGN="right"
|
ALIGN="right"
|
VALIGN="top"
|
VALIGN="top"
|
>The CDL Language</TD
|
>The CDL Language</TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
></DIV
|
></DIV
|
></BODY
|
></BODY
|
></HTML
|
></HTML
|
|
|