Support other runners
At the moment shrinkwrap only supports running the software stack on the fast model. This series adds support for running on other platforms: initially QEMU (TCG) but opening the way for other platforms such as QEMU-KVM, kvmtool, FPGAs etc.
Introduce the concept of "runners". The default is FVP, and existing configs do not need changes. Additional runners are added under the run.runners
and buildex.runners
sections, and the runner used is specified by run.runner
.
To use the QEMU runner:
shrinkwrap build cca-3world.yaml -o qemu/cca.yaml
shrinkwrap run cca-3world.yaml
shrinkwrap run cca-3world.yaml -o qemu/multi-term.yaml # to spawn multiple terminals
This uses the base config cca-3world.yaml so that, if building without the qemu/cca.yaml
overlay, large components like Linux and Buildroot are kept. Only the components specific to the runner platform like TF-A, RMM and EDKII, which are specified in the runners
sections, are rebuilt. The goal is to run multiplatform software components under different runners without rebuilding them, which can be useful during development and testing.
Note that transitioning between runners isn't entirely seamless at the moment: the RMM build dir must be removed manually to clear cached configuration, and edk2 needs --force-sync.