Skip to content

bump qemu to 11.0.1:#185

Merged
mergify[bot] merged 1 commit into
tinkerbell:mainfrom
jacobweinstock:qemuimg2disk-hotfix
May 29, 2026
Merged

bump qemu to 11.0.1:#185
mergify[bot] merged 1 commit into
tinkerbell:mainfrom
jacobweinstock:qemuimg2disk-hotfix

Conversation

@jacobweinstock

Copy link
Copy Markdown
Member

Description

Upgrading Alpine surfaced an issue with
the bundled qemu-img 6.1.0 crashing with SIGSEGV inside libcurl's connection-pool teardown when built against libcurl >= 8.10, which is what every currently-supported Alpine release ships. The crash happens after the convert succeeds, so the destination disk is left in an indeterminate state and the action reports failure on every run.

Newer qemu reworked block/curl.c to cope with libcurl's multi-event API and is no longer affected. While here, also fix HTTPS sources (static libcurl looks for /etc/ssl/cert.pem, which scratch images don't have) and surface convert progress so long downloads aren't silent.

Fixes: #

How Has This Been Tested?

How are existing users impacted? What migration steps/scripts do we need?

Checklist:

I have:

  • updated the documentation and/or roadmap (if required)
  • added unit or e2e tests
  • provided instructions on how to upgrade

Upgrading Alpine surfaced an issue with
the bundled qemu-img 6.1.0 crashing with SIGSEGV inside libcurl's
connection-pool teardown when built against libcurl >= 8.10, which is
what every currently-supported Alpine release ships. The crash happens
after the convert succeeds, so the destination disk is left in an
indeterminate state and the action reports failure on every run.

Newer qemu reworked block/curl.c to cope with libcurl's multi-event API
and is no longer affected. While here, also fix HTTPS sources (static
libcurl looks for /etc/ssl/cert.pem, which scratch images don't have)
and surface convert progress so long downloads aren't silent.

Signed-off-by: Jacob Weinstock <jakobweinstock@gmail.com>
@jacobweinstock jacobweinstock requested a review from Copilot May 29, 2026 16:21
@jacobweinstock jacobweinstock added kind/bug Categorizes issue or PR as related to a bug. kind/regression Categorizes issue or PR as related to a regression from a prior release. labels May 29, 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

Upgrades the qemuimg2disk action’s bundled qemu-img to a newer QEMU release to avoid crashes seen with newer libcurl versions on currently-supported Alpine, while also improving HTTPS CA-bundle handling in the scratch image and making conversions less “silent” via progress output.

Changes:

  • Bump bundled QEMU/qemu-img from 6.1.0 to 11.0.1 and adjust build deps accordingly.
  • Ensure HTTPS downloads work in the scratch image by providing a CA bundle at /etc/ssl/cert.pem.
  • Add qemu-img convert progress output and add a local reproduction helper script.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
qemuimg2disk/Dockerfile Updates QEMU version/build dependencies and adds CA-bundle copy to support HTTPS in scratch image.
qemuimg2disk/entrypoint.sh Enables qemu-img convert progress output (-p).
qemuimg2disk/test-local.sh Adds a local helper script to reproduce/action-test using a loop device-backed “host_device” target.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread qemuimg2disk/test-local.sh
@jacobweinstock jacobweinstock added the ready-to-merge Signal to Mergify to merge the PR. label May 29, 2026
@mergify mergify Bot added the queued label May 29, 2026
@mergify

mergify Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

This pull request spent 5 minutes 27 seconds in the queue, including 4 minutes 7 seconds running CI.

Required conditions to merge
  • all of:
    • #changes-requested-reviews-by=0
    • base=main
    • check-success=Build (amd64, archive2disk)
    • check-success=Build (amd64, cexec)
    • check-success=Build (amd64, grub2disk)
    • check-success=Build (amd64, image2disk)
    • check-success=Build (amd64, kexec)
    • check-success=Build (amd64, oci2disk)
    • check-success=Build (amd64, qemuimg2disk)
    • check-success=Build (amd64, rootio)
    • check-success=Build (amd64, slurp)
    • check-success=Build (amd64, syslinux)
    • check-success=Build (amd64, writefile)
    • check-success=DCO
    • label!=do-not-merge
    • any of:
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, writefile)
    • check-neutral = Build (amd64, writefile)
    • check-skipped = Build (amd64, writefile)
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, archive2disk)
    • check-neutral = Build (amd64, archive2disk)
    • check-skipped = Build (amd64, archive2disk)
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, cexec)
    • check-neutral = Build (amd64, cexec)
    • check-skipped = Build (amd64, cexec)
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, grub2disk)
    • check-neutral = Build (amd64, grub2disk)
    • check-skipped = Build (amd64, grub2disk)
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, image2disk)
    • check-neutral = Build (amd64, image2disk)
    • check-skipped = Build (amd64, image2disk)
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, kexec)
    • check-neutral = Build (amd64, kexec)
    • check-skipped = Build (amd64, kexec)
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, oci2disk)
    • check-neutral = Build (amd64, oci2disk)
    • check-skipped = Build (amd64, oci2disk)
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, qemuimg2disk)
    • check-neutral = Build (amd64, qemuimg2disk)
    • check-skipped = Build (amd64, qemuimg2disk)
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, rootio)
    • check-neutral = Build (amd64, rootio)
    • check-skipped = Build (amd64, rootio)
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, slurp)
    • check-neutral = Build (amd64, slurp)
    • check-skipped = Build (amd64, slurp)
  • any of [🛡 GitHub branch protection]:
    • check-success = Build (amd64, syslinux)
    • check-neutral = Build (amd64, syslinux)
    • check-skipped = Build (amd64, syslinux)
  • any of [🛡 GitHub branch protection]:
    • check-success = DCO
    • check-neutral = DCO
    • check-skipped = DCO

mergify Bot added a commit that referenced this pull request May 29, 2026
@mergify mergify Bot merged commit 8982b2f into tinkerbell:main May 29, 2026
21 checks passed
@jacobweinstock jacobweinstock deleted the qemuimg2disk-hotfix branch May 29, 2026 16:33
@mergify mergify Bot removed the queued label May 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/bug Categorizes issue or PR as related to a bug. kind/regression Categorizes issue or PR as related to a regression from a prior release. ready-to-merge Signal to Mergify to merge the PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants