Skip to main content

The fun Linux kernel builder

Project description

TuxBuild Logo


Pipeline Status coverage report PyPI version Docker Pulls Code style: black PyPI - License

The fun Linux kernel builder

TuxBuild is a cloud-native highly concurrent Linux build service.

tuxbuild screencast

Status: Early Access

Tuxbuild is currently under active development, but we want to hear from you! If you are interested in joining the waiting list, or have questions, feedback, or feature requests, please email us at

Install Using PIP

TuxBuild requires Python version 3.6 or greater, and is available using pip.

To install tuxbuild on your system globally:

sudo pip3 install -U tuxbuild

To install tuxbuild to your home directory at ~/.local/bin:

pip3 install -U --user tuxbuild

To upgrade tuxbuild to the latest version, run the same command you ran to install it.

Install Using Docker

TuxBuild is also available as a docker container at tuxbuild/tuxbuild.

For example, to run tuxbuild via docker:

docker run tuxbuild/tuxbuild tuxbuild build --help


The Authentication token needs to be stored in ~/.config/tuxbuild/config.ini. The minimal format of the ini file is given below:

$ cat ~/.config/tuxbuild/config.ini

Alternatively, the TUXBUILD_TOKEN environment variable may be provided.


Tuxbuild one-off

Submit a build request using the tuxbuild command line interface. This will wait for the build to complete before returning by default.

tuxbuild build --git-repo '' --git-ref master --target-arch arm64 --kconfig defconfig --toolchain gcc-9

Tuxbuild set

Create a tuxbuild config file with a basic set of build combinations defined.

cat <<EOF > basic.yaml
  - name: basic
      - {target_arch: arm64, toolchain: gcc-9, kconfig: defconfig}
      - {target_arch: arm64, toolchain: gcc-9, kconfig: allmodconfig}
      - {target_arch: arm64, toolchain: gcc-9, kconfig: allyesconfig}
      - {target_arch: arm, toolchain: gcc-9, kconfig: allmodconfig}
      - {target_arch: x86, toolchain: gcc-9, kconfig: allmodconfig}
      - {target_arch: x86, toolchain: clang-9, kconfig: allmodconfig}
      - {target_arch: x86, toolchain: gcc-9, kconfig: allyesconfig}
      - {target_arch: i386, toolchain: gcc-9, kconfig: allmodconfig}
      - {target_arch: riscv, toolchain: gcc-9, kconfig: allyesconfig}
# Build the build set defined in the config file named 'basic.yaml'
tuxbuild build-set --git-repo '' --git-ref master --tux-config basic.yaml --set-name basic

All the parameters can be specified in the build-set itself and invoke tuxbuild "tuxbuild build-set --tux-config <basic>.yaml --set-name <set-name>"

Argument Reference


target_arch supports arm64, arm, x86, i386, mips, arc, riscv


toolchain supports gcc-8, gcc-9, clang-8, clang-9


The kconfig argument is a string or a list of strings that are used to define what kernel config to use.

The first argument must be a defconfig argumnet that ends in "config", such as "defconfig" or "allmodconfig".

Subsequent arguments may be specified to enable/disable individual config options, an config fragment that exists in tree at kernel/configs/, or a url to an externally hosted config fragment.

All config options and fragments specified will be merged in the order that they are specified.

kconfig Examples

Simple defconfig build:

  • tuxbuild --kconfig defconfig ...
  • yaml (string): kconfig: defconfig
  • yaml (list): kconfig: [defconfig]

Enable or disable individual options:

  • tuxbuild --kconfig defconfig --kconfig "CONFIG_COMPILE_TEST=y" --kconfig "CONFIG_PROFILE_ALL_BRANCHES=n"
  • yaml: kconfig: [defconfig, "CONFIG_COMPILE_TEST=y", "CONFIG_PROFILE_ALL_BRANCHES=n"]

Using external fragment files:

  • tuxbuild --kconfig defconfig --kconfig ""
  • yaml: kconfig: [defconfig, ""]

Using in-tree fragment files. The file referenced needs to exist in kernel/configs/:

  • tuxbuild --kconfig defconfig --kconfig "kvm_guest.config"
  • yaml: kconfig: [defconfig, "kvm_guest.config"]

All of these options can be combined. They will be merged in the order they are specified:

  • tuxbuild --kconfig allnoconfig --kconfig "kvm_guest.config" --kconfig "" --kconfig CONFIG_COMPILE_TEST=y --kconfig "CONFIG_PROFILE_ALL_BRANCHES=n"
  • yaml:
  - allnoconfig
  - kvm_guest.configs


The kconfig_allconfig argument is a string that is used to pass a filename to be used with allyesconfig/allmodconfig/allnoconfig/randconfig kconfig parameter.

The parameter can not be used with any other defconfig.

The argument is passed as an environment variable to the make command as "KCONFIG_ALLCONFIG=<argument>".


  • tuxbuild --kconfig allmodconfig --kconfig-allconfig "arch/arm64/configs/defconfig"


If you have any questions or concerns, please email them to Please include the build ID with any build-specific questions.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for tuxbuild, version 0.2.2
Filename, size File type Python version Upload date Hashes
Filename, size tuxbuild-0.2.2-py3-none-any.whl (11.3 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size tuxbuild-0.2.2.tar.gz (35.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page