Skip to content

playbooks/depencies-fedora-coreos: add a fallback to the updates-testing repo - #1847

Open
Rolv-Apneseth wants to merge 2 commits into
containers:mainfrom
Rolv-Apneseth:fcos_ci_updates
Open

Rolv-Apneseth wants to merge 2 commits into
containers:mainfrom
Rolv-Apneseth:fcos_ci_updates

Conversation

@Rolv-Apneseth

Copy link
Copy Markdown
Contributor

When trying to replace the existing versions of some base Fedora CoreOS packages, we had repo=updates hard-coded. However, during branching, the next stream will only have updates from repo=updates-testing, so let's add a fallback to avoid failures when this is the case.


Testing if this resolves the issues seen in #1846. Note that we need that merged first, then I'll rebase this.

@Rolv-Apneseth
Rolv-Apneseth force-pushed the fcos_ci_updates branch 2 times, most recently from 2773b57 to 51c1a42 Compare October 8, 2026 15:17
@debarshiray

Copy link
Copy Markdown
Member

Testing if this resolves the issues seen in #1846. Note that we need that merged first, then I'll rebase this.

#1846 is now merged. :)

@centosinfra-prod-github-app

Copy link
Copy Markdown

Build failed.
https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/local/buildset/957bb848dee34eafbfe1c5771041a6b1

✔️ unit-test SUCCESS in 2m 07s
✔️ unit-test-migration-path-for-coreos-toolbox SUCCESS in 3m 09s
✔️ unit-test-restricted SUCCESS in 2m 05s
✔️ system-test-fedora-rawhide-commands-options SUCCESS in 36m 30s
✔️ system-test-fedora-rawhide-runtime-environment-arch-fedora SUCCESS in 26m 57s
✔️ system-test-fedora-rawhide-runtime-environment-ubuntu SUCCESS in 6m 29s
✔️ system-test-fedora-44-commands-options SUCCESS in 36m 38s
✔️ system-test-fedora-44-runtime-environment-arch-fedora SUCCESS in 27m 30s
✔️ system-test-fedora-44-runtime-environment-ubuntu SUCCESS in 6m 29s
✔️ system-test-fedora-43-commands-options SUCCESS in 38m 00s
✔️ system-test-fedora-43-runtime-environment-arch-fedora SUCCESS in 28m 12s
✔️ system-test-fedora-43-runtime-environment-ubuntu SUCCESS in 6m 26s
✔️ system-test-fedora-42-commands-options SUCCESS in 36m 47s
✔️ system-test-fedora-42-runtime-environment-arch-fedora SUCCESS in 23m 40s
✔️ system-test-fedora-42-runtime-environment-ubuntu SUCCESS in 6m 05s
❌ system-test-fedora-coreos-next-commands-options RETRY_LIMIT in 28s
❌ system-test-fedora-coreos-next-runtime-environment-arch-fedora RETRY_LIMIT in 29s
❌ system-test-fedora-coreos-next-runtime-environment-ubuntu RETRY_LIMIT in 27s
✔️ system-test-fedora-coreos-stable-commands-options SUCCESS in 39m 26s
✔️ system-test-fedora-coreos-stable-runtime-environment-arch-fedora SUCCESS in 29m 47s
✔️ system-test-fedora-coreos-stable-runtime-environment-ubuntu SUCCESS in 8m 11s
✔️ system-test-fedora-coreos-testing-commands-options SUCCESS in 40m 22s
✔️ system-test-fedora-coreos-testing-runtime-environment-arch-fedora SUCCESS in 32m 36s
✔️ system-test-fedora-coreos-testing-runtime-environment-ubuntu SUCCESS in 8m 47s

@Rolv-Apneseth

Copy link
Copy Markdown
Contributor Author

Testing if this resolves the issues seen in #1846. Note that we need that merged first, then I'll rebase this.

#1846 is now merged. :)

Let's see if that works

@debarshiray debarshiray left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks for putting this together, @Rolv-Apneseth ! I don't think I understand the details of Fedora CoreOS Next, so let me ask what might be a stupid question. Does CoreOS have different updates and updates-testing repositories than the usual Fedora ones? If not, then I am a bit confused about what's going on.

First, we have these:

$ rpm-ostree override replace --experimental --from repo=updates glibc ...
...
error: No matches for 'glibc' in repo 'updates'
$ rpm-ostree override replace --experimental --from repo=updates shadow-utils
...
error: No matches for 'shadow-utils' in repo 'updates'

From what you wrote, it seems that this is related to Fedora 45 being in Final Freeze from the 6th of October, which has caused some package updates to be stuck in the updates-testing repository. That makes sense, and explains the above based on what I can see in Bodhi and Koji.

These errors aren't fatal, because we are using ignore_errors: yes for those in the Ansible playbook.

Second, we have:

$ rpm-ostree install --allow-inactive --apply-live --assumeyes --idempotent gcc
...
error: Could not depsolve transaction; 1 problem detected:
 Problem: libgcc-16.2.1-2.fc45.1.i686 from fedora does not belong to a distupgrade repository
   - package gcc-16.2.1-2.fc45.1.x86_64 from fedora requires libgcc >= 16.2.1-2.fc45.1, but none of the providers can be installed
   - cannot install both libgcc-16.2.1-2.fc45.1.x86_64 from fedora and libgcc-16.2.1-2.fc45.x86_64 from @System
   - conflicting requests

This is the part I don't understand, and this error is fatal because we don't use ignore_errors: yes for it.

The gcc-16.2.1-2.fc45.1 build was pushed to stable five days ago, and both the gcc and libgcc binary packages are built from the same gcc source. So, how can gcc and libgcc have a broken dependency chain between them? :)

Anyway, if the CI passes, then that's the final word. :)

@Rolv-Apneseth

Copy link
Copy Markdown
Contributor Author

So, I'm picking this up as I go, but my understanding is:

Does CoreOS have different updates and updates-testing repositories than the usual Fedora ones?

They are the same.

The gcc-16.2.1-2.fc45.1 build was pushed to stable five days ago, and both the gcc and libgcc binary packages are built from the same gcc source. So, how can gcc and libgcc have a broken dependency chain between them? :)

So for the install step, any package already installed on the system can't be updated automatically due to how rpm-ostree works, which is why we have the override steps. And we ignore the errors in case there are no updates.

But you're right to ask, I missed the fact it's libgcc that requires the update so I think we actually need an override block for that too. And confusingly, the update for that one isn't in updates-testing, but fedora... I may need a bunch of logic for stream-awareness and layers of fallbacks in these overrides...

@Rolv-Apneseth

Copy link
Copy Markdown
Contributor Author

