English French (fr_FR)
% make clean; make package PREFIX=/var/tmp/`make -V PORTNAME`
If anything is installed outside of `PREFIX`, the package creation process will complain that it cannot find the files.
In addition, it is worth checking the same with the stage directory support (see <<staging,Staging>>):
% make stage && make check-plist && make stage-qa && make package
`check-plist` checks for files missing from the plist, and files in the plist that are not installed by the port.
`stage-qa` checks for common problems like bad shebang, symlinks pointing outside the stage directory, setuid files, and non-stripped libraries...
These tests will not find hard-coded paths inside the port's files, nor will it verify that `LOCALBASE` is being used to correctly refer to files from other ports. The temporarily-installed port in [.filename]#/var/tmp/`make -V PORTNAME`# must be tested for proper operation to make sure there are no problems with paths.
`PREFIX` must not be set explicitly in a port's [.filename]#Makefile#. Users installing the port may have set `PREFIX` to a custom location, and the port must respect that setting.
Refer to programs and files from other ports with the variables mentioned above, not explicit pathnames. For instance, if the port requires a macro `PAGER` to have the full pathname of `less`, do not use a literal path of [.filename]#/usr/local/bin/less#. Instead, use `${LOCALBASE}`:
-DPAGER=\"${LOCALBASE}/bin/less\"
The path with `LOCALBASE` is more likely to still work if the system administrator has moved the whole [.filename]#/usr/local# tree somewhere else.
All these tests are done automatically when running `poudriere testport` or `poudriere bulk -t`. It is highly recommended that every ports contributor install and test their ports with it. See <<testing-poudriere>> for more information.
Poudriere
For a ports contributor, Poudriere is one of the most important and helpful testing and build tools. Its main features include:
Bulk building of the entire ports tree, specific subsets of the ports tree, or a single port including its dependencies
Automatic packaging of build results
Generation of build log files per port
Providing a signed man:pkg[8] repository
Testing of port builds before submitting a patch to the FreeBSD bug tracker or committing to the ports tree
Testing for successful ports builds using different options