Some ports, particularly the p5-
ports,
need to change their pkg-plist
depending on
what options they are configured with (or version of
perl
, in the case of p5-
ports). To make this easy, any instances in
pkg-plist
of %%OSREL%%
,
%%PERL_VER%%
, and
%%PERL_VERSION%%
will be substituted
appropriately. The value of %%OSREL%%
is the
numeric revision of the operating system (for example,
4.9
). %%PERL_VERSION%%
and %%PERL_VER%%
is the full version number
of perl
(for example,
5.8.9
). Several other
%%
related
to port's documentation files are described in the relevant
section.VARS
%%
To make other substitutions, set
PLIST_SUB
with a list of
pairs and instances of
VAR
=VALUE
%%
will be
substituted with VAR
%%VALUE
in
pkg-plist
.
For instance, if a port installs many files
in a version-specific subdirectory, use a placeholder for the
version so that pkg-plist
does not have to
be regenerated every time the port is updated. For
example:
OCTAVE_VERSION= ${PORTREVISION}
PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION}
in the Makefile
and use
%%OCTAVE_VERSION%%
wherever the version shows
up in pkg-plist
. When
the port is upgraded, it will not be necessary to edit dozens
(or in some cases, hundreds) of lines in
pkg-plist
.
If files are installed conditionally on the options
set in the port, the usual way of handling it is prefixing
pkg-plist
lines with a
%%OPT%%
for lines needed when the option is
enabled, or %%NO_OPT%%
when the option is
disabled, and adding OPTIONS_SUB=yes
to the
Makefile
. See 節 5.12.3.1, “OPTIONS_SUB
” for more information.
For instance, if there are files that are only installed
when the X11
option is enabled, and
Makefile
has:
OPTIONS_DEFINE= X11
OPTIONS_SUB= yes
In pkg-plist
, put
%%X11%%
in front of the lines only being
installed when the option is enabled, like this :
%%X11%%bin/foo-gui
This substitution will be done between the
pre-install
and
do-install
targets, by reading from
PLIST
and writing to
TMPPLIST
(default:
WRKDIR/.PLIST.mktmp
). So if the port
builds PLIST
on the fly, do so in or before
pre-install
. Also, if the port
needs to edit the resulting file, do so in
post-install
to a file named
TMPPLIST
.
Another way of modifying a port's packing list is based on
setting the variables PLIST_FILES
and
PLIST_DIRS
. The value of each variable is
regarded as a list of pathnames to write to
TMPPLIST
along with
PLIST
contents. While names listed in
PLIST_FILES
and
PLIST_DIRS
are subject to
%%
substitution as described above, it is better to use the
VAR
%%${
directly.
Except for that, names from
VAR
}PLIST_FILES
will appear in the final packing
list unchanged, while @dir
will be prepended to names from
PLIST_DIRS
. To take effect,
PLIST_FILES
and
PLIST_DIRS
must be set before
TMPPLIST
is written, that is, in
pre-install
or earlier.
From time to time, using OPTIONS_SUB
is not enough. In those cases, adding a specific
to
TAG
PLIST_SUB
inside the Makefile
with a special
value of @comment
, makes package tools to
ignore the line. For instance, if some files are only installed
when the X11
option is on and the
architecture is i386
:
.include <bsd.port.pre.mk>
.if ${PORT_OPTIONS:MX11} && ${ARCH} == "i386"
PLIST_SUB+= X11I386=""
.else
PLIST_SUB+= X11I386="@comment "
.endif
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。