sysupdate: Emit READY=1 status when installing

`READY=1` is already correctly emitted when acquiring an update, but was
forgotten to be emitted when subsequently installing that update.

That meant that the state tracking code in `sysupdated` and hence
`updatectl` could not properly report the progress of the install
operation, and hence printed “Already up-to-date” after a successful
update installation, rather than “Done”.

Add a test to catch this in future.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>

Fixes: https://github.com/systemd/systemd/issues/41502
This commit is contained in:
Philip Withnall
2026-04-20 18:02:42 +01:00
committed by Luca Boccassi
parent cbbaa1a335
commit db3bfa0c4c
2 changed files with 6 additions and 2 deletions

View File

@@ -1202,7 +1202,9 @@ static int context_install(
}
(void) sd_notifyf(/* unset_environment=*/ false,
"STATUS=Installing '%s'.", us->version);
"READY=1\n"
"X_SYSUPDATE_VERSION=%s\n"
"STATUS=Installing '%s'.", us->version, us->version);
for (size_t i = 0; i < c->n_transfers; i++) {
Instance *inst = us->instances[i];

View File

@@ -373,7 +373,9 @@ EOF
if $have_updatectl; then
systemctl start systemd-sysupdated
"$SYSUPDATE" --verify=no check-new
updatectl update
updatectl update |& tee "$WORKDIR"/updatectl-update-6
grep "Done" "$WORKDIR"/updatectl-update-6
(! grep "Already up-to-date" "$WORKDIR"/updatectl-update-6)
else
# If no updatectl, gracefully fall back to systemd-sysupdate
update_now "$update_type"