Introduction
bconf is meant to be used by different kind of actors. The main one is the software developer, who writes the rules because well, he is the one writing the software. The second role is the code owner, it designates the person who creates the source code release, and uses bconf to generate the configure script that will ship to the end-user. The last role is the package maintainer, which is a wide term for the person using the source code release created by the previous code owner. The package maintainer uses bconf when he builds the source code on his local machine (or a more complex automated infrastructure).
Software developer
The software developer is the role who will spend the most
time with bconf, because he is the one responsible of describing
how the source code is built, and what are the configuration options.
He will use bconf like a code owner in the sens that he will
use the mkconf
tool to perform local builds and iterate.
This user guide is mainly aimed at software developers.
The software developer must:
- Describe the build configuration, using the
bconf
file. - Describe the GNUmakefile targets and rules, using the
bconf.mk
file.
Code owner
The code owner is the one person (or automated infrastructure)
who performs the operation of creating a source release tarball
from the SCM.
In a manner reminiscent of autoreconf
, he must perform
the mkconf
command to create the configure
script
which will ship with the source release tarball.
The mkconf
command cannot just be typed randomly.
The code owner must choose a template set compatible with the source code.
See the chapter dedicated to template sets for more informations.
He may also specify the name and the version of the package, which
will be forwarded to bconf.mk
through the variable $(package-name)
and $(package-version)
.
Note the software developer must also perform the previous tasks for local builds,
even though the name is usually inferred from the source directory name, and the version is unused.
The code owner must:
- Specify the package name, version and description.
- Generate the
configure
script for package maintainers.
Package maintainer
The package maintainer is the one person (or automated infrastructure)
who uses the source code release created by the code owner.
Basically, the package maintainer shouldn't have to install anything
apart from GNU make. He will interact with the configure
script,
specifying options and relaying environment variables.
The configure
script in turn generates the GNUmakefile
which will rely on the bconf.mk
definitions and allow
simple usage of the command make
to compile, test, install, etc...
The package maintainer must:
- Extract the archive, patch, configure, build and install sources without installing non-POSIX utility.
- Change, enable or disable package features when calling the
configure
script.