I think coreos/rpm-ostree#4708 would make things a lot easier here

@centosinfra-prod-github-app

Copy link
Copy Markdown

Build failed.
https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/local/buildset/119d8c9152014807ab94bcca791bfdde

✔️ unit-test SUCCESS in 2m 08s
✔️ unit-test-migration-path-for-coreos-toolbox SUCCESS in 3m 12s
✔️ unit-test-restricted SUCCESS in 2m 06s
✔️ system-test-fedora-rawhide-commands-options SUCCESS in 36m 22s
✔️ system-test-fedora-rawhide-runtime-environment-arch-fedora SUCCESS in 29m 10s
✔️ system-test-fedora-rawhide-runtime-environment-ubuntu SUCCESS in 6m 12s
✔️ system-test-fedora-44-commands-options SUCCESS in 40m 03s
✔️ system-test-fedora-44-runtime-environment-arch-fedora SUCCESS in 32m 20s
✔️ system-test-fedora-44-runtime-environment-ubuntu SUCCESS in 6m 30s
✔️ system-test-fedora-43-commands-options SUCCESS in 39m 18s
✔️ system-test-fedora-43-runtime-environment-arch-fedora SUCCESS in 24m 39s
✔️ system-test-fedora-43-runtime-environment-ubuntu SUCCESS in 6m 07s
✔️ system-test-fedora-42-commands-options SUCCESS in 35m 26s
✔️ system-test-fedora-42-runtime-environment-arch-fedora SUCCESS in 26m 20s
✔️ system-test-fedora-42-runtime-environment-ubuntu SUCCESS in 7m 00s
❌ system-test-fedora-coreos-next-commands-options RETRY_LIMIT in 1m 27s
❌ system-test-fedora-coreos-next-runtime-environment-arch-fedora RETRY_LIMIT in 1m 45s
❌ system-test-fedora-coreos-next-runtime-environment-ubuntu RETRY_LIMIT in 2m 07s
✔️ system-test-fedora-coreos-stable-commands-options SUCCESS in 45m 02s
✔️ system-test-fedora-coreos-stable-runtime-environment-arch-fedora SUCCESS in 31m 38s
✔️ system-test-fedora-coreos-stable-runtime-environment-ubuntu SUCCESS in 8m 55s
✔️ system-test-fedora-coreos-testing-commands-options SUCCESS in 45m 33s
✔️ system-test-fedora-coreos-testing-runtime-environment-arch-fedora SUCCESS in 32m 46s
✔️ system-test-fedora-coreos-testing-runtime-environment-ubuntu SUCCESS in 8m 01s

@debarshiray

Copy link
Copy Markdown
Member

So for the install step, any package already installed on the system can't be updated automatically due to how rpm-ostree works

Thanks for explaining that detail about rpm-ostree install .... I was suspecting it because you split the override and apply-live into separate steps, but wasn't sure.

But you're right to ask, I missed the fact it's libgcc that requires the update so I think we actually need an override block for that too. And confusingly, the update for that one isn't in updates-testing, but fedora... I may need a bunch of logic for stream-awareness and layers of fallbacks in these overrides...

Yes, if libgcc is in the Fedora CoreOS host image, then we would need to synchronize it too.

Take a step back from this specific problem, I am wondering if there's ever a valid reason for the fedora and updates repositories to have broken dependencies between themselves without involving updates-testing. It happens sometimes (more often for development versions, and less so for stable ones) and aren't they all supposed to be urgent bugs in the OS distribution? Fixing them may require fast-tracking some packages from updates-testing to updates, though.

@Rolv-Apneseth

Copy link
Copy Markdown
Contributor Author

Trying something different, we'll see how CI goes.

Take a step back from this specific problem, I am wondering if there's ever a valid reason for the fedora and updates repositories to have broken dependencies between themselves without involving updates-testing. It happens sometimes (more often for development versions, and less so for stable ones) and aren't they all supposed to be urgent bugs in the OS distribution? Fixing them may require fast-tracking some packages from updates-testing to updates, though.

I'm afraid I don't know. I don't have enough knowledge on the topics of Fedora package repos.

@Rolv-Apneseth

Copy link
Copy Markdown
Contributor Author

Ok, seems like the fallbacks are working as expected in https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/local/build/91b9e465a1264a79bff668732ab506af/log/job-output.txt:

output
2026-10-09 09:50:22.315407 \| fedora-coreos-next \| Inactive requests:
2026-10-09 09:50:22.315622 \| fedora-coreos-next \|   rsync (already provided by rsync-3.5.0-2.fc45.x86_64)
2026-10-09 09:50:22.315656 \| fedora-coreos-next \| Checking out tree e6685e0...done
2026-10-09 09:50:22.315673 \| fedora-coreos-next \| Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
2026-10-09 09:50:22.315690 \| fedora-coreos-next \| Importing rpm-md...done
2026-10-09 09:50:22.315705 \| fedora-coreos-next \| rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:56:00Z solvables: 3
2026-10-09 09:50:22.315720 \| fedora-coreos-next \| rpm-md repo 'updates-testing' (cached); generated: 2026-10-09T02:01:04Z solvables: 13390
2026-10-09 09:50:22.315735 \| fedora-coreos-next \| rpm-md repo 'updates' (cached); generated: 2018-02-20T19:18:14Z solvables: 0
2026-10-09 09:50:22.315763 \| fedora-coreos-next \| rpm-md repo 'fedora' (cached); generated: 2026-10-06T08:29:40Z solvables: 75840
2026-10-09 09:50:22.315779 \| fedora-coreos-next \| rpm-md repo 'updates-archive' (cached); generated: 2026-08-21T13:38:41Z solvables: 0
2026-10-09 09:50:22.315794 \| fedora-coreos-next \| error: No matches for 'libgcc' in repo 'updates'
2026-10-09 09:50:22.315809 \| fedora-coreos-next \| Inactive requests:
2026-10-09 09:50:22.315823 \| fedora-coreos-next \|   rsync (already provided by rsync-3.5.0-2.fc45.x86_64)
2026-10-09 09:50:22.315838 \| fedora-coreos-next \| Checking out tree e6685e0...done
2026-10-09 09:50:22.315853 \| fedora-coreos-next \| Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
2026-10-09 09:50:22.315868 \| fedora-coreos-next \| Importing rpm-md...done
2026-10-09 09:50:22.315882 \| fedora-coreos-next \| rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:56:00Z solvables: 3
2026-10-09 09:50:22.315897 \| fedora-coreos-next \| rpm-md repo 'updates-testing' (cached); generated: 2026-10-09T02:01:04Z solvables: 13390
2026-10-09 09:50:22.315913 \| fedora-coreos-next \| rpm-md repo 'updates' (cached); generated: 2018-02-20T19:18:14Z solvables: 0
2026-10-09 09:50:22.315928 \| fedora-coreos-next \| rpm-md repo 'fedora' (cached); generated: 2026-10-06T08:29:40Z solvables: 75840
2026-10-09 09:50:22.315958 \| fedora-coreos-next \| rpm-md repo 'updates-archive' (cached); generated: 2026-08-21T13:38:41Z solvables: 0
2026-10-09 09:50:22.315973 \| fedora-coreos-next \| error: No matches for 'libgcc' in repo 'updates-testing'
2026-10-09 09:50:22.315988 \| fedora-coreos-next \| Inactive requests:
2026-10-09 09:50:22.316003 \| fedora-coreos-next \|   rsync (already provided by rsync-3.5.0-2.fc45.x86_64)
2026-10-09 09:50:22.316017 \| fedora-coreos-next \| Checking out tree e6685e0...done
2026-10-09 09:50:22.316032 \| fedora-coreos-next \| Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
2026-10-09 09:50:22.316047 \| fedora-coreos-next \| Importing rpm-md...done
2026-10-09 09:50:22.316061 \| fedora-coreos-next \| rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:56:00Z solvables: 3
2026-10-09 09:50:22.316076 \| fedora-coreos-next \| rpm-md repo 'updates-testing' (cached); generated: 2026-10-09T02:01:04Z solvables: 13390
2026-10-09 09:50:22.316090 \| fedora-coreos-next \| rpm-md repo 'updates' (cached); generated: 2018-02-20T19:18:14Z solvables: 0
2026-10-09 09:50:22.316105 \| fedora-coreos-next \| rpm-md repo 'fedora' (cached); generated: 2026-10-06T08:29:40Z solvables: 75840
2026-10-09 09:50:22.316119 \| fedora-coreos-next \| rpm-md repo 'updates-archive' (cached); generated: 2026-08-21T13:38:41Z solvables: 0
2026-10-09 09:50:22.316134 \| fedora-coreos-next \| Resolving dependencies...done
2026-10-09 09:50:22.316149 \| fedora-coreos-next \| Will download: 1 package (139.8 kB)
2026-10-09 09:50:22.316166 \| fedora-coreos-next \| Downloading from 'fedora'...done

