Document SVR4_PKGNAME; improve pkgdiff description; document
PATCHDIR, default setting of MESSAGE_SUBST, and FILESDIR. Reindent.
This commit is contained in:
parent
713660e7c4
commit
d9e85ef31d
1 changed files with 373 additions and 322 deletions
|
@ -1,260 +1,290 @@
|
|||
<!-- $NetBSD: components.xml,v 1.28 2006/09/03 00:20:49 wiz Exp $ -->
|
||||
<!-- $NetBSD: components.xml,v 1.29 2006/09/10 19:11:15 wiz Exp $ -->
|
||||
|
||||
<chapter id="components"> <?dbhtml filename="components.html"?>
|
||||
<title>Package components - files, directories and contents</title>
|
||||
<title>Package components - files, directories and contents</title>
|
||||
|
||||
<para> Whenever you're preparing a package, there are a number of
|
||||
files involved which are described in the following
|
||||
sections. </para>
|
||||
<para>Whenever you're preparing a package, there are a number of
|
||||
files involved which are described in the following
|
||||
sections.</para>
|
||||
|
||||
<sect1 id="components.Makefile">
|
||||
<title><filename>Makefile</filename></title>
|
||||
<sect1 id="components.Makefile">
|
||||
<title><filename>Makefile</filename></title>
|
||||
|
||||
<para>Building, installation and creation of a binary package are all
|
||||
controlled by the package's <filename>Makefile</filename>.
|
||||
The <filename>Makefile</filename> describes various things about
|
||||
a package, for example from where to get it, how to configure,
|
||||
build, and install it.
|
||||
</para>
|
||||
<para>Building, installation and creation of a binary package are all
|
||||
controlled by the package's <filename>Makefile</filename>.
|
||||
The <filename>Makefile</filename> describes various things about
|
||||
a package, for example from where to get it, how to configure,
|
||||
build, and install it.</para>
|
||||
|
||||
<para>A package <filename>Makefile</filename> contains several
|
||||
sections that describe the package.</para>
|
||||
<para>A package <filename>Makefile</filename> contains several
|
||||
sections that describe the package.</para>
|
||||
|
||||
<para>In the first section there are the following variables, which
|
||||
should appear exactly in the order given here. The ordering and
|
||||
grouping of variables is mostly historical and has no further
|
||||
meaning.</para>
|
||||
<para>In the first section there are the following variables, which
|
||||
should appear exactly in the order given here. The order and
|
||||
grouping of the variables is mostly historical and has no further
|
||||
meaning.</para>
|
||||
<itemizedlist>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para><varname>DISTNAME</varname> is the basename of the
|
||||
distribution file to be downloaded from the package's
|
||||
website.</para></listitem>
|
||||
|
||||
<listitem><para><varname>DISTNAME</varname> is the basename of the
|
||||
distribution file to be downloaded from the package's
|
||||
website.</para></listitem>
|
||||
<listitem><para><varname>PKGNAME</varname> is the name of the
|
||||
package, as used by pkgsrc. You only need to provide it if
|
||||
<varname>DISTNAME</varname> (which is the default) is not a good
|
||||
name for the package in pkgsrc. Usually it is the pkgsrc
|
||||
directory name together with the version number. It must match the
|
||||
regular expression
|
||||
<varname>^[A-Za-z0-9][A-Za-z0-9-_.+]*$</varname>, that is, it
|
||||
starts with a letter or digit, and contains only letters, digits,
|
||||
dashes, underscores, dots and plus signs.</para></listitem>
|
||||
|
||||
<listitem><para><varname>PKGNAME</varname> is the name of the
|
||||
package, as used by pkgsrc. You only need to provide it if it
|
||||
differs from <varname>DISTNAME</varname>. Usually it is the directory name together
|
||||
with the version number. It must match the regular expression
|
||||
<varname>^[A-Za-z0-9][A-Za-z0-9-_.+]*$</varname>, that is, it
|
||||
starts with a letter or digit, and contains only letters, digits,
|
||||
dashes, underscores, dots and plus signs.</para></listitem>
|
||||
<listitem><para><varname>SVR4_PKGNAME</varname> is the name of
|
||||
the package file to create if the <varname>PKGNAME</varname>
|
||||
isn't unique on a SVR4 system. The default is
|
||||
<varname>PKGNAME</varname>, which may be shortened when you use
|
||||
<filename role="pkg">pkgtools/gensolpkg</filename>. Only add
|
||||
<varname>SVR4_PKGNAME</varname> if <varname>PKGNAME</varname>
|
||||
does not produce an unique package name on a SVR4 system.
|
||||
The length of <varname>SVR4_PKGNAME</varname> is limited to 5
|
||||
characters.</para></listitem>
|
||||
|
||||
<listitem><para><varname>CATEGORIES</varname> is a list of categories
|
||||
which the package fits in. You can choose any of the top-level
|
||||
directories of pkgsrc for it.</para>
|
||||
<listitem><para><varname>CATEGORIES</varname> is a list of categories
|
||||
which the package fits in. You can choose any of the top-level
|
||||
directories of pkgsrc for it.</para>
|
||||
|
||||
<para>Currently the following values are available for
|
||||
<varname>CATEGORIES</varname>. If more than
|
||||
one is used, they need to be separated by spaces:</para>
|
||||
<para>Currently the following values are available for
|
||||
<varname>CATEGORIES</varname>. If more than
|
||||
one is used, they need to be separated by spaces:</para>
|
||||
|
||||
<programlisting>
|
||||
archivers cross geography meta-pkgs security
|
||||
audio databases graphics misc shells
|
||||
benchmarks devel ham multimedia sysutils
|
||||
biology editors inputmethod net textproc
|
||||
cad emulators lang news time
|
||||
chat finance mail parallel wm
|
||||
comms fonts math pkgtools www
|
||||
converters games mbone print x11
|
||||
</programlisting>
|
||||
</listitem>
|
||||
<programlisting>
|
||||
archivers cross geography meta-pkgs security
|
||||
audio databases graphics misc shells
|
||||
benchmarks devel ham multimedia sysutils
|
||||
biology editors inputmethod net textproc
|
||||
cad emulators lang news time
|
||||
chat finance mail parallel wm
|
||||
comms fonts math pkgtools www
|
||||
converters games mbone print x11
|
||||
</programlisting>
|
||||
</listitem>
|
||||
|
||||
<listitem><para><varname>MASTER_SITES</varname>,
|
||||
<varname>DYNAMIC_MASTER_SITES</varname>,
|
||||
<varname>DIST_SUBDIR</varname>, <varname>EXTRACT_SUFX</varname>
|
||||
and <varname>DISTFILES</varname> are discussed in detail in
|
||||
<xref linkend="build.fetch"/>.</para></listitem>
|
||||
<listitem><para><varname>MASTER_SITES</varname>,
|
||||
<varname>DYNAMIC_MASTER_SITES</varname>,
|
||||
<varname>DIST_SUBDIR</varname>, <varname>EXTRACT_SUFX</varname>
|
||||
and <varname>DISTFILES</varname> are discussed in detail in
|
||||
<xref linkend="build.fetch"/>.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</itemizedlist>
|
||||
|
||||
<para>The second section contains information about separately
|
||||
downloaded patches, if any.
|
||||
<itemizedlist>
|
||||
<listitem><para><varname>PATCHFILES:</varname>
|
||||
Name(s) of additional files that contain distribution patches.
|
||||
There is no default. pkgsrc will look for them at
|
||||
<varname>PATCH_SITES</varname>.
|
||||
They will automatically be uncompressed before patching if
|
||||
the names end with <filename>.gz</filename> or
|
||||
<filename>.Z</filename>.</para>
|
||||
</listitem>
|
||||
<listitem><para><varname>PATCH_SITES</varname>:
|
||||
Primary location(s) for distribution patch files (see
|
||||
<varname>PATCHFILES</varname> below) if not found locally.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>The third section contains the following variables.
|
||||
<itemizedlist>
|
||||
<para>The second section contains information about separately
|
||||
downloaded patches, if any.
|
||||
<itemizedlist>
|
||||
<listitem><para><varname>PATCHFILES:</varname>
|
||||
Name(s) of additional files that contain distribution patches.
|
||||
There is no default. pkgsrc will look for them at
|
||||
<varname>PATCH_SITES</varname>.
|
||||
They will automatically be uncompressed before patching if
|
||||
the names end with <filename>.gz</filename> or
|
||||
<filename>.Z</filename>.</para>
|
||||
</listitem>
|
||||
<listitem><para><varname>PATCH_SITES</varname>:
|
||||
Primary location(s) for distribution patch files (see
|
||||
<varname>PATCHFILES</varname> below) if not found locally.</para>
|
||||
</listitem>
|
||||
</itemizedlist></para>
|
||||
<para>The third section contains the following variables.
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para><varname>MAINTAINER</varname> is the email address
|
||||
of the person who feels responsible for this package, and who is
|
||||
most likely to look at problems or questions regarding this
|
||||
package which have been reported with &man.send-pr.1;. Other
|
||||
developers should contact the <varname>MAINTAINER</varname> before
|
||||
making major changes to the package. When packaging a new program,
|
||||
set <varname>MAINTAINER</varname> to yourself. If you really can't
|
||||
maintain the package for future updates, set it to
|
||||
<email>pkgsrc-users@NetBSD.org</email>.</para></listitem>
|
||||
<listitem><para><varname>MAINTAINER</varname> is the email address
|
||||
of the person who feels responsible for this package, and who is
|
||||
most likely to look at problems or questions regarding this
|
||||
package which have been reported with &man.send-pr.1;. Other
|
||||
developers should contact the <varname>MAINTAINER</varname> before
|
||||
making major changes to the package. When packaging a new program,
|
||||
set <varname>MAINTAINER</varname> to yourself. If you really can't
|
||||
maintain the package for future updates, set it to
|
||||
<email>pkgsrc-users@NetBSD.org</email>.</para></listitem>
|
||||
|
||||
<listitem><para><varname>HOMEPAGE</varname> is a URL where users can
|
||||
find more information about the package.</para></listitem>
|
||||
<listitem><para><varname>HOMEPAGE</varname> is a URL where users can
|
||||
find more information about the package.</para></listitem>
|
||||
|
||||
<listitem><para><varname>COMMENT</varname> is a one-line
|
||||
description of the package (should not include the package
|
||||
name).</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<listitem><para><varname>COMMENT</varname> is a one-line
|
||||
description of the package (should not include the package
|
||||
name).</para></listitem>
|
||||
</itemizedlist></para>
|
||||
|
||||
<para>Other variables that affect the build:
|
||||
<itemizedlist>
|
||||
<para>Other variables that affect the build:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<listitem>
|
||||
<para><varname>WRKSRC</varname>: The directory where the
|
||||
interesting distribution files of the package are found. The
|
||||
default is <filename>${WRKDIR}/${DISTNAME}</filename>, which
|
||||
works for most packages.</para>
|
||||
|
||||
<para><varname>WRKSRC</varname>: The directory where the
|
||||
interesting distribution files of the package are found. The
|
||||
default is <filename>${WRKDIR}/${DISTNAME}</filename>, which
|
||||
works for most packages.</para>
|
||||
<para>If a package doesn't create a subdirectory for itself
|
||||
(most GNU software does, for instance), but extracts itself in
|
||||
the current directory, you should set
|
||||
<varname>WRKSRC=${WRKDIR}</varname>.</para>
|
||||
|
||||
<para>If a package doesn't create a subdirectory for itself
|
||||
(most GNU software does, for instance), but extracts itself in
|
||||
the current directory, you should set <varname>WRKSRC=
|
||||
${WRKDIR}</varname>.</para>
|
||||
<para>If a package doesn't create a subdirectory with the
|
||||
name of <varname>DISTNAME</varname> but some different name,
|
||||
set <varname>WRKSRC</varname> to point to the proper name in
|
||||
<filename>${WRKDIR}</filename>, for example
|
||||
<varname>WRKSRC=${WRKDIR}/${DISTNAME}/unix</varname>. See
|
||||
<filename role="pkg">lang/tcl</filename> and <filename
|
||||
role="pkg">x11/tk</filename> for other examples.</para>
|
||||
|
||||
<para>If a package doesn't create a subdirectory with the name
|
||||
of <varname>DISTNAME</varname> but some different name, set
|
||||
<varname>WRKSRC</varname> to point to the proper name in
|
||||
<filename>${WRKDIR}</filename>, for example <varname>WRKSRC=
|
||||
${WRKDIR}/${DISTNAME}/unix</varname>. See <filename
|
||||
role="pkg">lang/tcl</filename> and <filename
|
||||
role="pkg">x11/tk</filename> for other examples.</para>
|
||||
<para>The name of the working directory created by pkgsrc is
|
||||
taken from the <varname>WRKDIR_BASENAME</varname>
|
||||
variable. By default, its value is
|
||||
<filename>work</filename>. If you want to use the same
|
||||
pkgsrc tree for building different kinds of binary packages,
|
||||
you can change the variable according to your needs. Two
|
||||
other variables handle common cases of setting
|
||||
<varname>WRKDIR_BASENAME</varname> individually. If
|
||||
<varname>OBJHOSTNAME</varname> is defined in
|
||||
<filename>/etc/mk.conf</filename>, the first component of
|
||||
the host's name is attached to the directory name. If
|
||||
<varname>OBJMACHINE</varname> is defined, the platform name
|
||||
is attached, which might look like
|
||||
<filename>work.i386</filename> or
|
||||
<filename>work.sparc</filename>.</para>
|
||||
|
||||
<para>The name of the working directory created by pkgsrc is
|
||||
taken from the <varname>WRKDIR_BASENAME</varname> variable. By
|
||||
default, its value is <filename>work</filename>. If you want
|
||||
to use the same pkgsrc tree for building different kinds of
|
||||
binary packages, you can change the variable according to your
|
||||
needs. Two other variables handle common cases of setting
|
||||
<varname>WRKDIR_BASENAME</varname> individually. If
|
||||
<varname>OBJHOSTNAME</varname> is defined in
|
||||
<filename>/etc/mk.conf</filename>, the first component of the
|
||||
host's name is attached to the directory name. If
|
||||
<varname>OBJMACHINE</varname> is defined, the platform name is
|
||||
attached, which might look like <filename>work.i386</filename>
|
||||
or <filename>work.sparc</filename>.</para>
|
||||
</listitem>
|
||||
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>Please pay attention to the following gotchas:</para>
|
||||
</itemizedlist></para>
|
||||
|
||||
<para>Please pay attention to the following gotchas:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Add <varname>MANCOMPRESSED</varname> if man pages are
|
||||
installed in compressed form by the package; see comment in
|
||||
<filename>bsd.pkg.mk</filename>.</para>
|
||||
</listitem>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Add <varname>MANCOMPRESSED</varname> if man pages are installed in
|
||||
compressed form by the package; see comment in
|
||||
<filename>bsd.pkg.mk</filename>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Replace <filename>/usr/local</filename> with
|
||||
<quote>${PREFIX}</quote> in all files (see patches, below).</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Replace <filename>/usr/local</filename> with
|
||||
<quote>${PREFIX}</quote> in all files (see patches, below).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>If the package installs any info files, see
|
||||
<xref linkend="faq.info-files"/>.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>If the package installs any info files, see
|
||||
<xref linkend="faq.info-files"/>.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
<sect1 id="components.distinfo">
|
||||
<title><filename>distinfo</filename></title>
|
||||
|
||||
<sect1 id="components.distinfo">
|
||||
<title><filename>distinfo</filename></title>
|
||||
<para>The <filename>distinfo</filename> file contains the message
|
||||
digest, or checksum, of each distfile needed for the package. This
|
||||
ensures that the distfiles retrieved from the Internet have not been
|
||||
corrupted during transfer or altered by a malign force to introduce
|
||||
a security hole. Due to recent rumor about weaknesses of digest
|
||||
algorithms, all distfiles are protected using both SHA1 and RMD160
|
||||
message digests, as well as the file size.</para>
|
||||
|
||||
<para>The <filename>distinfo</filename> file contains the message
|
||||
digest, or checksum, of each distfile needed for the package. This
|
||||
ensures that the distfiles retrieved from the Internet have not been
|
||||
corrupted during transfer or altered by a malign force to introduce
|
||||
a security hole. Due to recent rumor about weaknesses of digest
|
||||
algorithms, all distfiles are protected using both SHA1 and RMD160
|
||||
message digests, as well as the file size.</para>
|
||||
<para>The <filename>distinfo</filename> file also contains the
|
||||
checksums for all the patches found in the
|
||||
<filename>patches</filename> directory (see <xref
|
||||
linkend="components.patches"/>).</para>
|
||||
|
||||
<para>The <filename>distinfo</filename> file also contains the
|
||||
checksums for all the patches found in the
|
||||
<filename>patches</filename> directory (see <xref
|
||||
linkend="components.patches"/>).</para>
|
||||
<para>To regenerate the <filename>distinfo</filename> file, use the
|
||||
<command>make makedistinfo</command> or <command>make mdi</command>
|
||||
command.</para>
|
||||
|
||||
<para>To regenerate the <filename>distinfo</filename> file, use the
|
||||
<command>make makedistinfo</command> or <command>make mdi</command>
|
||||
command.</para>
|
||||
<para>Some packages have different sets of distfiles depending on
|
||||
the platform, for example <filename
|
||||
role="pkg">www/navigator</filename>). These are kept in the same
|
||||
<filename>distinfo</filename> file and care should be taken when
|
||||
upgrading such a package to ensure distfile information is not
|
||||
lost.</para>
|
||||
|
||||
<para>Some packages have different sets of distfiles depending on
|
||||
the platform, for example <filename
|
||||
role="pkg">www/navigator</filename>). These are kept in the same
|
||||
<filename>distinfo</filename> file and care should be taken when
|
||||
upgrading such a package to ensure distfile information is not
|
||||
lost.</para>
|
||||
</sect1>
|
||||
|
||||
</sect1>
|
||||
<sect1 id="components.patches">
|
||||
<title>patches/*</title>
|
||||
|
||||
<sect1 id="components.patches">
|
||||
<title>patches/*</title>
|
||||
<para>This directory contains files that are used by the
|
||||
&man.patch.1; command to
|
||||
modify the sources as distributed in the distribution file into a form
|
||||
that will compile and run perfectly on &os;. The files are applied
|
||||
successively in alphabetic order (as returned by a shell
|
||||
<quote>patches/patch-*</quote> glob expansion), so
|
||||
<filename>patch-aa</filename> is applied before
|
||||
<filename>patch-ab</filename>, etc.</para>
|
||||
|
||||
<para>This directory contains files that are used by the
|
||||
&man.patch.1; command to
|
||||
modify the sources as distributed in the distribution file into a form
|
||||
that will compile and run perfectly on &os;. The files are applied
|
||||
successively in alphabetic order (as returned by a shell
|
||||
<quote>patches/patch-*</quote> glob expansion), so
|
||||
<filename>patch-aa</filename> is applied before
|
||||
<filename>patch-ab</filename>, etc.</para>
|
||||
<para>The <filename>patch-*</filename> files should be in
|
||||
<command>diff -bu</command> format, and apply without a fuzz to avoid
|
||||
problems. (To force patches to apply
|
||||
with fuzz you can set <varname>PATCH_FUZZ_FACTOR=-F2</varname>).
|
||||
Furthermore, do not put changes for more than one file into a single
|
||||
patch file, as this will make future modifications more difficult.</para>
|
||||
|
||||
<para>The <filename>patch-*</filename> files should be in
|
||||
<command>diff -bu</command> format, and apply without a fuzz to avoid
|
||||
problems. (To force patches to apply
|
||||
with fuzz you can set <varname>PATCH_FUZZ_FACTOR=-F2</varname>).
|
||||
Furthermore, do not put changes for more than one file into a single
|
||||
patch file, as this will make future modifications more difficult.</para>
|
||||
<para>Similar, a file should be patched at most once, not several times by
|
||||
several different patches. If a file needs several patches, they should
|
||||
be combined into one file.</para>
|
||||
|
||||
<para>Similar, a file should be patched at most once, not several times by
|
||||
several different patches. If a file needs several patches, they should
|
||||
be combined into one file.</para>
|
||||
<para>One important thing to mention is to pay attention that no RCS IDs
|
||||
get stored in the patch files, as these will cause problems when
|
||||
later checked into the &os; CVS tree. Use the
|
||||
<command>pkgdiff</command> from the
|
||||
<filename role="pkg">pkgtools/pkgdiff</filename> package to avoid
|
||||
these problems.</para>
|
||||
|
||||
<para>One important thing to mention is to pay attention that no RCS IDs
|
||||
get stored in the patch files, as these will cause problems when
|
||||
later checked into the &os; CVS tree. Use the
|
||||
<command>pkgdiff</command> from the
|
||||
<filename role="pkg">pkgtools/pkgdiff</filename> package to avoid
|
||||
these problems.</para>
|
||||
<para>For even more automation, we recommend using
|
||||
<command>mkpatches</command> from the same package to make a
|
||||
whole set of patches. You just have to backup files before you
|
||||
edit them to <filename>filename.orig</filename>, e.g. with
|
||||
<command>cp -p filename filename.orig</command> or, easier, by
|
||||
using <command>pkgvi</command> again from the same package. If
|
||||
you upgrade a package this way, you can easily compare the new
|
||||
set of patches with the previously existing one with
|
||||
<command>patchdiff</command>. Copy the patches you want to use
|
||||
or update from the <filename>work/.newpatches</filename>
|
||||
directory to <filename>patches/</filename>.</para>
|
||||
|
||||
<para>For even more automation, we recommend using <command>mkpatches</command> from the same
|
||||
package to make a whole set of patches. You just have to backup files
|
||||
before you edit them to <filename>filename.orig</filename>, e.g. with
|
||||
<command>cp -p filename filename.orig</command> or, easier, by using
|
||||
<command>pkgvi</command> again from the same package. If you upgrade a package
|
||||
this way, you can easily compare the new set of patches with the
|
||||
previously existing one with <command>patchdiff</command>.</para>
|
||||
<para>When you have finished a package, remember to generate
|
||||
the checksums for the patch files by using the <command>make
|
||||
makepatchsum</command> command, see <xref
|
||||
linkend="components.distinfo"/>.</para>
|
||||
|
||||
<para>When you have finished a package, remember to generate the checksums
|
||||
for the patch files by using the <command>make makepatchsum</command>
|
||||
command, see <xref linkend="components.distinfo"/>.</para>
|
||||
<para>When adding a patch that corrects a problem in the
|
||||
distfile (rather than e.g. enforcing pkgsrc's view of where
|
||||
man pages should go), send the patch as a bug report to the
|
||||
maintainer. This benefits non-pkgsrc users of the package,
|
||||
and usually makes it possible to remove the patch in future
|
||||
version.</para>
|
||||
|
||||
<para>If you want to share patches between multiple packages
|
||||
in pkgsrc, e.g. because they use the same distfiles, set
|
||||
<varname>PATCHDIR</varname> to the path where the patch files
|
||||
can be found, e.g.:</para>
|
||||
<programlisting>
|
||||
PATCHDIR= ${.CURDIR}/../xemacs/patches
|
||||
</programlisting>>
|
||||
|
||||
<para>Patch files that are distributed by the author or other
|
||||
maintainers can be listed in
|
||||
<varname>$PATCHFILES</varname>. </para>
|
||||
maintainers can be listed in
|
||||
<varname>PATCHFILES</varname>.</para>
|
||||
|
||||
<para>If it is desired to store any patches that should not be committed into
|
||||
pkgsrc, they can be kept outside the pkgsrc tree in the
|
||||
<filename>$LOCALPATCHES</filename>
|
||||
directory. The directory tree there is expected to have the same
|
||||
<quote>category/package</quote> structure as pkgsrc, and patches are
|
||||
expected to be stored inside these dirs (also known as
|
||||
<filename>$LOCALPATCHES/$PKGPATH</filename>). For
|
||||
example, if you want to keep a private patch for
|
||||
<filename>pkgsrc/graphics/png</filename>, keep
|
||||
it in <filename>$LOCALPATCHES/graphics/png/mypatch</filename>. All
|
||||
files in the named directory are expected to be patch files, and
|
||||
<emphasis>they are applied after pkgsrc patches are applied</emphasis>.</para>
|
||||
<para>If it is desired to store any patches that should not be
|
||||
committed into pkgsrc, they can be kept outside the pkgsrc
|
||||
tree in the <filename>$LOCALPATCHES</filename> directory. The
|
||||
directory tree there is expected to have the same
|
||||
<quote>category/package</quote> structure as pkgsrc, and
|
||||
patches are expected to be stored inside these dirs (also
|
||||
known as <filename>$LOCALPATCHES/$PKGPATH</filename>). For
|
||||
example, if you want to keep a private patch for
|
||||
<filename>pkgsrc/graphics/png</filename>, keep it in
|
||||
<filename>$LOCALPATCHES/graphics/png/mypatch</filename>. All
|
||||
files in the named directory are expected to be patch files,
|
||||
and <emphasis>they are applied after pkgsrc patches are
|
||||
applied</emphasis>.</para>
|
||||
|
||||
<sect2 id="components.patches.guidelines">
|
||||
<title>Patching guidelines</title>
|
||||
|
@ -302,9 +332,9 @@
|
|||
<entry>configure script</entry>
|
||||
<entry>
|
||||
<programlisting>case ${target_os} in
|
||||
netbsd*) have_kvm=yes ;;
|
||||
*) have_kvm=no ;;
|
||||
esac</programlisting>
|
||||
netbsd*) have_kvm=yes ;;
|
||||
*) have_kvm=no ;;
|
||||
esac</programlisting>
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
@ -316,40 +346,40 @@
|
|||
<entry>C source file</entry>
|
||||
<entry>
|
||||
<programlisting>#if defined(__NetBSD__)
|
||||
# include <sys/event.h>
|
||||
#endif</programlisting>
|
||||
# include <sys/event.h>
|
||||
#endif</programlisting>
|
||||
</entry>
|
||||
<entry>
|
||||
<programlisting>#if defined(HAVE_SYS_EVENT_H)
|
||||
# include <sys/event.h>
|
||||
#endif</programlisting>
|
||||
# include <sys/event.h>
|
||||
#endif</programlisting>
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>C source file</entry>
|
||||
<entry><programlisting>int
|
||||
monitor_file(...)
|
||||
{
|
||||
#if defined(__NetBSD__)
|
||||
int fd = kqueue();
|
||||
...
|
||||
#else
|
||||
...
|
||||
#endif
|
||||
}</programlisting>
|
||||
monitor_file(...)
|
||||
{
|
||||
#if defined(__NetBSD__)
|
||||
int fd = kqueue();
|
||||
...
|
||||
#else
|
||||
...
|
||||
#endif
|
||||
}</programlisting>
|
||||
</entry>
|
||||
<entry>
|
||||
<programlisting>int
|
||||
monitor_file(...)
|
||||
{
|
||||
#if defined(HAVE_KQUEUE)
|
||||
int fd = kqueue();
|
||||
...
|
||||
#else
|
||||
...
|
||||
#endif
|
||||
}</programlisting>
|
||||
monitor_file(...)
|
||||
{
|
||||
#if defined(HAVE_KQUEUE)
|
||||
int fd = kqueue();
|
||||
...
|
||||
#else
|
||||
...
|
||||
#endif
|
||||
}</programlisting>
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
|
@ -399,27 +429,27 @@
|
|||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><filename>DESCR</filename></term>
|
||||
<term><filename>DESCR</filename></term>
|
||||
|
||||
<listitem>
|
||||
<para>A multi-line description of the piece of software. This should include
|
||||
any credits where they are due. Please bear in mind that others do not
|
||||
share your sense of humour (or spelling idiosyncrasies), and that others
|
||||
will read everything that you write here.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>A multi-line description of the piece of software. This should include
|
||||
any credits where they are due. Please bear in mind that others do not
|
||||
share your sense of humour (or spelling idiosyncrasies), and that others
|
||||
will read everything that you write here.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><filename>PLIST</filename></term>
|
||||
<term><filename>PLIST</filename></term>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
This file governs the files that are installed on your system: all the
|
||||
binaries, manual pages, etc. There are other directives which may be
|
||||
entered in this file, to control the creation and deletion of
|
||||
directories, and the location of inserted files.
|
||||
See <xref linkend="plist"/> for more information. </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>This file governs the files that are installed on your
|
||||
system: all the binaries, manual pages, etc. There are other
|
||||
directives which may be entered in this file, to control the
|
||||
creation and deletion of directories, and the location of
|
||||
inserted files. See <xref linkend="plist"/> for more
|
||||
information.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect1>
|
||||
|
@ -427,69 +457,82 @@
|
|||
<sect1 id="components.optional">
|
||||
<title>Optional files</title>
|
||||
|
||||
<sect2 id="components.optional.bin">
|
||||
<title>Files affecting the binary package</title>
|
||||
<sect2 id="components.optional.bin">
|
||||
<title>Files affecting the binary package</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><filename>INSTALL</filename></term>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><filename>INSTALL</filename></term>
|
||||
|
||||
<listitem>
|
||||
<para>This shell script is invoked twice by &man.pkg.add.1;.
|
||||
First time after package
|
||||
extraction and before files are moved in place, the second time after
|
||||
the files to install are moved in place. This can be used to do any
|
||||
custom procedures not possible with @exec commands in
|
||||
<filename>PLIST</filename>. See
|
||||
&man.pkg.add.1; and &man.pkg.create.1; for more information.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<listitem>
|
||||
<para>This shell script is invoked twice by &man.pkg.add.1;.
|
||||
First time after package extraction and before files are
|
||||
moved in place, the second time after the files to install
|
||||
are moved in place. This can be used to do any custom
|
||||
procedures not possible with @exec commands in
|
||||
<filename>PLIST</filename>. See &man.pkg.add.1; and
|
||||
&man.pkg.create.1; for more information. See also <xref
|
||||
linkend="files-and-dirs-outside-prefix" />.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><filename>DEINSTALL</filename></term>
|
||||
<varlistentry>
|
||||
<term><filename>DEINSTALL</filename></term>
|
||||
|
||||
<listitem>
|
||||
<para>This script is executed before and after any files are removed. It is
|
||||
this script's responsibility to clean up any additional messy details
|
||||
around the package's installation, since all pkg_delete knows is how to
|
||||
delete the files created in the original distribution.
|
||||
See &man.pkg.delete.1;
|
||||
and &man.pkg.create.1; for more information.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<listitem>
|
||||
<para>This script is executed before and after any files are removed. It is
|
||||
this script's responsibility to clean up any additional messy details
|
||||
around the package's installation, since all pkg_delete knows is how to
|
||||
delete the files created in the original distribution.
|
||||
See &man.pkg.delete.1;
|
||||
and &man.pkg.create.1; for more information.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><filename>MESSAGE</filename></term>
|
||||
<varlistentry>
|
||||
<term><filename>MESSAGE</filename></term>
|
||||
|
||||
<listitem>
|
||||
<para>This file is displayed after installation of the package.
|
||||
Useful for things like legal notices on almost-free
|
||||
software and hints for updating config files after
|
||||
installing modules for apache, PHP etc.
|
||||
Please note that you can modify variables in it easily by using
|
||||
<varname>MESSAGE_SUBST</varname> in the package's
|
||||
<filename>Makefile</filename>:</para>
|
||||
<listitem>
|
||||
<para>This file is displayed after installation of the package.
|
||||
Useful for things like legal notices on almost-free
|
||||
software and hints for updating config files after
|
||||
installing modules for apache, PHP etc.
|
||||
Please note that you can modify variables in it easily by using
|
||||
<varname>MESSAGE_SUBST</varname> in the package's
|
||||
<filename>Makefile</filename>:</para>
|
||||
|
||||
<programlisting>
|
||||
MESSAGE_SUBST+= SOMEVAR="somevalue"
|
||||
</programlisting>
|
||||
<programlisting>
|
||||
MESSAGE_SUBST+= SOMEVAR="somevalue"
|
||||
</programlisting>
|
||||
|
||||
<para>replaces "${SOMEVAR}" with <quote>somevalue</quote> in
|
||||
<filename>MESSAGE</filename>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<para>replaces "${SOMEVAR}" with <quote>somevalue</quote> in
|
||||
<filename>MESSAGE</filename>. By default, substitution is
|
||||
performed for <varname>PKGNAME</varname>,
|
||||
<varname>PKGBASE</varname>, <varname>PREFIX</varname>,
|
||||
<varname>LOCALBASE</varname>, <varname>X11PREFIX</varname>,
|
||||
<varname>X11BASE</varname>,
|
||||
<varname>PKG_SYSCONFDIR</varname>,
|
||||
<varname>ROOT_GROUP</varname>, and
|
||||
<varname>ROOT_GROUP</varname>.</para>
|
||||
|
||||
<para>You can display a different or additional files by
|
||||
setting the <varname>MESSAGE_SRC</varname> variable. Its
|
||||
default is <filename>MESSAGE</filename>, if the file
|
||||
exists.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><filename>ALTERNATIVES</filename></term>
|
||||
<listitem><para>FIXME: There is no documentation on the
|
||||
alternatives framework.</para></listitem></varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
<sect2 id="components.optional.build">
|
||||
<title>Files affecting the build process</title>
|
||||
</sect2>
|
||||
<sect2 id="components.optional.build">
|
||||
<title>Files affecting the build process</title>
|
||||
|
||||
<variablelist>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><filename>Makefile.common</filename></term>
|
||||
<listitem><para>This file contains arbitrary things that could
|
||||
|
@ -519,13 +562,13 @@
|
|||
it is equally acceptable to put the code directly into the
|
||||
<filename>Makefile</filename>.</para></listitem></varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
<sect2 id="components.optional.none">
|
||||
<title>Files affecting nothing at all</title>
|
||||
</sect2>
|
||||
<sect2 id="components.optional.none">
|
||||
<title>Files affecting nothing at all</title>
|
||||
|
||||
<variablelist>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><filename>README*</filename></term>
|
||||
<listitem><para>These files do not take place in the creation of
|
||||
|
@ -537,34 +580,42 @@
|
|||
to make the package even
|
||||
better.</para></listitem></varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="work-dir">
|
||||
<title><filename>work*</filename></title>
|
||||
|
||||
<para>When you type <command>make</command>, the distribution files are
|
||||
unpacked into the directory denoted by
|
||||
<varname>WRKDIR</varname>. It can be removed by running
|
||||
<command>make clean</command>. Besides the sources, this
|
||||
directory is also used to keep various timestamp files.
|
||||
The directory gets <emphasis>removed completely</emphasis> on clean.
|
||||
The default is <filename>${.CURDIR}/work</filename>
|
||||
or <filename>${.CURDIR}/work.${MACHINE_ARCH}</filename>
|
||||
if <varname>OBJMACHINE</varname> is set.</para>
|
||||
unpacked into the directory denoted by
|
||||
<varname>WRKDIR</varname>. It can be removed by running
|
||||
<command>make clean</command>. Besides the sources, this
|
||||
directory is also used to keep various timestamp files.
|
||||
The directory gets <emphasis>removed completely</emphasis> on clean.
|
||||
The default is <filename>${.CURDIR}/work</filename>
|
||||
or <filename>${.CURDIR}/work.${MACHINE_ARCH}</filename>
|
||||
if <varname>OBJMACHINE</varname> is set.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="files-dir">
|
||||
<title><filename>files/*</filename></title>
|
||||
|
||||
<para>If you have any files that you wish to be placed in the package prior
|
||||
to configuration or building, you could place these files here and use
|
||||
a <quote>${CP}</quote> command in the
|
||||
<quote>pre-configure</quote> target to achieve
|
||||
this. Alternatively, you could simply diff the file against
|
||||
<filename>/dev/null</filename> and use the patch mechanism to manage
|
||||
the creation of this file.</para>
|
||||
to configuration or building, you could place these files here and use
|
||||
a <command>${CP}</command> command in the
|
||||
<quote>pre-configure</quote> target to achieve
|
||||
this. Alternatively, you could simply diff the file against
|
||||
<filename>/dev/null</filename> and use the patch mechanism to manage
|
||||
the creation of this file.</para>
|
||||
|
||||
<para>If you want to share files in this way with other
|
||||
packages, set the <varname>FILESDIR</varname> variable to point
|
||||
to the other package's <filename>files</filename> directory,
|
||||
e.g.:</para>
|
||||
<programlisting>
|
||||
FILESDIR=${.CURDIR}/../xemacs/files
|
||||
</programlisting>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
|
Loading…
Reference in a new issue