Skip to content

tests: Add cross-consumer staging scenario to loader-entries-source - #2330

Draft
jmarrero wants to merge 1 commit into
bootc-dev:mainfrom
jmarrero:test-cross-consumer-staging
Draft

tests: Add cross-consumer staging scenario to loader-entries-source#2330
jmarrero wants to merge 1 commit into
bootc-dev:mainfrom
jmarrero:test-cross-consumer-staging

Conversation

@jmarrero

@jmarrero jmarrero commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Extend the loader-entries set-options-for-source test to cover the case where bootc stages source-tracked kargs and then rpm-ostree re-stages on the same boot (e.g. via 'rpm-ostree kargs --append'). The replacement staged deployment must inherit the x-options-source-* keys from the previously-staged deployment.

This exercises the 'previously-staged fallback' path in ostree's ostree_sysroot_stage_tree_with_options(), fixed by ostreedev/ostree#3611. Without that fix, this test fails because rpm-ostree's re-staging drops the source keys that bootc set.

Done with AI. Draft while ostree PR closes.

Extend the loader-entries set-options-for-source test to cover the case
where bootc stages source-tracked kargs and then rpm-ostree re-stages on
the same boot (e.g. via 'rpm-ostree kargs --append'). The replacement
staged deployment must inherit the x-options-source-* keys from the
previously-staged deployment.

This exercises the 'previously-staged fallback' path in ostree's
ostree_sysroot_stage_tree_with_options(), fixed by ostreedev/ostree#3611.
Without that fix, this test fails because rpm-ostree's re-staging drops
the source keys that bootc set.

Signed-off-by: Joseph Marrero Corchado <jmarrero@redhat.com>
@bootc-bot
bootc-bot Bot requested a review from gursewak1997 July 21, 2026 17:30
jmarrero added a commit to jmarrero/ostree that referenced this pull request Aug 5, 2026
Multi-reboot TMT test that exercises the previously-staged fallback
path in ostree_sysroot_stage_tree_with_options().  Verifies that
x-options-source-* keys set by bootc survive when rpm-ostree re-stages
on the same boot.

This is the ostree-side test for the scenario covered by
bootc-dev/bootc#2330.

Related: ostreedev#3611
jmarrero added a commit to jmarrero/ostree that referenced this pull request Aug 5, 2026
Multi-reboot TMT test that exercises the previously-staged fallback
path in ostree_sysroot_stage_tree_with_options().  Verifies that
x-options-source-* keys set by bootc survive when rpm-ostree re-stages
on the same boot.

This is the ostree-side test for the scenario covered by
bootc-dev/bootc#2330.

Related: ostreedev#3611
jmarrero added a commit to jmarrero/ostree that referenced this pull request Aug 5, 2026
Multi-reboot TMT test that exercises the previously-staged fallback
path in ostree_sysroot_stage_tree_with_options().  Verifies that
x-options-source-* keys set by bootc survive when rpm-ostree re-stages
on the same boot.

This is the ostree-side test for the scenario covered by
bootc-dev/bootc#2330.

Related: ostreedev#3611
jmarrero added a commit to jmarrero/ostree that referenced this pull request Aug 5, 2026
Reapply the bootconfig-extra previously-staged fallback (reverted in
PR ostreedev#3610) with a corrected all-or-nothing fallback chain that fixes
the regression reported in ostreedev#3609.

The original 3-way additive merge gave previously-staged data higher
priority than the merge deployment, which broke bootc's
loader-entries set-options-for-source when called multiple times on
the same boot.

The fix uses a 2-tier fallback:
1. Merge deployment's bootconfig (caller may have updated in-memory)
2. Previously staged deployment's bootconfig-extra (cross-consumer
   fallback for unaware consumers like rpm-ostree)

If tier 1 has any extension keys, those are authoritative and
previously-staged data is ignored.  This prevents stale keys from
overriding fresh updates when the same consumer stages repeatedly.

Also adds a multi-reboot TMT integration test covering:
- Cross-consumer staging (bootc then rpm-ostree)
- Triple coexistence (two bootc sources + rpm-ostree local kargs)
- Source replacement while rpm-ostree kargs are active

Closes: ostreedev#3609
Related: bootc-dev/bootc#2330
jmarrero added a commit to jmarrero/ostree that referenced this pull request Aug 5, 2026
Reapply the bootconfig-extra previously-staged fallback (reverted in
PR ostreedev#3610) with a corrected all-or-nothing fallback chain that fixes
the regression reported in ostreedev#3609.

The original 3-way additive merge gave previously-staged data higher
priority than the merge deployment, which broke bootc's
loader-entries set-options-for-source when called multiple times on
the same boot.

The fix uses a 2-tier fallback:
1. Merge deployment's bootconfig (caller may have updated in-memory)
2. Previously staged deployment's bootconfig-extra (cross-consumer
   fallback for unaware consumers like rpm-ostree)

If tier 1 has any extension keys, those are authoritative and
previously-staged data is ignored.  This prevents stale keys from
overriding fresh updates when the same consumer stages repeatedly.

Also adds a multi-reboot TMT integration test covering:
- Cross-consumer staging (bootc then rpm-ostree)
- Triple coexistence (two bootc sources + rpm-ostree local kargs)
- Source replacement while rpm-ostree kargs are active

Closes: ostreedev#3609
Related: bootc-dev/bootc#2330
jmarrero added a commit to jmarrero/ostree that referenced this pull request Aug 5, 2026
Reapply the bootconfig-extra previously-staged fallback (reverted in
PR ostreedev#3610) with a corrected all-or-nothing fallback chain that fixes
the regression reported in ostreedev#3609.

The original 3-way additive merge gave previously-staged data higher
priority than the merge deployment, which broke bootc's
loader-entries set-options-for-source when called multiple times on
the same boot.

The fix uses a 2-tier fallback:
1. Merge deployment's bootconfig (caller may have updated in-memory)
2. Previously staged deployment's bootconfig-extra (cross-consumer
   fallback for unaware consumers like rpm-ostree)

If tier 1 has any extension keys, those are authoritative and
previously-staged data is ignored.  This prevents stale keys from
overriding fresh updates when the same consumer stages repeatedly.

Also adds a multi-reboot TMT integration test covering:
- Cross-consumer staging (bootc then rpm-ostree)
- Triple coexistence (two bootc sources + rpm-ostree local kargs)
- Source replacement while rpm-ostree kargs are active

Closes: ostreedev#3609
Related: bootc-dev/bootc#2330
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.

1 participant