However, looks like there's another issue in the Install Toolbx step that I'll need to look into:

2026-10-09 09:52:00.593442 \| TASK [Install Toolbx]
2026-10-09 09:52:02.512899 \| fedora-coreos-next \| ninja: Entering directory `/var/home/zuul-worker/src/github.com/containers/toolbox/builddir'
2026-10-09 09:52:02.513870 \| fedora-coreos-next \| ninja: no work to do.
2026-10-09 09:52:02.793045 \| fedora-coreos-next \| fchmod() of / failed: Read-only file system
2026-10-09 09:52:02.915179 \| fedora-coreos-next \| Traceback (most recent call last):
2026-10-09 09:52:02.915225 \| fedora-coreos-next \|   File "/var/home/zuul-worker/src/github.com/containers/toolbox/meson_post_install.py", line 26, in <module>
2026-10-09 09:52:02.915231 \| fedora-coreos-next \|     subprocess.run(['systemd-tmpfiles', '--create'], check=True)
2026-10-09 09:52:02.915239 \| fedora-coreos-next \|     ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2026-10-09 09:52:02.915245 \| fedora-coreos-next \|   File "/usr/lib64/python3.15/subprocess.py", line 692, in run
2026-10-09 09:52:02.915249 \| fedora-coreos-next \|     raise CalledProcessError(retcode, process.args,
2026-10-09 09:52:02.915252 \| fedora-coreos-next \|                              output=stdout, stderr=stderr)
2026-10-09 09:52:02.915255 \| fedora-coreos-next \| subprocess.CalledProcessError: Command '['systemd-tmpfiles', '--create']' returned non-zero exit status 73.

@debarshiray debarshiray left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

If libgcc is in the Fedora CoreOS host image, and it breaks rpm-ostree install ... gcc because it's older than the version in the repositories, then wouldn't it be enough to just do:

diff --git a/playbooks/dependencies-fedora-coreos.yaml b/playbooks/dependencies-fedora-coreos.yaml
index d676cb9f4175..27e7f5862134 100644
--- a/playbooks/dependencies-fedora-coreos.yaml
+++ b/playbooks/dependencies-fedora-coreos.yaml
@@ -22,6 +22,7 @@
       glibc-common
       glibc-minimal-langpack
       glibc-gconv-extra
+      libgcc
   ignore_errors: yes

 - name: Synchronize shadow-utils to repo version for shadow-utils-subid-devel compatibility

Completely untested, because I didn't want to step on your toes.

@centosinfra-prod-github-app

Copy link
Copy Markdown

Build failed.
https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/local/buildset/7ec8fb7bd88e484890d4a9c89c860deb

✔️ unit-test SUCCESS in 2m 17s
✔️ unit-test-migration-path-for-coreos-toolbox SUCCESS in 7m 10s
✔️ unit-test-restricted SUCCESS in 3m 38s
✔️ system-test-fedora-rawhide-commands-options SUCCESS in 39m 55s
✔️ system-test-fedora-rawhide-runtime-environment-arch-fedora SUCCESS in 30m 12s
✔️ system-test-fedora-rawhide-runtime-environment-ubuntu SUCCESS in 7m 29s
✔️ system-test-fedora-44-commands-options SUCCESS in 39m 41s
✔️ system-test-fedora-44-runtime-environment-arch-fedora SUCCESS in 27m 37s
✔️ system-test-fedora-44-runtime-environment-ubuntu SUCCESS in 8m 15s
✔️ system-test-fedora-43-commands-options SUCCESS in 37m 24s
✔️ system-test-fedora-43-runtime-environment-arch-fedora SUCCESS in 27m 48s
✔️ system-test-fedora-43-runtime-environment-ubuntu SUCCESS in 7m 44s
✔️ system-test-fedora-42-commands-options SUCCESS in 35m 26s
✔️ system-test-fedora-42-runtime-environment-arch-fedora SUCCESS in 27m 51s
✔️ system-test-fedora-42-runtime-environment-ubuntu SUCCESS in 7m 35s
❌ system-test-fedora-coreos-next-commands-options FAILURE in 3m 50s
❌ system-test-fedora-coreos-next-runtime-environment-arch-fedora FAILURE in 3m 37s
❌ system-test-fedora-coreos-next-runtime-environment-ubuntu FAILURE in 3m 43s
✔️ system-test-fedora-coreos-stable-commands-options SUCCESS in 44m 03s
✔️ system-test-fedora-coreos-stable-runtime-environment-arch-fedora SUCCESS in 33m 37s
✔️ system-test-fedora-coreos-stable-runtime-environment-ubuntu SUCCESS in 9m 25s
✔️ system-test-fedora-coreos-testing-commands-options SUCCESS in 44m 26s
✔️ system-test-fedora-coreos-testing-runtime-environment-arch-fedora SUCCESS in 33m 26s
✔️ system-test-fedora-coreos-testing-runtime-environment-ubuntu SUCCESS in 9m 16s

@Rolv-Apneseth

Copy link
Copy Markdown
Contributor Author

However, looks like there's another issue in the Install Toolbx step that I'll need to look into:

Looks like this is coreos/fedora-coreos-tracker#2238 - can maybe be fixed in systemd, but likely will be a change needed on our side. If you want to move forward here, I think sudo systemd-tmpfiles --create --prefix=/run is enough? Both the files in https://github.com/containers/toolbox/blob/main/data/tmpfiles.d/toolbox.conf are under /run.

If libgcc is in the Fedora CoreOS host image, and it breaks rpm-ostree install ... gcc because it's older than the version in the repositories, then wouldn't it be enough to just do:

We want them separate because a lack of an update in one package will fail the whole command, so we can only really group packages that are from the same SRPM.

The current changes seem to pass that stage without issues, if you're happy with them?

@debarshiray

Copy link
Copy Markdown
Member

However, looks like there's another issue in the Install Toolbx step that I'll need to look into:

Looks like this is coreos/fedora-coreos-tracker#2238 - can maybe be fixed in systemd, but likely will be a change needed on our side. If you want to move forward here, I think sudo systemd-tmpfiles --create --prefix=/run is enough? Both the files in https://github.com/containers/toolbox/blob/main/data/tmpfiles.d/toolbox.conf are under /run.

Sounds good to me, yes. Do you want to throw a patch in here?

If libgcc is in the Fedora CoreOS host image, and it breaks rpm-ostree install ... gcc because it's older than the version in the repositories, then wouldn't it be enough to just do:

We want them separate because a lack of an update in one package will fail the whole command, so we can only really group packages that are from the same SRPM.

Aha, I didn't know that.

@Rolv-Apneseth

Copy link
Copy Markdown
Contributor Author

Sounds good to me, yes. Do you want to throw a patch in here?

Sure yes, I'm working on understanding the upstream issue

@Rolv-Apneseth

Rolv-Apneseth commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor Author

Rebased and pushed a commit for that @debarshiray. Hopefully that lets the CI here avoid the issue.

@centosinfra-prod-github-app

Copy link
Copy Markdown

Build succeeded.
https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/local/buildset/340e9a3077364fd796f95f9985de9045

✔️ unit-test SUCCESS in 2m 08s
✔️ unit-test-migration-path-for-coreos-toolbox SUCCESS in 3m 16s
✔️ unit-test-restricted SUCCESS in 2m 06s
✔️ system-test-fedora-rawhide-commands-options SUCCESS in 37m 39s
✔️ system-test-fedora-rawhide-runtime-environment-arch-fedora SUCCESS in 27m 16s
✔️ system-test-fedora-rawhide-runtime-environment-ubuntu SUCCESS in 6m 41s
✔️ system-test-fedora-44-commands-options SUCCESS in 35m 15s
✔️ system-test-fedora-44-runtime-environment-arch-fedora SUCCESS in 25m 48s
✔️ system-test-fedora-44-runtime-environment-ubuntu SUCCESS in 6m 34s
✔️ system-test-fedora-43-commands-options SUCCESS in 34m 13s
✔️ system-test-fedora-43-runtime-environment-arch-fedora SUCCESS in 38m 00s
✔️ system-test-fedora-43-runtime-environment-ubuntu SUCCESS in 5m 54s
✔️ system-test-fedora-42-commands-options SUCCESS in 46m 54s
✔️ system-test-fedora-42-runtime-environment-arch-fedora SUCCESS in 25m 31s
✔️ system-test-fedora-42-runtime-environment-ubuntu SUCCESS in 7m 59s
✔️ system-test-fedora-coreos-next-commands-options SUCCESS in 53m 44s
✔️ system-test-fedora-coreos-next-runtime-environment-arch-fedora SUCCESS in 45m 41s
✔️ system-test-fedora-coreos-next-runtime-environment-ubuntu SUCCESS in 10m 03s
✔️ system-test-fedora-coreos-stable-commands-options SUCCESS in 40m 14s
✔️ system-test-fedora-coreos-stable-runtime-environment-arch-fedora SUCCESS in 44m 30s
✔️ system-test-fedora-coreos-stable-runtime-environment-ubuntu SUCCESS in 10m 48s
✔️ system-test-fedora-coreos-testing-commands-options SUCCESS in 51m 55s
✔️ system-test-fedora-coreos-testing-runtime-environment-arch-fedora SUCCESS in 44m 44s
✔️ system-test-fedora-coreos-testing-runtime-environment-ubuntu SUCCESS in 9m 11s

@debarshiray debarshiray left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I pulled out my Fedora 44 Silverblue laptop to play with rpm-ostree.

The lack of full-fledged manual pages for each sub-command always trips me up, and I wish --experimental and --from weren't hidden options. :)

It would have made things simpler if --from could be specified multiple times to enable multiple RPM repositories. It seems that currently, it can be specified multiple times and only the last one takes effect.

I used a throwaway pull request at #1851 to briefly test my theories and thoughts below. Feel free to use it for your own experiments.

loop:
- { name: glibc, packages: "glibc glibc-common glibc-minimal-langpack glibc-gconv-extra" }
- { name: shadow-utils, packages: "shadow-utils" }
- { name: libgcc, packages: "libgcc" }

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Nitpick. Since we are grouping things by the same source package, we should probably use name: gcc, because libgcc is a subpackage built from the gcc source package.

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.

I just thought it might be confusing since we're installing gcc below

- { name: shadow-utils, packages: "shadow-utils" }
- { name: libgcc, packages: "libgcc" }
loop_control:
label: "{{ item.name }}"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is it doing anything? :)

The documentation says:

When looping over complex data structures, the console
output of your task can be enormous. To limit the displayed
output, use the label directive with loop_control.

However, it doesn't seem to make any difference to the console output.

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.

Just seemed correct to include, but we can drop it I guess

# `next` stream pointing at pre-release repos during branching.
# With the below loop, we try and use the default `updates` repo,
# and fallback to `updates-testing` and `fedora` in turn so that we
# can update base packages on the system.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Didn't the updates-testing aspect turn out to be a red herring? In this case the problem is that the Fedora CoreOS host image has an older libgcc from an older gcc build and the fedora repository has a newer one, and this trips up the rpm install ... gcc later.

It seems worth it to include fedora, because during freezes and right after a release, the ISOs and images might have older builds than fedora. The problem might go away once a release gets older and newer builds make their way to updates.

More importantly, I don't know if updates-testing is enabled during the rpm-ostree install ... later on Fedora CoreOS Next? Is it? I am guessing that it's not in Stable? If it's not enabled, then there will be a difference between the builds seen by rpm-ostree override replace ... and rpm-ostree install ..., and the problem will be back.

I suppose we could find a way to conditionally use updates-testing depending on the Fedora CoreOS stream, but my rudimentary Ansible skills are preventing me from conjuring up a quick solution for that. :)

So, if you want to fix the current problem with the minimum amount of fuss, and I am fine with that, then we should drop updates-testing.

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.

But some updates were in updates-testing (glibc) and some were in fedora (libgcc). See the below:

output
[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="fedora" glibc glibc-common glibc-minimal-langpack glibc-gconv-extra
error: Parsing override source 'fedora': Not in KIND=NAME format
[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="repo=fedora" glibc glibc-common glibc-minimal-langpack glibc-gconv-extra
Checking out tree 3b7be3f... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
Updating metadata for 'fedora-cisco-openh264'... done
Updating metadata for 'updates-testing'... done
Updating metadata for 'updates'... done
Updating metadata for 'fedora'... done
Updating metadata for 'updates-archive'... done
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264'; generated: 2026-03-24T10:56:00Z solvables: 3
rpm-md repo 'updates-testing'; generated: 2026-10-13T01:52:04Z solvables: 14046
rpm-md repo 'updates'; generated: 2018-02-20T19:18:14Z solvables: 0
rpm-md repo 'fedora'; generated: 2026-10-12T08:28:25Z solvables: 75855
rpm-md repo 'updates-archive'; generated: 2026-08-21T13:38:41Z solvables: 0
Resolving dependencies... done
error: Request to reinstall exact base package versions: glibc glibc-common glibc-gconv-extra glibc-minimal-langpack
[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="repo=updates-testing" glibc glibc-common glibc-minimal-langpack glibc-gconv-extra
Checking out tree 3b7be3f... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:56:00Z solvables: 3
rpm-md repo 'updates-testing' (cached); generated: 2026-10-13T01:52:04Z solvables: 14046
rpm-md repo 'updates' (cached); generated: 2018-02-20T19:18:14Z solvables: 0
rpm-md repo 'fedora' (cached); generated: 2026-10-12T08:28:25Z solvables: 75855
rpm-md repo 'updates-archive' (cached); generated: 2026-08-21T13:38:41Z solvables: 0
Resolving dependencies... done
Will download: 4 packages (4.9 MB)
Downloading from 'updates-testing'... done
Importing packages... done
Applying 4 overrides
Processing packages... done
Running systemd-sysusers... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Upgraded:
  glibc 2.44-1.fc45 -> 2.44-2.fc45
  glibc-common 2.44-1.fc45 -> 2.44-2.fc45
  glibc-gconv-extra 2.44-1.fc45 -> 2.44-2.fc45
  glibc-minimal-langpack 2.44-1.fc45 -> 2.44-2.fc45
Run "systemctl reboot" to start a reboot

As for the install step, no updates-testing isn't in stable, but do the repos here not mean that updates-testing is being used in next?

[core@cosa-devsh ~]$ sudo rpm-ostree install gcc
Checking out tree 3b7be3f... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:56:00Z solvables: 3
rpm-md repo 'updates-testing' (cached); generated: 2026-10-13T01:52:04Z solvables: 14046
rpm-md repo 'updates' (cached); generated: 2018-02-20T19:18:14Z solvables: 0
rpm-md repo 'fedora' (cached); generated: 2026-10-12T08:28:25Z solvables: 75855
rpm-md repo 'updates-archive' (cached); generated: 2026-08-21T13:38:41Z solvables: 0
Resolving dependencies... done
error: Could not depsolve transaction; 1 problem detected:
 Problem: libgcc-16.2.1-2.fc45.1.i686 from fedora does not belong to a distupgrade repository
  - package gcc-16.2.1-2.fc45.1.x86_64 from fedora requires libgcc >= 16.2.1-2.fc45.1, but none of the providers can be installed
  - cannot install both libgcc-16.2.1-2.fc45.1.x86_64 from fedora and libgcc-16.2.1-2.fc45.x86_64 from @System
  - conflicting requests

Could you explain where the difference would come from on stable even? The updates-testing repo just fails:

[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="repo=updates-testing" glibc glibc-common glibc-minimal-langpack glibc-gconv-extra
Checking out tree 2c45d70... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora updates-archive
Updating metadata for 'fedora-cisco-openh264'... done
Updating metadata for 'updates'... done
Updating metadata for 'fedora'... done
Updating metadata for 'updates-archive'... done
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264'; generated: 2026-03-24T10:37:04Z solvables: 3
rpm-md repo 'updates'; generated: 2026-10-13T01:05:00Z solvables: 30441
rpm-md repo 'fedora'; generated: 2026-04-22T13:34:32Z solvables: 76354
rpm-md repo 'updates-archive'; generated: 2026-10-12T03:51:56Z solvables: 47351
error: No matches for 'glibc' in repo 'updates-testing'

Apologies if I'm misunderstanding anything.

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.

I think this also shows we still need updates-testing:

output
[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="repo=fedora" libgcc
Checking out tree 3b7be3f... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
Updating metadata for 'fedora-cisco-openh264'... done
Updating metadata for 'updates-testing'... done
Updating metadata for 'updates'... done
Updating metadata for 'fedora'... done
Updating metadata for 'updates-archive'... done
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264'; generated: 2026-03-24T10:56:00Z solvables: 3
rpm-md repo 'updates-testing'; generated: 2026-10-13T01:52:04Z solvables: 14046
rpm-md repo 'updates'; generated: 2018-02-20T19:18:14Z solvables: 0
rpm-md repo 'fedora'; generated: 2026-10-12T08:28:25Z solvables: 75855
rpm-md repo 'updates-archive'; generated: 2026-08-21T13:38:41Z solvables: 0
Resolving dependencies... done
Will download: 1 package (139.8 kB)
Downloading from 'fedora'... done
Importing packages... done
Applying 1 override
Processing packages... done
Running systemd-sysusers... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Upgraded:
  libgcc 16.2.1-2.fc45 -> 16.2.1-2.fc45.1
Run "systemctl reboot" to start a reboot
[core@cosa-devsh ~]$ sudo     rpm-ostree install --allow-inactive --apply-live --assumeyes --idempotent ShellCheck bats codespell gcc golang golang-github-cpuguy83-md2man httpd-tools meson ninja-build shadow-utils-subid-devel udisks2
Inactive requests:
  udisks2 (already provided by udisks2-2.11.2-1.fc45.x86_64)
Checking out tree 3b7be3f... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:56:00Z solvables: 3
rpm-md repo 'updates-testing' (cached); generated: 2026-10-13T01:52:04Z solvables: 14046
rpm-md repo 'updates' (cached); generated: 2018-02-20T19:18:14Z solvables: 0
rpm-md repo 'fedora' (cached); generated: 2026-10-12T08:28:25Z solvables: 75855
rpm-md repo 'updates-archive' (cached); generated: 2026-08-21T13:38:41Z solvables: 0
Resolving dependencies... done
Will download: 99 packages (143.9 MB)
Downloading from 'updates-testing'... done
Downloading from 'fedora'... done
Importing packages... done
Applying 1 override and 99 overlays
Processing packages... done
Running systemd-sysusers... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 31.1 MB (pkgcache branches: 0)
error: packages would be changed: 2, allow replacement to override
[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="repo=fedora" glibc glibc-common glibc-minimal-langpack glibc-gconv-extra
Inactive requests:
  udisks2 (already provided by udisks2-2.11.2-1.fc45.x86_64)
Checking out tree 3b7be3f... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:56:00Z solvables: 3
rpm-md repo 'updates-testing' (cached); generated: 2026-10-13T01:52:04Z solvables: 14046
rpm-md repo 'updates' (cached); generated: 2018-02-20T19:18:14Z solvables: 0
rpm-md repo 'fedora' (cached); generated: 2026-10-12T08:28:25Z solvables: 75855
rpm-md repo 'updates-archive' (cached); generated: 2026-08-21T13:38:41Z solvables: 0
Resolving dependencies... done
error: Request to reinstall exact base package versions: glibc glibc-common glibc-gconv-extra glibc-minimal-langpack
[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="repo=updates" glibc glibc-common glibc-minimal-langpack glibc-gconv-extra
Inactive requests:
  udisks2 (already provided by udisks2-2.11.2-1.fc45.x86_64)
Checking out tree 3b7be3f... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:56:00Z solvables: 3
rpm-md repo 'updates-testing' (cached); generated: 2026-10-13T01:52:04Z solvables: 14046
rpm-md repo 'updates' (cached); generated: 2018-02-20T19:18:14Z solvables: 0
rpm-md repo 'fedora' (cached); generated: 2026-10-12T08:28:25Z solvables: 75855
rpm-md repo 'updates-archive' (cached); generated: 2026-08-21T13:38:41Z solvables: 0
error: No matches for 'glibc' in repo 'updates'
[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="repo=updates-testing" glibc glibc-common glibc-minimal-langpack glibc-gconv-extra
Inactive requests:
  udisks2 (already provided by udisks2-2.11.2-1.fc45.x86_64)
Checking out tree 3b7be3f... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:56:00Z solvables: 3
rpm-md repo 'updates-testing' (cached); generated: 2026-10-13T01:52:04Z solvables: 14046
rpm-md repo 'updates' (cached); generated: 2018-02-20T19:18:14Z solvables: 0
rpm-md repo 'fedora' (cached); generated: 2026-10-12T08:28:25Z solvables: 75855
rpm-md repo 'updates-archive' (cached); generated: 2026-08-21T13:38:41Z solvables: 0
Resolving dependencies... done
Will download: 5 packages (5.6 MB)
Downloading from 'updates-testing'... done
Importing packages... done
Applying 5 overrides and 99 overlays
Processing packages... done
Running systemd-sysusers... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 38.3 MB (pkgcache branches: 1)
Upgraded:
  glibc 2.44-1.fc45 -> 2.44-2.fc45
  glibc-common 2.44-1.fc45 -> 2.44-2.fc45
  glibc-gconv-extra 2.44-1.fc45 -> 2.44-2.fc45
  glibc-minimal-langpack 2.44-1.fc45 -> 2.44-2.fc45
  libgcc 16.2.1-2.fc45 -> 16.2.1-2.fc45.1
Added:
  ShellCheck-0.11.0-5.fc45.x86_64
  apr-1.7.6-6.fc45.x86_64
  apr-util-1.6.5-2.fc45.x86_64
  apr-util-lmdb-1.6.5-2.fc45.x86_64
  apr-util-openssl-1.6.5-2.fc45.x86_64
  bats-1.14.0-1.fc45.noarch
  binutils-2.47-1.fc45.x86_64
  codespell-2.4.2-2.fc45.noarch
  cpp-16.2.1-2.fc45.1.x86_64
  elfutils-debuginfod-client-0.196-1.fc45.x86_64
  gcc-16.2.1-2.fc45.1.x86_64
  glibc-devel-2.44-2.fc45.x86_64
  go-filesystem-3.8.0-3.fc45.x86_64
  go-md2man-2.0.7-2.fc45.x86_64
  golang-1.27.2-1.fc45.x86_64
  golang-bin-1.27.2-1.fc45.x86_64
  golang-src-1.27.2-1.fc45.noarch
  groff-base-1.24.1-2.fc45.x86_64
  httpd-tools-2.4.69-1.fc45.x86_64
  kernel-headers-7.2.4-300.fc45.x86_64
  libatomic-16.2.1-2.fc45.1.x86_64
  libgomp-16.2.1-2.fc45.1.x86_64
  libmpc-1.4.1-2.fc45.x86_64
  libxcrypt-devel-4.5.2-4.fc45.x86_64
  make-1:4.4.1-13.fc45.x86_64
  meson-1.12.1-2.fc45.noarch
  meson-srpm-macros-1.12.1-2.fc45.noarch
  mpdecimal-4.0.1-4.fc45.x86_64
  ninja-build-1.13.2-6.fc45.x86_64
  parallel-20260822-2.fc45.noarch
  perl-AutoLoader-5.74-527.fc45.noarch
  perl-B-1.92-527.fc45.x86_64
  perl-Carp-1.54-527.fc45.noarch
  perl-Class-Struct-0.68-527.fc45.noarch
  perl-Data-Dumper-2.192-528.fc45.x86_64
  perl-Digest-1.20-527.fc45.noarch
  perl-Digest-MD5-2.59-527.fc45.x86_64
  perl-DynaLoader-1.57-527.fc45.x86_64
  perl-Encode-4:3.24-527.fc45.x86_64
  perl-Errno-1.39-527.fc45.x86_64
  perl-Exporter-5.79-527.fc45.noarch
  perl-Fcntl-1.20-527.fc45.x86_64
  perl-File-Basename-2.86-527.fc45.noarch
  perl-File-Path-2.18-527.fc45.noarch
  perl-File-Temp-1:0.231.200-527.fc45.noarch
  perl-File-stat-1.15-527.fc45.noarch
  perl-FileHandle-2.05-527.fc45.noarch
  perl-Getopt-Long-1:2.58-527.fc45.noarch
  perl-Getopt-Std-1.15-527.fc45.noarch
  perl-HTTP-Tiny-0.096-528.fc45.noarch
  perl-IO-1.56-527.fc45.x86_64
  perl-IO-Socket-IP-0.44-527.fc45.noarch
  perl-IO-Socket-SSL-2.099-2.fc45.noarch
  perl-IPC-Open3-1.24-527.fc45.noarch
  perl-MIME-Base32-1.303-26.fc45.noarch
  perl-MIME-Base64-3.16-527.fc45.x86_64
  perl-NDBM_File-1.18-527.fc45.x86_64
  perl-Net-SSLeay-1.96-5.fc45.x86_64
  perl-POSIX-2.26-527.fc45.x86_64
  perl-PathTools-3.95-527.fc45.x86_64
  perl-Pod-Escapes-1:1.07-527.fc45.noarch
  perl-Pod-Perldoc-3.28.01-527.fc45.noarch
  perl-Pod-Simple-1:3.48-527.fc45.noarch
  perl-Pod-Usage-4:2.05-527.fc45.noarch
  perl-Scalar-List-Utils-5:1.70-527.fc45.x86_64
  perl-SelectSaver-1.03-527.fc45.noarch
  perl-Socket-4:2.043-1.fc45.x86_64
  perl-Storable-1:3.41-527.fc45.x86_64
  perl-Symbol-1.09-527.fc45.noarch
  perl-Term-ANSIColor-5.01-527.fc45.noarch
  perl-Term-Cap-1.18-527.fc45.noarch
  perl-Text-ParseWords-3.31-527.fc45.noarch
  perl-Text-Tabs+Wrap-2024.001-527.fc45.noarch
  perl-Thread-Queue-3.14-527.fc45.noarch
  perl-Time-HiRes-4:1.9780-527.fc45.x86_64
  perl-Time-Local-2:1.350-527.fc45.noarch
  perl-URI-5.37-1.fc45.noarch
  perl-Unicode-Normalize-1.32-527.fc45.x86_64
  perl-base-2.27-527.fc45.noarch
  perl-constant-1.33-528.fc45.noarch
  perl-if-0.61.000-527.fc45.noarch
  perl-interpreter-4:5.44.0-527.fc45.x86_64
  perl-libnet-3.15-528.fc45.noarch
  perl-libs-4:5.44.0-527.fc45.x86_64
  perl-locale-1.13-527.fc45.noarch
  perl-mro-1.30-527.fc45.x86_64
  perl-overload-1.40-527.fc45.noarch
  perl-overloading-0.03-527.fc45.noarch
  perl-parent-1:0.244-527.fc45.noarch
  perl-podlators-1:6.1.1-1.fc45.noarch
  perl-threads-1:2.45-527.fc45.x86_64
  perl-threads-shared-1.73-527.fc45.x86_64
  perl-vars-1.05-527.fc45.noarch
  python-pip-wheel-26.1.2-5.fc45.noarch
  python-unversioned-command-3.15.0-1.fc45.noarch
  python3-3.15.0-1.fc45.x86_64
  python3-libs-3.15.0-1.fc45.x86_64
  shadow-utils-subid-devel-2:4.20.0-1.fc45.x86_64
  vim-filesystem-2:9.2.1129-1.fc45.noarch
Run "systemctl reboot" to start a reboot
[core@cosa-devsh ~]$ sudo     rpm-ostree install --allow-inactive --apply-live --assumeyes --idempotent ShellCheck bats codespell gcc golang golang-github-cpuguy83-md2man httpd-tools meson ninja-build shadow-utils-subid-devel udisks2
Inactive requests:
  udisks2 (already provided by udisks2-2.11.2-1.fc45.x86_64)
Checking out tree 3b7be3f... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates-testing updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:56:00Z solvables: 3
rpm-md repo 'updates-testing' (cached); generated: 2026-10-13T01:52:04Z solvables: 14046
rpm-md repo 'updates' (cached); generated: 2018-02-20T19:18:14Z solvables: 0
rpm-md repo 'fedora' (cached); generated: 2026-10-12T08:28:25Z solvables: 75855
rpm-md repo 'updates-archive' (cached); generated: 2026-08-21T13:38:41Z solvables: 0
Resolving dependencies... done
No change.

@debarshiray debarshiray Oct 14, 2026 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A quick reply to one of your questions, because I am running short on time.

But some updates were in updates-testing (glibc) and some were in fedora (libgcc). See the below:

As far as I can make out, the glibc builds in updates-testing aren't causing problems here. Those are missing updates and the CI will run with what's in fedora and updates-testing.

The problem here is that the libgcc in the Fedora CoreOS Next image is older than the gcc in the fedora repositories, and an attempt to rpm-ostree install gcc fails due to this mismatch. Probably, because the image was created from an older snapshot of builds, and just this gets it going:

$ rpm-ostree override replace --experimental --from repo=fedora libgcc

See #1851 for a full CI run with logs. Of course, we can't literally do what's in that throwaway PR. It's just a demo.

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.

Not entirely sure why the CI ends up behaving differently than #1847 (comment) (maybe different next image) but I think the output in that comment shows that it can be an issue if we don't take updates from updates-testing

become: yes
command: rpm-ostree override replace --experimental --from repo=updates shadow-utils
shell: |
for repo in updates updates-testing fedora; do

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I am not fully sure about the rpm-ostree override replace semantics, and I am wondering if the order could/should be:

fedora updates updates-testing

... to match the ascending order of builds - fedora has the oldest builds, followed by updates and updates-testing has the newest.

Train of thought follows below.

# Package not found in this repo, try the next one.
if echo "$output" | grep -qi 'no matches'; then
continue
fi

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Train of thought follows from above.

Error handling, loops, and standard error/output stream handling in shell scripts stress me out under the best of conditions, and this is an Ansible playbook that's difficult to test locally. :)

So, I am wondering if something like this will actually work:

    for repo in fedora updates; do
      rpm-ostree override replace --experimental --from repo="$repo" {{ item.packages }} 2>&1
    done

It can be slower because it will always run rpm-ostree multiple times for a package, and not terminate the loop on success. The advantage is that it is so simple to understand that we won't have to worry about testing the error handling and grepping for sub-strings in the output. The test suite does so much disk and network I/O that the extra rpm-ostree invocations will be lost in the noise.

The problem is, I don't know if rpm-ostree override replace semantics match my expectations. I am hoping that first it will add an override for an older build from fedora, and then overwrite it with a newer one from updates. Is that how it works?

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.

I think it does work like that yes. I'm not entirely sure how to confirm. It does seem to behave well for the series of overrides we're doing there though.

I'll make that change and we'll see what CI says.

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.

OK, that's annoying. Doesn't look like it does the right thing:

[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="repo=fedora" libgcc
Checking out tree 2c45d70... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:37:04Z solvables: 3
rpm-md repo 'updates' (cached); generated: 2026-10-13T01:05:00Z solvables: 30441
rpm-md repo 'fedora' (cached); generated: 2026-04-22T13:34:32Z solvables: 76354
rpm-md repo 'updates-archive' (cached); generated: 2026-10-12T03:51:56Z solvables: 47351
Resolving dependencies... done
Will download: 1 package (129.3 kB)
Downloading from 'fedora'... done
Importing packages... done
Applying 1 override
Processing packages... done
Running systemd-sysusers... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Downgraded:
  libgcc 16.2.1-2.fc44 -> 16.0.1-0.10.fc44
Run "systemctl reboot" to start a reboot
[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="repo=updates" libgcc
Checking out tree 2c45d70... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:37:04Z solvables: 3
rpm-md repo 'updates' (cached); generated: 2026-10-13T01:05:00Z solvables: 30441
rpm-md repo 'fedora' (cached); generated: 2026-04-22T13:34:32Z solvables: 76354
rpm-md repo 'updates-archive' (cached); generated: 2026-10-12T03:51:56Z solvables: 47351
Resolving dependencies... done
Applying 1 override
Processing packages... done
Running systemd-sysusers... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 29.2 MB (pkgcache branches: 0)
Downgraded:
  libgcc 16.2.1-2.fc44 -> 16.0.1-0.10.fc44
Run "systemctl reboot" to start a reboot
[core@cosa-devsh ~]$ sudo rpm-ostree override replace --experimental --from="repo=updates-testing" libgcc
Checking out tree 2c45d70... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2026-03-24T10:37:04Z solvables: 3
rpm-md repo 'updates' (cached); generated: 2026-10-13T01:05:00Z solvables: 30441
rpm-md repo 'fedora' (cached); generated: 2026-04-22T13:34:32Z solvables: 76354
rpm-md repo 'updates-archive' (cached); generated: 2026-10-12T03:51:56Z solvables: 47351
Resolving dependencies... done
Applying 1 override
Processing packages... done
Running systemd-sysusers... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 29.2 MB (pkgcache branches: 0)
Downgraded:
  libgcc 16.2.1-2.fc44 -> 16.0.1-0.10.fc44
Run "systemctl reboot" to start a reboot

That's on an F44 node

@debarshiray debarshiray mentioned this pull request Oct 12, 2026
@debarshiray

Copy link
Copy Markdown
Member

I am taking an extended weekend break from Thursday to Monday. I will get back to this when I am back on Tuesday.

@Rolv-Apneseth

Copy link
Copy Markdown
Contributor Author

No rush, enjoy the break

…ng and fedora repos

When trying to replace the existing versions of some base Fedora CoreOS
packages, we had repo=updates hard-coded. However, while the `next`
stream is pointing at a pre-release version, updates are either in
repo=updates-testing or repo=fedora. Let's add some fallback logic to
avoid failures when this is the case.

Signed-off-by: Rolv Apneseth <[email protected]>
As of systemd v261, bare `systemd-tmpfiles --create` calls now attempt
to set permissions on / on systems which are not set to 0o555. This
currently fails on Fedora CoreOS systems due to them having the
incorrect permissions set while also having a read-only root filesystem.
This leads to the following error:

  fchmod() of / failed: Read-only file system

Since both entries in data/tmpfiles.d/toolbox.conf are under /run, it's
safe for us to restrict these calls to this directory with --prefix=/run
in order to avoid that issue on FCOS.

See: coreos/fedora-coreos-tracker#2238

Signed-off-by: Rolv Apneseth <[email protected]>
@centosinfra-prod-github-app

Copy link
Copy Markdown

Build failed.
https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/local/buildset/76f0b85d3cb34b2686308aae230464e6

✔️ unit-test SUCCESS in 2m 03s
✔️ unit-test-migration-path-for-coreos-toolbox SUCCESS in 3m 19s
✔️ unit-test-restricted SUCCESS in 1m 58s
✔️ system-test-fedora-rawhide-commands-options SUCCESS in 36m 06s
✔️ system-test-fedora-rawhide-runtime-environment-arch-fedora SUCCESS in 24m 44s
✔️ system-test-fedora-rawhide-runtime-environment-ubuntu SUCCESS in 5m 51s
✔️ system-test-fedora-44-commands-options SUCCESS in 31m 32s
✔️ system-test-fedora-44-runtime-environment-arch-fedora SUCCESS in 23m 49s
✔️ system-test-fedora-44-runtime-environment-ubuntu SUCCESS in 5m 35s
✔️ system-test-fedora-43-commands-options SUCCESS in 31m 37s
✔️ system-test-fedora-43-runtime-environment-arch-fedora SUCCESS in 22m 45s
✔️ system-test-fedora-43-runtime-environment-ubuntu SUCCESS in 6m 40s
❌ system-test-fedora-coreos-next-commands-options NODE_FAILURE Node(set) request 200-0000255674 failed in 0s
❌ system-test-fedora-coreos-next-runtime-environment-arch-fedora NODE_FAILURE Node(set) request 200-0000255675 failed in 0s
❌ system-test-fedora-coreos-next-runtime-environment-ubuntu NODE_FAILURE Node(set) request 200-0000255676 failed in 0s
✔️ system-test-fedora-coreos-stable-commands-options SUCCESS in 33m 43s
✔️ system-test-fedora-coreos-stable-runtime-environment-arch-fedora SUCCESS in 23m 24s
✔️ system-test-fedora-coreos-stable-runtime-environment-ubuntu SUCCESS in 6m 30s
✔️ system-test-fedora-coreos-testing-commands-options SUCCESS in 31m 20s
✔️ system-test-fedora-coreos-testing-runtime-environment-arch-fedora SUCCESS in 22m 56s
✔️ system-test-fedora-coreos-testing-runtime-environment-ubuntu SUCCESS in 6m 17s

@Rolv-Apneseth

Copy link
Copy Markdown
Contributor Author

@TristanCacqueray could I get logs for the above node failures on coreos-next? #1847 (comment) passed and this was just a rebase so must be a new issue

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