feat: Use more generic ITF QEMU plugin - #177
Conversation
License Check Results🚀 The license check job ran with the Bazel command: bazel run //:license-checkStatus: Click to expand output |
|
The created documentation from the pull request is available at: docu-html |
3ab298b to
f181495
Compare
There was a problem hiding this comment.
Pull request overview
This PR migrates Linux/QNX QEMU-backed integration testing from the repo’s custom linux_qemu plugin to the upstream ITF QEMU plugin, and extends the integration test setup to support an additional EB Linux (EBcLfSA) aarch64 QEMU environment (including image preparation and CI tooling).
Changes:
- Replace the custom Linux QEMU pytest plugin with the upstream ITF QEMU plugin and adjust the integration-test macro accordingly.
- Add EBcLfSA aarch64 QEMU environment + image build pipeline and a corresponding integration test target wiring.
- Update Ubuntu QEMU image preparation, CI runner dependencies, and devcontainer dependencies to support the new ITF-based flow.
Reviewed changes
Copilot reviewed 25 out of 26 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| third_party/score_itf-qemu-ping-timeout.patch | Patch applied to score_itf to increase QEMU ping timeout. |
| REUSE.toml | Add REUSE path coverage for new EBcLfSA QEMU environment files. |
| quality/README.md | Update docs to reflect using the upstream ITF QEMU plugin and rootfs overlay approach. |
| quality/integration_testing/test/example-app-aarch64.sh | Add aarch64 shell variant of the example app for EBcLfSA image. |
| quality/integration_testing/test/example-app2-aarch64.sh | Add companion aarch64 script that waits for the signal file. |
| quality/integration_testing/test/BUILD | Add EBcLfSA packaging + ITF QEMU invocation targets for Linux/QNX. |
| quality/integration_testing/plugins/linux_qemu/README.md | Remove documentation for the deleted custom Linux QEMU plugin. |
| quality/integration_testing/plugins/linux_qemu/qemu.py | Remove custom QEMU launcher implementation. |
| quality/integration_testing/plugins/linux_qemu/qemu_test.py | Remove unit tests for the deleted custom QEMU launcher. |
| quality/integration_testing/plugins/linux_qemu/qemu_process.py | Remove custom QEMU process wrapper. |
| quality/integration_testing/plugins/linux_qemu/config.py | Remove custom config loader/validators for the deleted plugin. |
| quality/integration_testing/plugins/linux_qemu/BUILD | Remove Bazel targets for the deleted plugin and its tests. |
| quality/integration_testing/plugins/linux_qemu/init.py | Remove the custom pytest plugin entrypoint and deployment logic. |
| quality/integration_testing/integration_testing.bzl | Switch macro wiring to ITF QEMU plugin + rootfs overlay generation. |
| quality/integration_testing/images/ebclfsa_aarch64/config-overlay/etc/config/network/network | Add EBcLfSA network configuration overlay content. |
| quality/integration_testing/images/ebclfsa_aarch64/BUILD | Add Bazel genrules to extract and produce EBcLfSA QEMU image/kernel artifacts. |
| quality/integration_testing/environments/ubuntu24_04_qemu/user-data | Update cloud-init template to the new rendered/user-data flow. |
| quality/integration_testing/environments/ubuntu24_04_qemu/qemu_config.json | Update QEMU config keys to match ITF expectations (qemu_machine). |
| quality/integration_testing/environments/ubuntu24_04_qemu/prepare_image.sh | Remove old local Ubuntu base-image preparation script. |
| quality/integration_testing/environments/ubuntu24_04_qemu/BUILD | Switch Ubuntu image build to ITF-provided scripts/rendering. |
| quality/integration_testing/environments/ebclfsa_aarch64_qemu/qemu_config.json | Add EBcLfSA aarch64 QEMU config (machine + kernel cmdline). |
| quality/integration_testing/environments/ebclfsa_aarch64_qemu/BUILD | Add EBcLfSA environment exports + aliases to image/kernel. |
| MODULE.bazel.lock | Update Bzlmod lockfile (needs regeneration consistency with overrides). |
| MODULE.bazel | Add score_itf git override + patch; add EBcLfSA fastdev image http_file. |
| .github/workflows/build_and_test_host.yml | Install additional QEMU/libguestfs deps and adjust runner permissions for supermin. |
| .devcontainer/Dockerfile | Add QEMU/libguestfs/kernel-related packages for local dev/testing parity. |
Suppressed comments (1)
quality/integration_testing/environments/ubuntu24_04_qemu/user-data:60
passwd -d rootdoes not reliably unlock the root account on Ubuntu cloud images (it can remain locked even with an empty password). Add an explicit unlock (passwd -u root) to ensure the ITF SSH checks can authenticate.
passwd -d root
grep -q 'pam_unix\.so.*nullok' /etc/pam.d/common-auth ||
sed -i 's/\(pam_unix\.so\)/\1 nullok/' /etc/pam.d/common-auth
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| RUN apt-get update && apt-get install -y qemu-system-x86 iputils-ping tcpdump cloud-image-utils libguestfs-tools linux-image-$(uname -r) \ | ||
| && chmod o+r /boot/vmlinuz-* |
There was a problem hiding this comment.
Still unsure if the chosen method to copy files into images will stay due to kernel requirement.
| git_override( | ||
| module_name = "score_itf", | ||
| commit = "a90575b5c2c491652d2d715d624774509c6a13c2", | ||
| patch_strip = 1, | ||
| patches = ["//:third_party/score_itf-qemu-ping-timeout.patch"], | ||
| remote = "https://github.com/elektrobit-contrib/eclipse-score_itf.git", | ||
| ) |
For running EB Linux and Ubuntu the ITF QEMU plugin needed features like
Which are added with
See also my other prototype where I use some older code of this to run EB Linux in reference_integration: elektrobit-contrib/eclipse-score_reference_integration#3
The goal of this pull request to make the patch in the linked pull request obsolete and use the ITF code without changes.
TODO