TuxBuild - The fun Linux kernel builder
Project description
Tuxbuild
The fun Linux kernel builder
TuxBuild is a cloud-native highly concurrent Linux build service.
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 tuxbuild@linaro.org.
Install & Setup
Install
Clone and install using pip3. --user will install it to ~/.local/bin (add it to your PATH), and -e links it to the live git repo, so that tuxbuild can be updated simply with "git pull".
git clone https://gitlab.com/Linaro/tuxbuild.git
cd tuxbuild
pip3 install --user -e .
Setup
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
[default]
token=vXXXXXXXYYYYYYYYYZZZZZZZZZZZZZZZZZZZg
Alternatively, the TUXBUILD_TOKEN
environment variable may be provided.
Examples
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 'https://github.com/torvalds/linux.git' --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
sets:
- name: basic
builds:
- {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}
EOF
# Build the build set defined in the config file named 'basic.yaml'
tuxbuild build-set --git-repo 'https://github.com/torvalds/linux.git' --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 .yaml --set-name "
Argument Reference
target_arch
target_arch supports arm64
, arm
, x86
, i386
, mips
, arc
, riscv
toolchain
toolchain supports gcc-8
, gcc-9
, clang-8
, clang-9
kconfig
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 "https://gist.githubusercontent.com/danrue/9e1e4d90149daadd5199256cc18a0499/raw/752138764ec039e4593185bfff888250a3d7692f/gistfile1.txt"
- yaml:
kconfig: [defconfig, "https://gist.githubusercontent.com/danrue/9e1e4d90149daadd5199256cc18a0499/raw/752138764ec039e4593185bfff888250a3d7692f/gistfile1.txt"]
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 "https://gist.githubusercontent.com/danrue/9e1e4d90149daadd5199256cc18a0499/raw/752138764ec039e4593185bfff888250a3d7692f/gistfile1.txt" --kconfig CONFIG_COMPILE_TEST=y --kconfig "CONFIG_PROFILE_ALL_BRANCHES=n"
- yaml:
kconfig:
- allnoconfig
- kvm_guest.configs
- https://gist.githubusercontent.com/danrue/9e1e4d90149daadd5199256cc18a0499/raw/752138764ec039e4593185bfff888250a3d7692f/gistfile1.txt
- CONFIG_COMPILE_TEST=y
- CONFIG_PROFILE_ALL_BRANCHES=n
Support
If you have any questions or concerns, please email them to tuxbuild@linaro.org. Please include the build ID with any build-specific questions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.