FreeBSD Manual Pages
MAKEPLIST(8) System Manager's Manual MAKEPLIST(8) NAME makeplist -- generate a pkg-plist file for ports(7) SYNOPSIS makeplist [-lOq] [-I make-vars] [-o plist-file] [port-name] makeplist -h DESCRIPTION The makeplist script is a tool for ports(7) maintainers and committers, to generate a pkg-plist file. Arguments The following arguments are accepted: make-vars A comma separated list of make variables. The following vari- ables may be specified: • DESKTOP_ENTRIES • PLIST_FILES • PLIST_SUB • PORTDATA • PORTDOCS • PORTEXAMPLES • USE_RC_SUBR plist-file The output file for the generated plist. Defaults to the ports pkg-plist with a .makeplist suffix appended. port-name The name or origin of the port to generate a pkg-plist for. This may also be the directory the port can be found in. If omitted the current directory is used. Options The following options are support: -h, --help Displays the available options. -I make-vars, --ignore-vars make-vars Set the make variables to ignore when postprocessing the gener- ated plist. -l, --licenses Usually makeplist runs with with the ports(7) license auditing framework disabled. This option turns it on. This flag cannot be combined with -q. -O, --orig Includes files with the .orig suffix in the plist. -o plist-file, --outfile plist-file Sets the output file for the generated plist. -q, --quiet Suppress build/stage output. This flag cannot be combined with -l. IMPLEMENTATION NOTES In order to make effective use of makeplist some knowledge about it is required. Limitations The exponential growth of possible combinations of options puts a hard limit on automated plist generation. The makeplist script does not sup- port cases where files are only installed if a combination of options is given. The tool is built around the assumption that options do not affect each other. The following subsections describe what exactly is supported and workarounds for common cases where this is not the case. Configurations The core idea of makeplist is to run "make stage" and create a list of the files in the staging area. This functionality is provided by the ports(7) when running "make makeplist". In order to identify all the files installed by each option staging is performed for every option. The trivial approach of staging with one option at a time is not possible when OPTIONS_SINGLE or OPTIONS_MULTI groups are defined, because every such group must be represented in all configurations. Even so under the assumption that options do not affect each other n + 1 stage cycles suffice to identify all files provided by all options (n being the number of options). Staging Usually makeplist calls "make clean stage" for each configuration. One exception to this rule is when ports define NO_BUILD in which case "make restage" is called. This means that the extract target is only performed during the first stage cycle. And it breaks if extraction is affected by options. Build Failure In case one or more configurations fail an error message with the build options and the name of the log file will be printed after the plist is created. Only logs of failed builds are kept. The logs are created un- der /tmp and compressed using gzip(1). They can be viewed with the command "gunzip -c logfile | less -R". Plist Accumulation After every stage cycle all files installed into the STAGEDIR are col- lected for later assembly of the plist. Certain files are not included, these files are selected using the fol- lowing ports(7) variables: DESKTOP_ENTRIES Macro for creating/installing desktop icons. USE_RC_SUBR Macro for creating/installing rc(8) scripts. PLIST_FILES A list of files automatically added to the plist. PORTDOCS, PORTEXAMPLES, PORTDATA Lists of files / glob patterns in DOCSDIR, EXAMPLESDIR and DATADIR. This can be used to deal with cases that violate the independent option principle. E.g. if there is a number of options to switch certain mod- ules on/off and a DOCS option which causes each of these modules to generate some documentation, setting PORTDOCS=* keeps everything in DOCSDIR out of the plist. Plist Creation Files in the generated plist are sorted alphabetically by sort(1) -n. Common files installed independent of the given options are listed first, followed by the option specific files. Option specific files ap- pear in alphabetical order of the options. The options DOCS and EXAMPLES are implicitly replaced with PORTDOCS and PORTEXAMPLES. Files with a .sample suffix are automatically prefixed with "@sample ". In the next stage of plist creation the reverse of the substitutions defined in PLIST_SUB is applied. The substitutions are sorted by size and applied largest first. Empty substitutions, PREFIX substitutions and substitutions starting with an @ character are discarded. Lines starting with %%DOCSDIR%% are prefixed with %%PORTDOCS%% and %%EXAMPLESDIR%% with %%PORTEXAMPLES%%. In the final stage of plist creation makeplist attempts to transplant the @ keywords (see pkg-create(8)) from the old plist to the new one. The script makes an effort to place them in the same context. The pre- fix "@sample " is stripped from all files that appear in the old plist without it. EXAMPLES The current directory is a port to create a pkg-plist for: % makeplist The quiet mode suppresses the build output: % makeplist -q Instead of creating the file pkg-plist.makeplist overwrite the pkg-plist file: % makeplist -o pkg-plist To create a pkg-plist as an unprivileged user run: % env WRKDIRPREFIX='/var/tmp/obj.${USER}' makeplist -o ~/myplist The WRKDIRPREFIX can be set in the make.conf(5) file: WRKDIRPREFIX?=/var/tmp/obj.${USER} There is no need to cd into a ports directory: % makeplist games/ioquake3-devel The ports tree does not have to be in /usr/ports: % env PORTSDIR=$HOME/ports.svn makeplist games/ioquake3-devel Or just use cd: % cd ~/ports.svn/games/ioquake3-devel && makeplist A port listing all its files in PLIST_FILES results in an empty plist. PLIST_FILES can be ignored: % makeplist -I PLIST_FILES SEE ALSO ports(7), make(1), pkg-greate(8) HISTORY The makeplist script first appeared in the bsda2-0.2.0 release. AUTHORS Dominic Fandrey <freebsd@k4m1.org> FreeBSD Ports 14.quarterly 23 February, 2021 MAKEPLIST(8)
NAME | SYNOPSIS | DESCRIPTION | IMPLEMENTATION NOTES | EXAMPLES | SEE ALSO | HISTORY | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=makeplist&sektion=8&manpath=FreeBSD+Ports+14.3.quarterly>