Skip to content

feat: Use more generic ITF QEMU plugin - #177

Draft
lurtz wants to merge 62 commits into
eclipse-score:mainfrom
elektrobit-contrib:make-qemu-linux-plugin-more-generic
Draft

feat: Use more generic ITF QEMU plugin#177
lurtz wants to merge 62 commits into
eclipse-score:mainfrom
elektrobit-contrib:make-qemu-linux-plugin-more-generic

Conversation

@lurtz

@lurtz lurtz commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

For running EB Linux and Ubuntu the ITF QEMU plugin needed features like

  • rootfs
  • specifying machine

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

  • Add EB Linux image and test showing that it works
  • Simplify linux_qemu plugin interface
  • Run it with QNX

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Extracting Bazel installation...
Starting local Bazel server (8.6.0) and connecting to it...
INFO: Invocation ID: f505f196-6fee-4c93-ba61-5259ebd09727
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Loading: 
Loading: 3 packages loaded
Loading: 3 packages loaded
    currently loading: 
Loading: 3 packages loaded
    currently loading: 
Loading: 3 packages loaded
    currently loading: 
Loading: 3 packages loaded
    currently loading: 
Loading: 3 packages loaded
    currently loading: 
WARNING: Target pattern parsing failed.
ERROR: Skipping '//:license-check': no such target '//:license-check': target 'license-check' not declared in package '' defined by /home/runner/work/inc_someip_gateway/inc_someip_gateway/BUILD
ERROR: no such target '//:license-check': target 'license-check' not declared in package '' defined by /home/runner/work/inc_someip_gateway/inc_someip_gateway/BUILD
INFO: Elapsed time: 13.885s
INFO: 0 processes.
ERROR: Build did NOT complete successfully
ERROR: Build failed. Not running target

Comment thread quality/integration_testing/plugins/linux_qemu/README.md Outdated
Comment thread quality/integration_testing/plugins/linux_qemu/__init__.py Outdated
Comment thread quality/integration_testing/plugins/linux_qemu/qemu.py Outdated
Comment thread quality/integration_testing/plugins/linux_qemu/qemu.py Outdated
Comment thread quality/integration_testing/plugins/linux_qemu/qemu.py Outdated
Comment thread quality/integration_testing/plugins/linux_qemu/qemu.py Outdated
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

The created documentation from the pull request is available at: docu-html

@lurtz
lurtz force-pushed the make-qemu-linux-plugin-more-generic branch from 3ab298b to f181495 Compare July 3, 2026 13:52
@lurtz
lurtz deployed to workflow-approval August 13, 2026 10:04 — with GitHub Actions Active
@lurtz
lurtz deployed to workflow-approval August 13, 2026 10:17 — with GitHub Actions Active
@lurtz
lurtz deployed to workflow-approval August 13, 2026 10:17 — with GitHub Actions Active
@lurtz
lurtz deployed to workflow-approval August 13, 2026 10:19 — with GitHub Actions Active
@lurtz
lurtz deployed to workflow-approval August 13, 2026 10:19 — with GitHub Actions Active
@lurtz
lurtz deployed to workflow-approval August 13, 2026 10:26 — with GitHub Actions Active
@lurtz
lurtz deployed to workflow-approval August 13, 2026 10:26 — with GitHub Actions Active
@lurtz lurtz removed the test-qnx Run QNX test in pull request label Aug 13, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 root does 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.

Comment thread .devcontainer/Dockerfile
Comment on lines +31 to +32
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-*

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still unsure if the chosen method to copy files into images will stay due to kernel requirement.

Comment thread .github/workflows/build_and_test_host.yml
Comment thread quality/integration_testing/environments/ubuntu24_04_qemu/user-data
Comment thread .github/workflows/build_and_test_host.yml
Comment thread MODULE.bazel
Comment on lines +285 to +291
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",
)
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