openafs_build – Build OpenAFS binaries from source
Synopsis
Build OpenAFS server and client binaries from source code by running regen.sh
, configure
, and make
. The source code must be already present in the srcdir directory.
The openafs_build module will run the OpenAFS regen.sh
command to generate the configure
script when the configure
script is not already present in the srcdir.
Unless the configure_options option is specified, the configure command line arguments are determined automatically, based on the platform and openafs_build options.
The make
program is run to build the binaries. Unless the target options is specified, the make target is determined automatically.
A complete set of build log files are written on the logdir directory on the host for build troubleshooting.
Out-of-tree builds are supported by specifying a build directory with the builddir option.
git clean
is run in the srcdir when clean is true and a .git
directory is found in the srcdir
. When clean is true but a .git
directory is not found, then make clean
is run to remove artifacts from a previous build. When clean is true and an out-of-tree build is being done, all of the files and directories are removed from the builddir.
An installation file tree is created in the destdir directory when the target starts with install
or dest
. The files in destdir may be installed with the openafs_install_bdist module.
See the openafs_devel
role for tasks to install required build tools and libraries on various platforms.
Requirements
The below requirements are needed on the host that executes this module.
tools and libraries required to build OpenAFS
Parameters
- srcdir (True, path, None)
Source files must have been previously checkout or copied to this path.
- builddir (optional, path, <srcdir>)
The path for out-of-tree builds.
- logdir (optional, path, <srcdir>/.ansible)
The path to store build log files.
The logdir may be a subdirectory of the
srcdir
.The logdir may not be a subdirectory of the
builddir
when doing an out-of-tree build.- destdir (optional, path, <srcdir>/packages/dest)
The destination directory for
install
anddest
targets and variants.The tree staged in this directory may be installed with the openafs_install_bdist module.
- clean (optional, bool, False)
Run
git clean
in the srcdir when it contains a.git
directory, otherwise runmake clean
.Remove the builddir when using an out of tree build, that is the builddir is different than the srcdir.
A clean build should be done to force a complete rebuild.
The clean option will remove any new files you added manually on the remote node and did not commit when the srcdir is a git repository.
- make (optional, path, detect)
The
make
program to be executed.- jobs (optional, int, the number of CPUs on the system)
Number of parallel make processes.
Set this to 0 to disable parallel make.
- build_manpages (optional, bool, True)
Generate the man pages.
- build_userspace (optional, bool, True)
Build userspace programs and libraries.
- build_module (optional, bool, True)
Build the OpenAFS kernel module.
- build_terminal_programs (optional, bool, True)
Build curses-based terminal programs.
- build_bindings (optional, bool, True)
Build program language bindings with swig.
- build_fuse_client (optional, bool, True)
Build fuse client.
- with_version (optional, str, None)
Version string to embed in program files.
The version will be written to the
.version
file, overwritting the current contents, if any.- with_transarc_paths (optional, bool, False)
Build binaries which use the legacy Transarc-style paths.
- with_debug_symbols (optional, bool, True)
Include debug symbols and disable optimizations.
- with_rxgk (optional, bool, False)
Include rxgk support.
- configure_options (optional, raw, None)
The explicit
configure
command arguments. When present, this option overrides thebuild_*
andwith_*
options.May be specified as a string, list of strings, or a dictionary.
When specified as a dictionary, the values of the keys
enabled
,disabled
,with
, andwithout
may be lists.- configure_environment (optional, dict, None)
Extra environment variables to be set when running
configure
.- target (optional, str, detect)
The make target to be run.
The make target will be determined automatically when this option is omitted.
Examples
- name: Build OpenAFS from source
openafs_contrib.openafs.openafs_build:
srcdir: ~/src/openafs
- name: Build OpenAFS binaries for the current system.
openafs_contrib.openafs.openafs_build:
srcdir: ~/src/openafs
clean: yes
- name: Build OpenAFS legacy distribution
openafs_contrib.openafs.openafs_build:
srcdir: ~/src/openafs
clean: yes
with_transarc_paths: yes
- name: Build OpenAFS server binaries with custom install paths.
openafs_contrib.openafs.openafs_build:
srcdir: ~/src/openafs
clean: yes
target: install_nolibafs
destdir: packages/dest
configure_options:
prefix: /usr
bindir: /usr/bin
libdir: /usr/lib64
sbindir: /usr/sbin
disable:
- strip_binaries
- kernel_module
enable:
- debug
- redhat_buildsys
- transarc_paths
with:
- krb5: /path/to/krb5.lib
with_linux_kernel_packaging: true
with_swig: true
Return Values
- srcdir (always, string, /home/tycobb/projects/myproject)
Absolute path to the project directory.
- builddir (always, string, /home/tycobb/projects/myproject)
Absolute path to the build directory
- destdir (when destdir is specified, string, /home/tycobb/projects/myproject/packages/dest)
Absolute path to the installation files.
- logdir (, string, /home/tycobb/projects/myproject/.ansible)
Absolute path to the log files. May be used for openafs_install_bdist.
- logfiles (always, list, [‘/tmp/logs/build.log’, ‘/tmp/logs/make.out’, ‘/tmp/logs/make.err’])
Log files written for troubleshooting
- kmods (success, list, [‘/home/tycobb/projects/myproject/src/libafs/MODLOAD-5.1.0-SP/openafs.ko’])
The list of kernel modules built, if any.
Status
This module is not guaranteed to have a backwards compatible interface. [preview]
This module is maintained by community.