Skip to content

Conversation

@roxell
Copy link
Contributor

@roxell roxell commented Jan 12, 2026

TuxMake is a thin wrapper around the kernel build system that provides
consistent toolchain handling and build configuration. This series introduces a
backend selection mechanism and implements full TuxMake support including
configuration fragments, firmware handling, and dtbs_check builds.

Add tuxmake kernel build tool to the kernelci Docker fragment
to enable kernel building with tuxmake. Pin to version 1.34.0
for reproducibility.

Reviewed-by: Ben Copeland <[email protected]>
Signed-off-by: Anders Roxell <[email protected]>
@roxell roxell force-pushed the add-tuxmake-backend branch from 7634896 to 8f4848a Compare January 12, 2026 17:37
@nuclearcat
Copy link
Member

nuclearcat commented Jan 13, 2026

At first glance, this is a wonderful PR - thank you for the excellent work. Staging tests show no breakage; however, we should enable at least one build in the pipeline using TuxMake to properly validate it.

The kbuild system only supported make-based kernel builds. To enable
alternative build systems, we needed a way to select different backends
while keeping the existing code working.

Added a 'backend' parameter that defaults to 'make' for compatibility.
Extracted the make build logic from _generate_script() into a dedicated
_build_with_make() method so different backends can have their own build
implementations.

Reviewed-by: Ben Copeland <[email protected]
Signed-off-by: Anders Roxell <[email protected]>
KernelCI needed to support tuxmake, a thin wrapper around the kernel
build system that provides consistent toolchain handling and build
configuration.

Add USE_TUXMAKE=1 environment variable for backward compatibility.
Refactor _parse_fragments() to return a list of fragment file paths
instead of a count, and update _merge_frags() to accept this list.
Add _build_with_tuxmake() method with basic tuxmake invocation. Only
call _merge_frags() for make backend since tuxmake handles fragments
differently via --kconfig-add, which is added in the next commit.

Reviewed-by: Ben Copeland <[email protected]
Signed-off-by: Anders Roxell <[email protected]>
Switch to using TuxMake's native --kconfig-add parameter for applying
configuration fragments instead of manually merging them.

Use --kconfig-add for fragment support and add --output-dir to specify
where tuxmake should place build artifacts. Build the dtbs target for
architectures that support it. Call _fetch_firmware() for builds that
need firmware. Raise an error on multiple defconfigs since tuxmake only
supports one. Warn when kselftest is requested as it is not supported
by tuxmake. Handle ChromeOS defconfig specially by pre-creating the
.config file.

Reviewed-by: Ben Copeland <[email protected]
Signed-off-by: Anders Roxell <[email protected]>
Add dtbs_check support to the TuxMake backend. When dtbs_check parameter
is True, the backend now runs ONLY the dtbs_check target, matching the
behavior of the make backend.

Reviewed-by: Ben Copeland <[email protected]
Signed-off-by: Anders Roxell <[email protected]>
@roxell roxell force-pushed the add-tuxmake-backend branch from 8f4848a to 350db6b Compare January 14, 2026 17:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants