TuxMake Python API
The public tuxmake API is provided by the tuxmake.build
module, and is
documented here.
The Build
class
tuxmake.build.Build
(tree='.', output_dir=None, build_dir=None, korg_toolchains_dir=None, target_arch=None, toolchain=None, wrapper=None, environment=None, kconfig='defconfig', kconfig_add=None, make_variables=None, targets=['config', 'kernel', 'xipkernel', 'modules', 'dtbs', 'dtbs-legacy', 'debugkernel', 'headers'], compression_type=None, kernel_image=None, jobs=None, runtime=None, fail_fast=False, verbose=False, quiet=False, debug=False, auto_cleanup=True)This class encapsulates a tuxmake build.
The class constructor takes in more or less the same parameters as the the command line API, and will raise an exception if any of the arguments, or combinarion of them, is not supported. For example, if you want to only validate a set of build arguments, but not actually run the build, you can just instantiate this class.
Only the methods and properties that are documented here can be considered as the public API of this class. All other methods must be considered as implementation details.
All constructor parameters are optional, and have sane defaults. They are:
- tree: the source directory to build. Defaults to the current directory.
- output_dir: directory where the build artifacts will be copied.
Defaults to a new directory under
~/.cache/tuxmake/builds
. - build_dir: directory where the build will be performed. Defaults to
a temporary directory under
output_dir
. An existing directory can be specified to do an incremental build on top of a previous one. - korg_toolchains_dir: directory where the kernel.org toolchain
tarballs will be cached. Defaults to
~/.cache/tuxmake/korg_toolchains
. - target_arch: target architecture name (
str
). Defaults to the native architecture of the hosts where tuxmake is running. - toolchain: toolchain to use in the build (
str
). Defaults to whatever Linux uses by default (gcc
). - wrapper: compiler wrapper to use (
str
). - environment: environment variables to use in the build (
dict
withstr
as keys and values). - kconfig: which configuration to build (
str
). Defaults todefconfig
. - kconfig_add: additional kconfig fragments/options to use. List of
str
, defaulting to an empty list. - make_variables: KEY=VALUE arguments to pass to
make
.dict
with strings as values and strings as keys. SomeKEY
s are now allowed, as they would interfere with the tuxmake normal operation(e.g.ARCH
,CC
,HOSTCC
, INSTALL_MOD_PATH,
INSTALL_DTBS_PATH,
O`, etc). - targets: targets to build, list of
str
. IfNone
or an empty list is passed, the default list of targets will be built. - compression_type: compression type to use in compressed artifacts.
str
, must be one of "xz", "none". - kernel_image: which kernel image to build, overriding the default kernel image name defined for the target architecture.
- jobs: number of concurrent jobs to run (as in
make -j N
).int
, defaults to the number of available CPU cores. - runtime: name of the runtime to use (
str
). - verbose: do a verbose build. The default is to do a silent build
(i.e.
make -s
). - quiet: don't show the build logs in the console. The build log is still saved to the output directory, unconditionally.
- debug: produce extra output for debugging tuxmake itself. This output will not appear in the build log.
- auto_cleanup: whether to automatically remove the build directory after the build finishes. Ignored if build_dir is passed, in which case the build directory will not be removed.
run
(self)Performs the build. After this method completes, the results of the
build can be inspected though the status
, passed
, and failed
properties.
status
A dictionary with target names (str
) as keys, and BuildInfo
objects
as values.
This property is only guaranteed to have a meaningful value after
run()
has been called.
passed
False
if any targets failed, True
otherwise.
This property is only guaranteed to have a meaningful value after
run()
has been called.
failed
True
if any target failed to build, False
otherwise.
This property is only guaranteed to have a meaningful value after
run()
has been called.
The BuildInfo
class
tuxmake.build.BuildInfo
(status, duration=None)Instances of this class represent the build results of each target (see
Build.status
).
status
The target build status. "PASS"
, "FAIL"
, or "SKIP"
.
duration
Time this target took to build; a float
, representing the duration in
seconds.
failed
True
if this target failed.
passed
True
if this target passed.
skipped
True
if this target was skipped.
The build
wrapper function
tuxmake.build.build
(**kwargs)This function instantiates a Build
objecty, forwarding all the options
received in **kwargs
. It hen calls run()
on that instance, and returns
it. It can be used as quick way of running a build and inspecting the
results.
For full control over the build, you will probably want to use the Build
class directly.