The file portshaker.conf
contains descriptive
information about which source ports trees
portshaker(8)
has to be merged into which target ports trees.
Options are set with
“name=
value”
assignments that use
sh(1)
syntax. The following list provides a name and short description for each
variable that can be set in the portshaker.conf
file:
- mirror_base_dir
- (str) Base directory where
portshaker(8)
will fetch source ports trees.
- ports_trees
- (str) Set to the list of
target ports trees to maintain.
A
⟨target⟩_ports_tree
or a
⟨target⟩_poudriere_tree
variable must be set to tell
portshaker(8)
where the ports trees has to be merged to and a
⟨target⟩_merge_from
variable must be set to the list of source ports
trees to merge from.
When specifying a
⟨target⟩_ports_tree,
it should be set to the full path of the directory where the
target ports tree is located.
When specifying a
⟨target⟩_poudriere_tree,
it should be set to the name of the ports tree
that will be later-on used with
poudriere(8).
⟨target⟩_ports_tree
and
⟨target⟩_poudriere_tree
are mutually exclusive.
If the source ports tree name contains
colons, they are replaced by spaces and
portshaker(8)
will pass these extra argument to the script named by the first
component. This allowing some kind of factorisation for multiple sources
in a single repository.
If a source ports tree is known to
provide ports that are already provided in another ports tree, and while
both ports provide the same version of a software package they do not
contain the same files,
portshaker(8)
can be told to automatically install the updated ports without prompting
the user by appending an exclamation mark after the
source ports tree name.
Alternatively, appending a plus sign after the
source ports tree name will, regardless of
version, install or replace matching files in the
target port tree whilst preserving any
pre-existing non matching port files. This is useful when the
source ports tree contains an incomplete subset of
files for instance only local patches.
- fail_on_conflict
- (bool) Fail if a merge conflict is encountered.
- poudriere_dataset
- (string) The ZFS filesystem
poudriere(8)
is configured to use.
- poudriere_ports_mountpoint
- (string) The directory where
poudriere(8)
ports directory are mounted, usually
/usr/local/poudriere/ports.
- source_zfs_compression
- (string) ZFS compression to use when creating a
source ports tree (require
use_zfs to be set). Defaults to
lz4.
- target_zfs_compression
- (string) ZFS compression to use when creating a
target ports tree (require
use_zfs to be set). Defaults to
off.
- use_zfs
- (bool) Whether to use ZFS for cloning the first
source ports tree to the
target ports tree.
When set, the mirror_base_dir directory
should be a ZFS filesystem for
portshaker(8)
to create new ZFS filesystems automatically (one per
source ports tree); otherwise the ZFS filesystem
shall be created by the user before running
portshaker(8)
for the first time.
A
⟨target⟩_zfs_dataset
variable can be used to control the ZFS dataset used for the filesystem.
By default, a dataset with the name of the target
ports tree is created as a child of the dataset of the
target ports tree's parent directory's dataset
(i.e. if the /usr filesystem's dataset is
data/foo, then the dataset for the
/usr/ports directory will be
data/foo/ports). This requires the
target ports tree's parent directory to be a ZFS
filesystem.
When using this option, you may want to set
DISTDIR and PACKAGES in
/etc/make.conf in order to avoid lossing distfiles
and packages each time you merge your target ports
tree.
- verbose
- (int) Default verbosity level,
0 if unspecified.
Hooks for
portshaker(8)
can be defined in portshaker.conf
as functions named
⟨port_tree⟩_pre⟨action⟩()
and
⟨port_tree⟩_post⟨action⟩()
where action is one of update or
merge.
To maintain a single ports tree with BSD# ports:
ports_trees="main"
main_ports_tree="/usr/ports"
main_merge_from="ports bsd_sharp"
To configure a tinderbox with official ports tree (tb_official), a
second one with BSD# ports tree (tb_bsd_sharp), a third one with GNOME-devel
ports tree (tb_gnome) and a last one with both upcomming BSD# and GNOME
(tb_bsd_sharp_gnome):
ports_trees="tb_official tb_bsd_sharp tb_gnome tb_bsd_sharp_gnome"
tb="/usr/local/tinderbox/"
tb_official_ports_tree="${tb}/portstrees/FreeBSD/ports"
tb_official_merge_from="ports"
tb_bsd_sharp_ports_tree="${tb}/portstrees/BSD-sharp/ports"
tb_bsd_sharp_merge_from="ports bsd_sharp"
tb_gnome_ports_tree="${tb}/portstrees/GNOME/ports"
tb_gnome_merge_from="ports gnomedevel"
tb_bsd_sharp_gnome_ports_tree="${tb}/portstrees/BSD-sharp-gnome/ports"
tb_bsd_sharp_gnome_merge_from="ports bsd_sharp gnomedevel"
To merge multiples redports sources in a single target ports
tree:
ports_trees="main"
main_ports_tree="/usr/ports"
main_merge_from="ports redports:foo redports:bar"
Romain Tartière
⟨romain@blogreen.org⟩