Skip to content

[pull] main from bootc-dev:main#136

Merged
pull[bot] merged 9 commits into
TheTechOddBug:mainfrom
bootc-dev:main
Apr 7, 2026
Merged

[pull] main from bootc-dev:main#136
pull[bot] merged 9 commits into
TheTechOddBug:mainfrom
bootc-dev:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Apr 7, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

ckyrouac and others added 9 commits April 6, 2026 19:22
Assisted-by: Claude Code (Opus 4)
Signed-off-by: ckyrouac <ckyrouac@redhat.com>
Signed-off-by: Colin Walters <walters@verbum.org>
The composefs BLS and UKI boot setup paths called
find_partition_of_esp() directly on the device, which fails when
the root filesystem is on an LVM logical volume (the ESP is on the
parent disk, not the LV).  The store module had the same issue via
require_single_root() + find_partition_of_esp().

Switch all call sites to find_colocated_esps() which walks up to
the physical disk(s) via find_all_roots() before searching for the
ESP, consistent with what install_systemd_boot and mount_esp_part
already do.

Assisted-by: Claude Code (Opus 4)
Signed-off-by: ckyrouac <ckyrouac@redhat.com>
Signed-off-by: Colin Walters <walters@verbum.org>
The test was using `get_target_image` which returns the upstream
`docker://quay.io/centos-bootc/centos-bootc:stream10`. On composefs+grub
variants provisioned with an updated bootupd from copr, the upstream
image has stock bootupd with incompatible EFI update metadata, causing
the install to fail with "Failed to find EFI update metadata".

Switch to using `containers-storage:localhost/bootc` (the locally-built
image), matching the pattern used by test-32, test-37, and test-38.
The locally-built image has the updated bootupd with compatible metadata.

Assisted-by: Claude Code (Opus 4)
Signed-off-by: ckyrouac <ckyrouac@redhat.com>
Signed-off-by: Colin Walters <walters@verbum.org>
The initial change to use locally-built images had two additional issues
on composefs:

1. containers-storage: transport fails on composefs's read-only root
   with "mkdir /.local: read-only file system". Fix by exporting the
   image to an OCI layout directory on writable /var/tmp instead.

2. run_install() was masking /sysroot/ostree and removing bootupd update
   metadata, which composefs needs for bootloader installation and boot
   binaries. Fix by making run_install() skip these ostree-specific
   workarounds on composefs systems.

Note: the composefs install-outside-container code path still has a
separate bug ("Shared boot binaries not found" in boot.rs:745) that
needs fixing in the Rust code.

Assisted-by: Claude Code (Opus 4)
Signed-off-by: ckyrouac <ckyrouac@redhat.com>
Signed-off-by: Colin Walters <walters@verbum.org>
The multi-device ESP test creates ESP partitions and expects bootupd to
install a UEFI bootloader. On BIOS-booted systems, bootupd instead tries
to install GRUB for i386-pc, which requires a BIOS Boot Partition and
fails.

The test plan already requests UEFI provisioning via the hardware hint,
but Testing Farm does not always honor this on CentOS Stream x86_64.
Add a runtime check for /sys/firmware/efi so the test skips gracefully
on BIOS hosts rather than failing.

Assisted-by: Claude Code (Opus 4.6)
Signed-off-by: ckyrouac <ckyrouac@redhat.com>
Signed-off-by: Colin Walters <walters@verbum.org>
Extract the repeated PATH environment variable string into a
set_default_path() method on BwrapCmd. The bwrap environment may not
have a complete PATH, causing tools like bootupctl or sfdisk to not
be found. This consolidates the workaround into one place.

Assisted-by: OpenCode (Claude Opus 4)
Signed-off-by: Colin Walters <walters@verbum.org>
Several improvements to ESP partition discovery:

Add find_partition_of_esp_optional() returning Result<Option<&Device>>
to cleanly separate three outcomes: found, absent, and genuinely
unexpected errors (like unsupported partition table types). The existing
find_partition_of_esp() is now a thin wrapper that converts None to Err.

Add find_first_colocated_esp() helper to replace a 10-line pattern
that was repeated verbatim 5 times across boot.rs and store/mod.rs.

Deduplicate roots in find_all_roots() using a seen-set: in complex
topologies like multipath, multiple parent branches can converge on the
same physical disk. find_colocated_esps() now uses the optional variant
to properly propagate real errors while treating absence normally.

Also extract the match-on-if-else in setup_composefs_bls_boot into a
let binding for readability.

Assisted-by: OpenCode (Claude Opus 4)
Signed-off-by: Colin Walters <walters@verbum.org>
Signed-off-by: Chris Kyrouac <ckyrouac@redhat.com>
The no-ESP test only checked for a non-zero exit code, which would
also pass if podman itself failed for unrelated reasons. Check that
the output contains "ESP" to confirm the right failure mode.

Assisted-by: OpenCode (Claude Opus 4)
Signed-off-by: Colin Walters <walters@verbum.org>
For most work on `bootc upgrade` or `bootc switch`, rebuilding the
full container image is unnecessary. This adds a fast-path workflow
that builds just the bootc binary into a systemd-sysext and overlays
it onto /usr in a persistent bcvk VM via virtiofs.

For more info see the updated Justfile.

There's still some TODOs here - e.g. we need to support running
the TMT tests this way, etc.

Assisted-by: OpenCode (claude-opus-4-6)
Signed-off-by: Colin Walters <walters@verbum.org>
@pull pull Bot locked and limited conversation to collaborators Apr 7, 2026
@pull pull Bot added the ⤵️ pull label Apr 7, 2026
@pull pull Bot merged commit f3d2d4e into TheTechOddBug:main Apr 7, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants