-
Notifications
You must be signed in to change notification settings - Fork 162
poudriere.8
Bryan Drewery edited this page Mar 11, 2019
·
26 revisions
POUDRIERE(8) | FreeBSD System Manager's Manual | POUDRIERE(8) |
poudriere
—
bulk package builder and port tester
poudriere |
poudriere-options
command
[command-options ] |
poudriere
tool is used to build packages
from the ports tree. It can also be used to test a single port.
poudriere
accepts the following global
options.
-
-e
etcdir - Path to the directory where
poudriere
will find its configuration data. See FILES and ENVIRONMENT for more information. -A
- Force color support, even if not in a TTY.
-N
- Disable color support.
-v
- This will show more information during the build. Specify twice to enable debug output.
poudriere
must be a
command
from the following list:
-
bulk
(poudriere-bulk(8)) - This command makes a ready-to-export package tree, and fills it with
binary packages built from a given list of ports. During the build, hit ^T
to send
SIGINFO
and show stats and progress about the build. -
image
(poudriere-image(8)) - This command creates images.
-
jail
(poudriere-jail(8)) - This command manages the
poudriere
jails which are used as different building environments. -
ports
(poudriere-ports(8)) - This command provides management of different portstrees which will be
used by
poudriere
. -
testport
(poudriere-testport(8)) - This command, mainly targeted at ports developers, launches a test on a given port (useful before submitting/committing a port).
-
options
(poudriere-options(8)) - This command configures the options for a given port
-
logclean
(poudriere-logclean(8)) - This command will cleanup old logfiles
-
distclean
(poudriere-distclean(8)) - This command will cleanup old distfiles
-
pkgclean
(poudriere-pkgclean(8)) - This command will cleanup old and unwanted packages
-
queue
(poudriere-queue(8)) - This command allows a non-root user to queue
poudriere
commands. It is currently EXPERIMENTAL. Using it requires starting poudriered via the provided rc script. -
status
(poudriere-status(8)) - This command shows status of current and previous builds
-
version
(poudriere-version(8)) - Show version of
poudriere
.
poudriere
command may use the following
environment variables:
- POUDRIERE_ETC
- If specified, the path to poudriere's config directory. Defaults to /usr/local/etc.
- UMASK
- The umask for files created by
poudriere
. Defaults to 022.
jail
and
ports
subcommands may additionally use the
following environment variables:
- FETCH_BIND_ADDRESS
- The bind address used by fetch(1). See fetch(3) for more details.
- HTTP_PROXY HTTP_* http_* FTP_PROXY FTP_* http_* SSL_* NO_PROXY no_proxy
- The proxy configuration for fetch(1). See fetch(3) for other supported proxy environment variables.
jail
subcommand may additionally use the
following environment variable:
- MAKEOBJDIRPREFIX
- POUDRIERE_ETC/poudriere.conf
- See self-documented /usr/local/etc/poudriere.conf.sample for example.
- POUDRIERE_ETC/poudriere.d/poudriere.conf
- The configuration can be stored in the poudriere.d directory as well.
- POUDRIERE_ETC/poudriere.d
- This directory contains various configuration files for the different jails.
poudriere
utility exits 0 on
success, and >0 if an error occurs.
This first example provides a guide on how to use
poudriere
for bulk build packages.
[Prepare infrastructure]
First you have to create a jail, which will hold all the building infrastructure
needs.
poudriere jail -c -v 8.2-RELEASE -a
amd64 -j 82amd64
poudriere jail -c -v 8.1-RELEASE -a
i386 -j 81i386
poudriere ports -c
poudriere
:
echo 'sysutils/screen' >
~/pkglist
echo 'editors/vim' >>
~/pkglist
poudriere bulk -f ~/pkglist -j
81i386
/usr/local/poudriere/data/packages/81i386
poudriere
for a single port. Take the example of building a single port;
poudriere testport -o category/port
-j myjail
poudriere
will use them.
When all the dependencies are built, packages for them are created so that next
time it will be faster.
All the dependency phase is done with PREFIX == LOCALBASE.
After that it will build the port itself with LOCALBASE != PREFIX and log the
build to
poudriere/data/logs/testport/jailname/default/mybeautifulporttotest.log
Poudriere will try to: install it, create a package from it, deinstall it, check
for cruft left behind and propose the line to add to pkg-plist if needed.
Poudriere is very easy to extend so that additional tests can be easily added.
bulk -a
will build all FLAVORS for each port.
Otherwise bulk
and
testport
use the following rules:
- A FLAVOR of bar for port devel/foo is specified as devel/foo@bar.
- All FLAVORS for a port, without a specified FLAVOR, will be built using the FLAVOR all: devel/foo@all.
- The first (default) FLAVOR for a port is built by not specifying a FLAVOR: devel/foo.
- All FLAVORS for a port, without a specified FLAVOR, will be built: devel/foo.
- The first (default) FLAVOR for a port is built by specifying the FLAVOR -: devel/foo@-
- An invalid FLAVOR for a port will cause an error during dependency calculation.
- MOVED entries do not support a source FLAVOR, only a target one.
poudriere
by changing build options port by
port, and you can also specify building directives in a make.conf file.
Before building a package, poudriere
can
mount a directory containing option files if available.
poudriere
will check for any of these
directories in this order:
/usr/local/etc/poudriere.d/<jailname>-<tree>-<setname>-options
/usr/local/etc/poudriere.d/<jailname>-<setname>-options
/usr/local/etc/poudriere.d/<jailname>-<tree>-options
/usr/local/etc/poudriere.d/<tree>-<setname>-options
/usr/local/etc/poudriere.d/<setname>-options
/usr/local/etc/poudriere.d/<tree>-options
/usr/local/etc/poudriere.d/<jailname>-options
/usr/local/etc/poudriere.d/options
options
subcommand can be used to easily
configure options in the correct directory.
This directory has the usual layout for options: it contains one directory per
port (the name of the port) containing an 'options' file with lines similar
to:
WITH_FOO=true
WITHOUT_BAR=true
/usr/local/etc/poudriere.d/blacklist
/usr/local/etc/poudriere.d/<setname>-blacklist
/usr/local/etc/poudriere.d/<tree>-blacklist
/usr/local/etc/poudriere.d/<jailname>-blacklist
/usr/local/etc/poudriere.d/<tree>-<setname>-blacklist
/usr/local/etc/poudriere.d/<jailname>-<tree>-blacklist
/usr/local/etc/poudriere.d/<jailname>-<setname>-blacklist
/usr/local/etc/poudriere.d/<jailname>-<tree>-<setname>-blacklist
/usr/local/etc/poudriere.d/qemu-blacklist
/usr/local/etc/poudriere.d/poudriere.conf
/usr/local/etc/poudriere.d/<setname>-poudriere.conf
/usr/local/etc/poudriere.d/<tree>-poudriere.conf
/usr/local/etc/poudriere.d/<jailname>-poudriere.conf
/usr/local/etc/poudriere.d/<tree>-<setname>-poudriere.conf
/usr/local/etc/poudriere.d/<jailname>-<tree>-poudriere.conf
/usr/local/etc/poudriere.d/<jailname>-<setname>-poudriere.conf
/usr/local/etc/poudriere.d/<jailname>-<tree>-<setname>-poudriere.conf
/usr/local/etc/poudriere.d/make.conf
/usr/local/etc/poudriere.d/<setname>-make.conf
/usr/local/etc/poudriere.d/<tree>-make.conf
/usr/local/etc/poudriere.d/<jailname>-make.conf
/usr/local/etc/poudriere.d/<tree>-<setname>-make.conf
/usr/local/etc/poudriere.d/<jailname>-<tree>-make.conf
/usr/local/etc/poudriere.d/<jailname>-<setname>-make.conf
/usr/local/etc/poudriere.d/<jailname>-<tree>-<setname>-make.conf
/usr/local/etc/poudriere.d/hooks/plugins/<plugin>/make.conf
jail -c
subcommand. Any of the
following are allowed and will all be used in the order shown:
/usr/local/etc/poudriere.d/src.conf
/usr/local/etc/poudriere.d/<setname>-src.conf
/usr/local/etc/poudriere.d/<jailname>-src.conf
jail -c
subcommand. Any of the
following are allowed and will all be used in the order shown:
/usr/local/etc/poudriere.d/src-env.conf
/usr/local/etc/poudriere.d/<setname>-src-env.conf
/usr/local/etc/poudriere.d/<jailname>-src-env.conf
/usr/local/etc/poudriere.d/hooks/<hook>.sh
/usr/local/etc/poudriere.d/hooks/plugins/<plugin>/<hook>.sh
Bryan Drewery ⟨bdrewery@FreeBSD.org⟩
March 4, 2019 | FreeBSD 13.0-CURRENT |