Skip to content

fix(bootc): require bubblewrap for bootc install - #18983

Open
Izan (IzanVil) wants to merge 1 commit into
microsoft:4.0from
IzanVil:fix/bootc-bubblewrap
Open

Izan (IzanVil) wants to merge 1 commit into
microsoft:4.0from
IzanVil:fix/bootc-bubblewrap

Conversation

@IzanVil

Copy link
Copy Markdown

Ref #18817

Problem

bootc install to-disk fails on a minimal Azure Linux 4.0 bootc image because bwrap is not installed.

bootc 1.13.0 (the version shipped in 4.0) installs the bootloader by running bootupctl from the target deployment inside a bubblewrap sandbox — install_via_bootupd in crates/lib/src/bootloader.rs builds a BwrapCmd, which spawns bwrap (crates/utils/src/bwrap.rs). The Fedora spec we import does not Require bubblewrap; on Fedora it is normally pulled in transitively (e.g. by rpm-ostree), so the gap does not show there. The proof of concept linked in #18817 hit exactly this and had to add bubblewrap by hand.

Change

  • New base/comps/bootc/bootc.comp.toml with a spec-add-tag overlay adding Requires: bubblewrap to the main bootc package (system-reinstall-bootc is unaffected).
  • Remove the inline [components.bootc] entry from components.toml.
  • Refreshed locks/bootc.lock and the rendered spec.

Upstream replaced the bwrap path with a chroot after 1.13 (bootc-dev/bootc e0975251e7, "utils: Drop unused BwrapCmd"), so the overlay comment notes it can be dropped once bootc is updated past that change.

Verification

  • azldev comp render -p bootc — Requires: bubblewrap lands in the main package preamble.
  • azldev comp build -p bootc — succeeds.
  • rpm -qp --requires bootc-1.13.0-*.rpm lists bubblewrap; system-reinstall-bootc does not.
  • Smoke test in a clean mock chroot (azldev adv mock shell --add-package bootc-*.rpm): installing bootc pulls in bubblewrap-0.11.0, bootc --version → bootc 1.13.0, and bwrap --dev-bind / / true runs successfully.
  • azldev comp update -p bootc and render after committing produce no drift.

Not covered: an end-to-end bootc install to-disk on a VM.

🤖 Generated with Claude Code

bootc 1.13 runs bootupctl inside a bwrap sandbox when installing the
bootloader from the target deployment (install_via_bootupd in
crates/lib/src/bootloader.rs, via BwrapCmd in crates/utils/src/bwrap.rs).
The Fedora spec does not require bubblewrap, which is normally pulled in
transitively by rpm-ostree, so `bootc install to-disk` from a minimal
Azure Linux bootc image fails because bwrap is missing.

Add an overlay with `Requires: bubblewrap`. Upstream replaced the bwrap
path with a chroot after 1.13, so the overlay can be dropped once bootc
is updated past that change.

Move bootc to its own comp.toml now that it carries an overlay.

Ref: microsoft#18817

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: IzanVil <soyoquienmas@outlook.com>
@IzanVil
Izan (IzanVil) requested a review from a team as a code owner September 25, 2026 23:34
Copilot AI balanced review requested due to automatic review settings September 25, 2026 23:34
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

The new overlay lacks the required classification metadata.

Get a fresh assessment by requesting another Copilot review.

Review effort: Balanced
Findings: 1 Low severity

Open (1)
What changed in this PR

Adds bubblewrap as a runtime dependency so bootc install to-disk works on minimal images.

Changes:

  • Moves bootc into a dedicated component definition.
  • Adds a Requires: bubblewrap overlay.
  • Refreshes the lock and rendered specification.
File Description
base/​comps/​bootc/​bootc.comp.toml Defines the dependency overlay.
base/​comps/​components.toml Removes the former inline component entry.
locks/​bootc.lock Refreshes the component fingerprint.
specs/​b/​bootc/​bootc.spec Renders the dependency and release update.

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +12 to +16
[[components.bootc.overlays]]
description = "Add Requires: bubblewrap, needed by bootc install to run bootupctl"
type = "spec-add-tag"
tag = "Requires"
value = "bubblewrap"

This branch has not been deployed

No deployments
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