Skip to content

sysupdate: run a second update pass when the refresh changed the tags - #88

Open
mvo5 wants to merge 2 commits into
mainfrom
re-run-for-tags
Open

mvo5 wants to merge 2 commits into
mainfrom
re-run-for-tags

Conversation

@mvo5

@mvo5 mvo5 commented Oct 23, 2026

Copy link
Copy Markdown
Member

Includes #86 and needs systemd/systemd#43851 to fully work but once landed we should have the full tag based install for docker and anything in the per-machine repo/base-os repo.


The machine tags from a confext only land in /etc/machine-info during
the systemd-confext refresh, i.e. after the update already ran. So
features gated on those tags (like docker) were only picked up by the
next timer run. Now we compare the tags before and after the refresh
and if they changed we auto-enable and update once more.

Note that not a full loop, two passes are enough for our tags use-case.
Later if we would want to use systext to ship new transfer files we
still need the --loop= from systemd v263+ or a manual loop here.

mvo5 added 2 commits October 15, 2026 09:41
We used to set the machine tags based on a remote TUF tags file. In
the most recent discussions we decided that we would instead make
this more client focused. So this commit drops setting the tags from
a remote resource and instead relies on something else setting them.

In our case that is a confext using /etc/tags.d [1]. Without this
commit the machine tags from the confext would be reset by quarry
every run.

This also enables `Wants=systemd-sysupdate-auto-enable.service`
now so that we get the auto-enable of components/features based
on machine-tags. It does not do the loop-until-things-settled,
that is a bigger change and our current 2min timer will do
okay but we really need this soon too.

Signed-off-by: Michael Vogt <michael@amutable.com>

[1] amutable-systems/amutablectl#194
The machine tags from a confext only land in /etc/machine-info during
the `systemd-confext refresh`, i.e. after the update already ran. So
features gated on those tags (like docker) were only picked up by the
next timer run. Now we compare the tags before and after the refresh
and if they changed we auto-enable and update once more.

Note that not a full loop, two passes are enough for our tags use-case.
Later if we would want to use systext to ship new transfer files we
still need the --loop= from systemd v263+ or a manual loop here.
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