Skip to main content

Thin wrapper to build Linux kernels

Reason this release was yanked:

this was a release made to test the release process

Project description

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

Documentation - Repository - Issues

TuxMake, by Linaro, is a command line tool and Python library that provides portable and repeatable Linux kernel builds across a variety of architectures, toolchains, kernel configurations, and make targets. TuxMake is a part of TuxSuite, a suite of tools and services to help with Linux kernel development.

[[TOC]]

About TuxMake

Building Linux is easy, right? You just run "make defconfig; make"!

It gets complicated when you want to support the following combinations:

  • Architectures (arc, arm, arm64, i386, mips, parisc, powerpc, riscv, s390, sh, sparc, x86_64, etc)
  • Toolchains (gcc-8, gcc-9, gcc-10, clang-10, clang-11, clang-nightly, etc)
  • Configurations (defconfig, distro configs, allmodconfigs, randconfig, etc)
  • Targets (kernel image, documentation, selftests, perf, cpupower, etc)
  • Build-time validation (coccinelle, sparse checker, etc)

Each of those items requires specific configuration, and supporting all combinations is difficult. TuxMake seeks to simplify Linux kernel building by providing a consistent command line interface to each of those combinations listed above. You specify what to build at the command line, and TuxMake drives the build for you, doing the same steps the same way every time.

The real power comes from using TuxMake's curated, portable build environments distributed as Docker/Podman container images. When using these versioned and hermetic filesystem images, your team can use the same exact toolchain(s) across different workstation platforms. Reporting and reproducing build failures is trivial by sharing TuxMake command lines with others.

Installing TuxMake

There are several options for installing TuxMake:

Using TuxMake

To use TuxMake, navigate to a Linux source tree (where you might usually run make), and run tuxmake. By default, it will perform a defconfig build on your native architecture, using a default compiler (gcc).

The behavior of the build can be modified with command-line arguments. Run tuxmake --help to see all command-line arguments.

Examples

Build from current directory:

$ tuxmake

Build using Podman:

$ tuxmake --runtime podman

Build from specific directory:

$ tuxmake --directory /path/to/linux

Build an arm64 kernel:

$ tuxmake --target-arch=arm64

Build an arm64 kernel with gcc-10:

$ tuxmake --target-arch=arm64 --toolchain=gcc-10

Build an arm64 kernel with clang-10:

$ tuxmake --target-arch=arm64 --toolchain=clang-10

Build tinyconfig on arm64 with gcc-9:

$ tuxmake -a arm64 -t gcc-9 -k tinyconfig

Build defconfig with additional config from file:

$ tuxmake --kconfig-add /path/to/my.config

Build defconfig with additional config from URL:

$ tuxmake --kconfig-add https://foo.com/my.config

Build defconfig with additional in-tree config:

$ tuxmake --kconfig-add kvm_guest.config

Build defconfig with additional inline config:

$ tuxmake --kconfig-add CONFIG_KVM_GUEST=y

Build tinyconfig on arm64 with gcc-9 using docker:

$ tuxmake -r docker -a arm64 -t gcc-9 -k tinyconfig

Build DTBs on arm64 using podman:

$ tuxmake -r podman -a arm64 -t gcc-9 dtbs

Incremental builds can be done by reusing a build directory:

$ tuxmake --build-dir=/path/to/output
# hack on source ...
$ tuxmake --build-dir=/path/to/output
# only rebuilds what is needed

Using configuration files:

# reads command line options from ~/.config/tuxmake/myconfig
$ tuxmake @myconfig
# reads command line options from /tmp/myconfig
$ tuxmake @/tmp/myconfig

Display all options:

$ tuxmake --help

Contributing to TuxMake

See the Contribution Guidelines document for details in how to contribute to TuxMake. Contributors are expected to follow the TuxMake Code of Conduct (the same adopted in the Linux kernel community).

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

tuxmake-0.14.90.tar.gz (86.1 kB view details)

Uploaded Source

Built Distribution

tuxmake-0.14.90-py3-none-any.whl (44.6 kB view details)

Uploaded Python 3

File details

Details for the file tuxmake-0.14.90.tar.gz.

File metadata

  • Download URL: tuxmake-0.14.90.tar.gz
  • Upload date:
  • Size: 86.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for tuxmake-0.14.90.tar.gz
Algorithm Hash digest
SHA256 8185b41a67e4562ace8c9fab66bc86fd32ca326de4484406e30966be6ed9d5d9
MD5 abdb2fc9dbcec9ec93fe13b8780cb012
BLAKE2b-256 ba5a52c27aad1bac48f3b72972f2e5e1fd0e45169ec89a886cab1d6896a3db4b

See more details on using hashes here.

File details

Details for the file tuxmake-0.14.90-py3-none-any.whl.

File metadata

  • Download URL: tuxmake-0.14.90-py3-none-any.whl
  • Upload date:
  • Size: 44.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for tuxmake-0.14.90-py3-none-any.whl
Algorithm Hash digest
SHA256 26685b1569924fd4563a7294bedc627ad01dc99c1b1d5588aeea02027f2a73bc
MD5 e4d0a3b307d985854eb40a065b4b23ee
BLAKE2b-256 0d216c07b3495d3c431b29a4ac2af20ca1fb2a73002042ac3f4fd7e2e8c720ff

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page