poudriere
: Poudriere is a tool that lets you build PkgNG packages from ports. This is cool because it gives you the flexibility of custom port optionspoudriere::xbuild
: Install cross-building dependencies
poudriere::env
: This resource creates a build environment for a given release and architecture of FreeBSD. Passing in custom options gives you the ability topoudriere::portstree
: This resource creates a ports tree. You can have multiple ports trees for different building purposes. Automatic periodic updating of package
Poudriere::Architecture
: The architecture to target when building packagesPoudriere::Cron_interval
: Parameters to configure Poudriere's cron resourcesPoudriere::Fetch_method
: A supported fetch method for poudrierePoudriere::Tmpfs
: A supported tmpfs setting for poudriere
Poudriere is a tool that lets you build PkgNG packages from ports. This is cool because it gives you the flexibility of custom port options with all the awesomeness of packages. The below class prepares the build environment. For the configuration of the build environment, see Class[poudriere::env].
The following parameters are available in the poudriere
class:
zpool
zrootfs
freebsd_host
resolv_conf
poudriere_base
poudriere_data
use_portlint
mfssize
tmpfs
tmpfs_limit
max_memory
max_files
distfiles_cache
svn_host
check_changed_options
check_changed_deps
bad_pkgname_deps_are_fatal
pkg_repo_signing_key
ccache_enable
ccache_dir
ccache_static_prefix
restrict_networking
allow_make_jobs_packages
parallel_jobs
prepare_parallel_jobs
save_wrkdir
wrkdir_archive_format
nolinux
no_force_package
no_package_building
http_proxy
ftp_proxy
no_restricted
allow_make_jobs
allow_make_jobs_packages
timestamp_logs
url_base
max_execution_time
nohang_time
atomic_package_repository
commit_packages_on_failure
keep_old_packages
keep_old_packages_count
porttesting_fatal
builder_hostname
preserve_timestamp
build_as_non_root
portbuild_user
portbuild_uid
priority_boost
buildname_format
duration_format
use_colors
trim_orphaned_build_deps
local_mtree_excludes
html_type
html_track_remaining
environments
portstrees
xbuild_package
allow_networking_packages
Data type: Optional[String[1]]
The pool where poudriere will create all the filesystems
Default value: undef
Data type: Stdlib::Absolutepath
The root of the poudriere zfs filesystem
Default value: '/poudriere'
Data type: String[1]
The host where to download sets for the jails setup
Default value: 'http://ftp.freebsd.org/'
Data type: Stdlib::Absolutepath
A file on your hosts system that will be copied has /etc/resolv.conf for the jail
Default value: '/etc/resolv.conf'
Data type: Stdlib::Absolutepath
The directory where poudriere will store jails and ports
Default value: '/usr/local/poudriere'
Data type: String[1]
The directory where the jail will store the packages and logs
Default value: '${BASEFS}/data'
Data type: Enum['yes', 'no']
Use portlint to check ports sanity
Default value: 'no'
Data type: Optional[String[1]]
Size of WRKDIRPREFIX when using mdmfs
Default value: undef
Data type: Poudriere::Tmpfs
Use tmpfs(5)
Default value: 'yes'
Data type: Optional[Integer[1]]
How much memory to limit tmpfs size to for each builder in GiB
Default value: undef
Data type: Optional[Integer[1]]
How much memory to limit jail processes to for each builder
Default value: undef
Data type: Optional[Integer[1]]
How many file descriptors to limit each jail process to
Default value: undef
Data type: Stdlib::Absolutepath
Directory used for the distfiles
Default value: '/usr/ports/distfiles'
Data type: Optional[String[1]]
Mirror to use for the ports tree or source tree when using SVN
Default value: undef
Data type: Enum['yes', 'no', 'verbose']
Enable automatic OPTION change detection
Default value: 'verbose'
Data type: Enum['yes', 'no']
Enable automatic dependency change detection
Default value: 'yes'
Data type: Optional[Enum['yes', 'no']]
Consider bad dependency lines on the wrong PKGNAME as fatal
Default value: undef
Data type: Optional[String[1]]
Path to the RSA key to sign the PKG repo with
Default value: undef
Data type: Boolean
Enable ccache
Default value: false
Data type: Stdlib::Absolutepath
Path to the ccache cache directory
Default value: '/var/cache/ccache'
Data type: Optional[Stdlib::Absolutepath]
Static ccache support from host
Default value: undef
Data type: Optional[Enum['yes', 'no']]
The jails normally only allow network access during the 'make fetch' phase.
Default value: undef
Data type: Optional[String[1]]
Allow networking for a subset of packages when building
Default value: undef
Data type: Integer[1]
Override the number of builders
Default value: $facts['processors']['count']
Data type: Optional[Integer[1]]
How many jobs should be used for preparing the build
Default value: undef
Data type: Optional[String[1]]
Save the WRKDIR to ${POUDRIERE_DATA}/wrkdirs on failure
Default value: undef
Data type: Optional[String[1]]
Format for the workdir packing
Default value: undef
Data type: Optional[String[1]]
Disable Linux support
Default value: undef
Data type: Optional[Enum['yes', 'no']]
Do not set FORCE_PACKAGE
Default value: undef
Data type: Optional[String[1]]
Do not set PACKAGE_BUILDING
Default value: undef
Data type: Optional[String[1]]
HTTP proxy
Default value: undef
Data type: Optional[String[1]]
FTP proxy
Default value: undef
Data type: Optional[String[1]]
Cleanout the restricted packages
Default value: undef
Data type: Optional[String[1]]
Do not bound the number of processes to the number of cores
Default value: undef
List of packages that will always be allowed to use MAKE_JOBS regardless of ALLOW_MAKE_JOBS
Default value: undef
Data type: Optional[Enum['yes', 'no']]
Timestamp every line of build logs
Default value: undef
Data type: Optional[String[1]]
URL where your POUDRIERE_DATA/logs are hosted
Default value: undef
Data type: Optional[Integer[1]]
Set the max time (in seconds) that a command may run for a build before it is killed for taking too long
Default value: undef
Data type: Optional[Integer[1]]
Set the time (in seconds) before a command is considered to be in a runaway state for having no output on stdout
Default value: undef
Data type: Optional[Enum['yes', 'no']]
Update the repository atomically
Default value: undef
Data type: Optional[Enum['yes', 'no']]
When using ATOMIC_PACKAGE_REPOSITORY, commit the packages if some packages fail to build
Default value: undef
Data type: Optional[Enum['yes', 'no']]
Keep older package repositories
Default value: undef
Data type: Optional[Integer[1]]
How many old package repositories to keep with KEEP_OLD_PACKAGES
Default value: undef
Data type: Optional[Enum['yes', 'no']]
Make testing errors fatal
Default value: undef
Data type: Optional[String[1]]
Define the building jail hostname to be used when building the packages
Default value: undef
Data type: Optional[Enum['yes', 'no']]
Define to get a predictable timestamp on the ports tree
Default value: undef
Data type: Optional[String[1]]
Build and stage as a regular user
Default value: undef
Data type: Optional[String[1]]
Define to the username to build as when BUILD_AS_NON_ROOT is yes
Default value: undef
Data type: Optional[Integer[1]]
Define to the uid to use for PORTBUILD_USER if the user does not already exist in the jail
Default value: undef
Data type: Optional[String[1]]
Define pkgname globs to boost priority for
Default value: undef
Data type: Optional[String[1]]
Define format for buildnames
Default value: undef
Data type: Optional[String[1]]
Define format for build duration times
Default value: undef
Data type: Optional[Enum['yes', 'no']]
Use colors when in a TTY
Default value: undef
Data type: Optional[Enum['yes', 'no']]
Only build what is requested
Default value: undef
Data type: Optional[String[1]]
A list of directories to exclude from leftover and filesystem violation mtree checks
Default value: undef
Data type: Optional[Enum['hosted', 'inline']]
Set to hosted to use the /data directory instead of inline style HTML
Default value: undef
Data type: Optional[Enum['yes', 'no']]
Set to track remaining ports in the HTML interface
Default value: undef
Data type: Hash
Build environments to manage
Default value: {}
Data type: Hash
Port trees to manage
Default value: {}
Data type: String[1]
Package to install for cross-building packages
Default value: 'qemu-user-static'
Data type: Optional[String[1]]
Default value: undef
Install cross-building dependencies
This resource creates a build environment for a given release and architecture of FreeBSD. Passing in custom options gives you the ability to turn on and off certain features of your ports. Specific make options you would put in make.conf, you can pass here as well. Automatic periodic building of packages is managed with the cron_enable parameter
The following parameters are available in the poudriere::env
defined type:
version
ensure
makeopts
makefile
arch
jail
paralleljobs
pkgs
pkg_file
pkg_makeopts
pkg_optsdir
portstree
cron_enable
cron_always_mail
cron_interval
Data type: String[1]
Version of the jail
Data type: Enum['present', 'absent']
The desired state of this environment
Default value: 'present'
Data type: Array[String[1]]
Build options
Default value: []
Data type: Optional[String[1]]
Path to a Makefile
Default value: undef
Data type: Optional[Poudriere::Architecture]
Architecture of the jail
Default value: undef
Data type: String[1]
Name of the jail
Default value: $name
Data type: Integer[1]
Override the number of builders
Default value: $facts['processors']['count']
Data type: Array[String[1]]
List of packages to build
Default value: []
Data type: Optional[Stdlib::Absolutepath]
Puppet path to a list of packages to build
Default value: undef
Data type: Hash
Per package build options
Default value: {}
Data type: Optional[Stdlib::Absolutepath]
Path to a directory of build options
Default value: undef
Data type: String[1]
The port tree to use
Default value: 'default'
Data type: Boolean
Enable automatic updates
Default value: false
Data type: Boolean
Always send an e-mail on update
Default value: false
Data type: Poudriere::Cron_interval
Scheduling of automatic updates
Default value: { minute => 0, hour => 0, monthday => '*', month => '*', weekday => '*' }
This resource creates a ports tree. You can have multiple ports trees for different building purposes. Automatic periodic updating of packages is managed with the cron_enable parameter
The following parameters are available in the poudriere::portstree
defined type:
Data type: Enum['present', 'absent']
The desired state of this ports tree
Default value: 'present'
Data type: String[1]
Name of the ports tree
Default value: $name
Data type: Optional[String[1]]
Branch to checkout when using the svn or git methods
Default value: undef
Data type: Poudriere::Fetch_method
Specify which method to use to create the ports tree
Default value: 'svn'
Data type: Optional[Stdlib::Absolutepath]
Path to the source of a ports tree.
Default value: undef
Data type: Boolean
Enable automatic updates
Default value: false
Data type: Boolean
Always send an e-mail on update
Default value: false
Data type: Poudriere::Cron_interval
Scheduling of automatic updates
Default value: { minute => 0, hour => 22, monthday => '*', month => '*', week => '*' }
The architecture to target when building packages
- Note This list can be obtained from the FreeBSD src directory with
make targets | awk -F '( +|/)' 'NR > 1 { if ($2 == $3) { print $2 }; print $2"."$3 }'
Alias of
Enum['amd64', 'amd64.amd64', 'arm', 'arm.arm', 'arm.armv6', 'arm.armv7', 'arm64.aarch64', 'i386', 'i386.i386', 'mips.mipsel', 'mips', 'mips.mips', 'mips.mips64el', 'mips.mips64', 'mips.mipsn32', 'mips.mipselhf', 'mips.mipshf', 'mips.mips64elhf', 'mips.mips64hf', 'powerpc', 'powerpc.powerpc', 'powerpc.powerpc64', 'powerpc.powerpcspe', 'riscv.riscv64', 'riscv.riscv64sf', 'sparc64', 'sparc64.sparc64']
Parameters to configure Poudriere's cron resources
Alias of
Struct[{
minute => Optional[Variant[Integer, String]],
hour => Optional[Variant[Integer, String]],
monthday => Optional[String],
month => Optional[String],
week => Optional[String],
weekday => Optional[String],
}]
A supported fetch method for poudriere
Alias of
Enum['git', 'git+http', 'git+https', 'git+ssh', 'null', 'portsnap', 'svn', 'svn+file', 'svn+http', 'svn+https', 'svn+ssh']
A supported tmpfs setting for poudriere
Alias of
Variant[Enum[
'all',
'no',
'yes',
], Array[
Enum[
'data',
'localbase',
'wrkdir',
],
]]