GENPLIST(1)GENPLIST(1)NAME
GENPLIST - Generate a static plist
SYNOPSIS
make depends
genplist create <prefix>
genplist diff
genplist commit
genplist test
genplist clean
DESCRIPTION
The genplist command generates a packing list and a man page listing
for the port in the current directory, roughly following the plist gen‐
eration process outlined in the FreeBSD Porters' Handbook. The files
are saved to "pkg-plist.new" and "man-plist.new", respectively. The
file "man-list.new" is intended for inclusion in the port Makefile as a
list of filenames assigned to one or more of the MAN(N) variables. The
file "pkg-plist.new" can simply be renamed to "pkg-plist" once it has
been verified (and edited if necessary).
When using genplist, the port will be built and installed with a non-
standard prefix. Hence, before using genplist, all dependencies should
be installed using pkg_add(1) or make depends, so that they don't
inherit the prefix from genplist.
For the "create" subcommand, the user must specify an installation pre‐
fix:
genplist create <prefix>
The port will be installed into <prefix>/$PORTNAME. This directory
must not exist at the time genplist is invoked. If the directory
exists, genplist will abort with an error message, rather than over‐
write it. A typical prefix is /tmp, but note that /tmp may not have
enough space for large ports.
If the installation prefix does not exist, genplist will create an
installation tree under this directory using mtree, install the port
there, and generate "pkg-plist.new" and "man-plist.new" based on its
contents.
The installation prefix is automatically saved for use by subsequent
genplist subcommands such as "test" and "clean".
IMPORTANT:
Prerequisite ports should generally be installed separately first, so
that they are installed under the default PREFIX (usually /usr/local),
rather than inheriting the prefix given to genplist.
The general procedure can be outlined as follows:
1. Generate a new plist:
genplist create /home/bacon/Test_ports
2. Visually inspect the differences between the old and new plists:
genplist diff
3. Examine the files "pkg-plist.new" and "man-plist.new" and make any
necessary changes. No changes should be necessary for most simple
ports. For a complex port, genplist should be regarded only as an aid
to generating the final plist. Generating an exact packing list for
complex ports requires a certain degree of intelligence, so the 90/10
rule is invoked here in the interest of keeping this tool simple.
4. Commit the new plist. ( Renames pkg-plist.new to pkg-plist. )
genplist commit
5. Insert the contents of man-plist.new into your port Makefile, if
appropriate.
MAN1= (insert man-plist.new here)
6. Test the new plist, to make sure the port deinstalls cleanly. This
process will perform an install and deinstall using the same prefix
specified in the "create" step, and then check for leftover files in
the install tree.
genplist test
7. Clean up
genplist clean
EXAMPLE
cd Newports/science/afni
genplist create /home/bacon/Test_ports
genplist diff
vi pkg-plist.new (make any necessary manual changes)
genplist commit
vi Makefile (insert man-plist, and edit)
genplist test
genplist clean
PLUG-INS
The genplist script can be extended for a particular port by creating a
script or program named $HOME/.genplist/portname. If present, such
scripts are called by genplist immediately after generating pkg-
plist.new, with pkg-plist as the sole command-line argument. For exam‐
ple, if there is a script named
~/.genplist/ape
then genplist will execute the command
~/.genplist/ape pkg-plist.new
after generating pkg-plist.new. This allows the port maintainer to
perform additional automated edits that are specific to each port.
This feature facilitates completely automated plist generation, while
keeping the base genplist script reasonably simple.
SEE ALSOports(7), port(1), portlint(1)AUTHOR
Jason W. Bacon
Acadix Consulting, LLC
CONTRIBUTORS
Greg Larkin
SourceHosting.net
Olli Hauer
FreeBSD.org
GENPLIST(1)