Skip to content

Support alternative develoment flow with less Nix#340

Merged
nspin merged 34 commits into
seL4:mainfrom
nspin:pr/test-runner
Apr 28, 2026
Merged

Support alternative develoment flow with less Nix#340
nspin merged 34 commits into
seL4:mainfrom
nspin:pr/test-runner

Conversation

@nspin
Copy link
Copy Markdown
Member

@nspin nspin commented Apr 28, 2026

The purpose of this PR is to enable a development flow that does not involve Nix in the the inner development loop.

Before this PR, running a test requires building it with Nix.

This PR adds an alternative development flow for most tests. Nix is used to build a tree of Cargo config.toml files that are linked at ./.cargo/gen/. ./.cargo/gen/target/*.toml contain configuration for a particular Rust toolchain target, and ./cargo/gen/world/*.toml contain configuration for a particular seL4/Microkit configuration. One can build crates that depend on seL4 using a pair of Cargo configuration files, one for a target and one for a seL4/Microkit configuration. For example:

cargo build \
    --config .cargo/gen/target/aarch64-sel4-microkit.toml \
    --config .cargo/gen/world/aarch64.microkitDefault.toml \
    -p tests-microkit-passive-server-with-deferred-action

The ./.cargo/gen/world/*.toml files also set build.*.runner to the new wrapper program sel4-test-runner, partially applied to some seL4/Microkit configuration-specific arguments. This wrapper program inspects the artifact it is to run to determine how to process it into an image that can be simulated by QEMU. For example, if it is a root task, it will be bundled into a sel4-kernel-loader image; if it is a Microkit protection domain, it will be bundled into a Micorkit system image using the Microkit tool. After it is processed into an image, that image will be run with QEMU.

This PR also adds utilities for tests to use to integrate with this way of being run. For example, macros useful for creating protection domain binaries which contain all of the test's protection domains.

This PR also contains many improvements and changes throughout the project to enable this new development flow.

nspin added 30 commits April 28, 2026 01:06
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Signed-off-by: Nick Spinale <nick@nickspinale.com>
nspin added 3 commits April 28, 2026 01:10
https://rustsec.org/advisories/RUSTSEC-2026-0104
Signed-off-by: Nick Spinale <nick@nickspinale.com>
Address warning from cargo-audit

Signed-off-by: Nick Spinale <nick@nickspinale.com>
Work around memory corruption bug in sdfgen

Signed-off-by: Nick Spinale <nick@nickspinale.com>
Instead of from dev environment

Signed-off-by: Nick Spinale <nick@nickspinale.com>
@nspin nspin merged commit 5c9b345 into seL4:main Apr 28, 2026
14 checks passed
@nspin nspin deleted the pr/test-runner branch April 28, 2026 09: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.

1 participant