The fun Linux kernel development service
Project description
Documentation - Repository - Issues
TuxSuite, by Linaro, is a suite of tools and services to help with Linux kernel development. The TuxSuite CLI (this repo) is the supported interface to TuxBuild and TuxTest.
To request access, email us at tuxsuite@linaro.org or fill out our access request form.
[[TOC]]
Introduction
The TuxSuite CLI supports two services: TuxBuild and TuxTest.
TuxBuild
TuxBuild is an on demand API for building massive quantities of Linux kernels in parallel. It is used at scale in production by LKFT and ClangBuiltLinux as well as many individual Linux kernel engineers.
TuxBuild is accessed by running tuxsuite build
and tuxsuite build-set
.
TuxTest
TuxTest is an on demand API for testing Linux kernels reliably and quickly. It is currently in Beta phase and is already available to TuxBuild users.
Install and Configure
Install using pip
TuxSuite requires Python version 3.6 or greater, and is available using pip.
To install tuxsuite on your system globally:
sudo pip3 install -U tuxsuite
To install tuxsuite to your home directory at ~/.local/bin:
pip3 install -U --user tuxsuite
To upgrade tuxsuite to the latest version, run the same command you ran to install it.
Install using docker
tuxsuite is also available as a docker container at tuxsuite/tuxsuite.
For example, to run tuxsuite via docker:
docker run tuxsuite/tuxsuite tuxsuite build --help
Setup Config
The Authentication token needs to be stored in ~/.config/tuxsuite/config.ini
.
The minimal format of the ini file is given below:
$ cat ~/.config/tuxsuite/config.ini
[default]
token=vXXXXXXXYYYYYYYYYZZZZZZZZZZZZZZZZZZZg
Alternatively, the TUXSUITE_TOKEN
environment variable may be provided.
If you do not have a tuxsuite token, please reach out to us at tuxsuite@linaro.org.
Examples
tuxsuite build
Submit a build request using the tuxsuite command line interface. This will wait for the build to complete before returning by default.
tuxsuite build --git-repo 'https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git' --git-ref master --target-arch arm64 --kconfig defconfig --toolchain gcc-9
tuxsuite build-set
Create a tuxsuite config file with a basic set of build combinations defined.
cat <<EOF > basic.yaml
sets:
- name: basic
builds:
- {target_arch: arm, toolchain: gcc-9, kconfig: multi_v7_defconfig}
- {target_arch: arm, toolchain: gcc-10, kconfig: multi_v7_defconfig}
- {target_arch: arm, toolchain: clang-10, kconfig: multi_v7_defconfig}
- {target_arch: arm64, toolchain: gcc-9, kconfig: defconfig}
- {target_arch: arm64, toolchain: gcc-10, kconfig: defconfig}
- {target_arch: arm64, toolchain: clang-10, kconfig: defconfig}
- {target_arch: i386, toolchain: gcc-9, kconfig: defconfig}
- {target_arch: i386, toolchain: gcc-10, kconfig: defconfig}
- {target_arch: x86_64, toolchain: gcc-9, kconfig: defconfig}
- {target_arch: x86_64, toolchain: gcc-10, kconfig: defconfig}
- {target_arch: x86_64, toolchain: clang-10, kconfig: defconfig}
- {target_arch: arc, toolchain: gcc-10, kconfig: hsdk_defconfig}
- {target_arch: riscv, toolchain: gcc-10, kconfig: defconfig}
- {target_arch: mips, toolchain: gcc-10, kconfig: ci20_defconfig}
EOF
# Build the build set defined in the config file named 'basic.yaml'
tuxsuite build-set --git-repo 'https://git.kernel.org/pub/scm/linux/kernel/git/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 tuxsuite tuxsuite build-set --tux-config <basic>.yaml --set-name <set-name>
tuxsuite plan
Submit a plan request sing the tuxsuite command line interface. The plan file describe the list of builds along with the tests to run for each successful builds. When one build is finished, the corresponding test is autmatically started.
Create a plan configuration file:
version: 1
name: kernel validation
description: Build and test linux kernel with every toolchains
jobs:
- builds:
- {toolchain: gcc-8, target_arch: arm64, kconfig: defconfig}
- {toolchain: gcc-9, target_arch: arm64, kconfig: defconfig}
- {toolchain: gcc-10, target_arch: arm64, kconfig: defconfig}
- {toolchain: clang-10, target_arch: arm64, kconfig: defconfig}
- {toolchain: clang-11, target_arch: arm64, kconfig: defconfig}
- {toolchain: clang-12, target_arch: arm64, kconfig: defconfig}
- {toolchain: clang-nightly, target_arch: arm64, kconfig: defconfig}
test: {device: qemu-arm64, tests: [ltp-smoke]}
- builds:
- {toolchain: gcc-8, target_arch: i386, kconfig: defconfig}
- {toolchain: gcc-9, target_arch: i386, kconfig: defconfig}
- {toolchain: gcc-10, target_arch: i386, kconfig: defconfig}
- {toolchain: clang-10, target_arch: i386, kconfig: defconfig}
- {toolchain: clang-11, target_arch: i386, kconfig: defconfig}
- {toolchain: clang-12, target_arch: i386, kconfig: defconfig}
- {toolchain: clang-nightly, target_arch: i386, kconfig: defconfig}
test: {device: qemu-i386, tests: [ltp-smoke]}
- builds:
- {toolchain: gcc-8, target_arch: x86_64, kconfig: defconfig}
- {toolchain: gcc-9, target_arch: x86_64, kconfig: defconfig}
- {toolchain: gcc-10, target_arch: x86_64, kconfig: defconfig}
- {toolchain: clang-10, target_arch: x86_64, kconfig: defconfig}
- {toolchain: clang-11, target_arch: x86_64, kconfig: defconfig}
- {toolchain: clang-12, target_arch: x86_64, kconfig: defconfig}
- {toolchain: clang-nightly, target_arch: x86_64, kconfig: defconfig}
test: {device: qemu-x86_64, tests: [ltp-smoke]}
Submit the plan with:
tuxsuite plan --git-repo https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git --git-ref master plan.yaml
tuxsuite test
Submit a test request using the tuxsuite command line interface. This will wait for the test to complete before returning.
tuxsuite test --device qemu-x86_64 --kernel https://storage.tuxboot.com/x86_64/bzImage --tests ltp-smoke
tuxsuite results
The results
sub-command provide a way to get the status of a
build/test/plan that has been previously submitted.
The results
sub-command when invoked without any arguments shows the
latest builds, tests and plans that has been previously submitted by
the user.
tuxsuite results
The build
option fetches the results
of the build
based on the
given uid
tuxsuite results --build 1t26TJROt6zoxIw3YS2OlMXMGzK
The test
option fetches the results
of the test
based on the
given uid
tuxsuite results --test 1s20dnMkE94e3BHW8pEbOWuyL6z
The plan
option fetches the results
of the plan
based on the
given uid
tuxsuite results --plan 1t2UxTeU15WDwvhloPFUqjmr3CX
Projects and Developers using tuxsuite
- LKFT - Linaro's Linux Kernel Functional Testing uses tuxsuite with gitlab-ci to continuously build upstream Linux kernels. The kernels are then functionally tested on a variety of hardware using LAVA.
- ClangBuiltLinux uses TuxBuild to validate hundreds of combinations of Linux kernels and LLVM environments.
- Lee Jones uses a GitLab CI pipeline to validate his 3.18 kernel maintainership. The gitlab pipeline, tuxsuite config, and README.md documenting its setup are defined in the kernel-pipeline repository.
Community and Support
The TuxSuite team may be engaged through chat, email, or gitlab issues.
To chat with us, join our public Discord, or our IRC channels #tuxsuite and #tuxmake on Libera Chat.
Questions, comments or feedback are always welcome by private email at tuxsuite@linaro.org.
Finally, gitlab issues are used to track bugs and feature requests in both tuxsuite and tuxmake projects.
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.
Source Distribution
Built Distribution
File details
Details for the file tuxsuite-0.32.0.tar.gz
.
File metadata
- Download URL: tuxsuite-0.32.0.tar.gz
- Upload date:
- Size: 125.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.7.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ec830f533d4d8c0cdb47d31ea0b0f6f70c7bf479b23f9d5077c00a1bb2cd4cb |
|
MD5 | 95e88ec9009b925ddc0d25027f047647 |
|
BLAKE2b-256 | 21f89ee5cbdf45ac2f5eb5e907bc60239f8efc8a02be016fc79e803769040756 |
File details
Details for the file tuxsuite-0.32.0-py3-none-any.whl
.
File metadata
- Download URL: tuxsuite-0.32.0-py3-none-any.whl
- Upload date:
- Size: 49.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.7.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10afc132c8624e98e372659b27486f7fc804f04ebd357d012a589b85644ebd7d |
|
MD5 | ae9672def198b2a65464e415cfe76761 |
|
BLAKE2b-256 | 4392d98448e4cdcb1c616e252704e0acf6bcad4c7a17944e2878872006b5f4c7 |