From 1637c093d38f2c92978be56cdab8eda60ae0f285 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 26 Aug 2026 14:48:29 +0100 Subject: [PATCH 1/6] man: add 'experimental feature' XML snippet --- man/experimental.xml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 man/experimental.xml diff --git a/man/experimental.xml b/man/experimental.xml new file mode 100644 index 0000000000..b2f412f6ca --- /dev/null +++ b/man/experimental.xml @@ -0,0 +1,23 @@ + + + + + + + + + <!-- for individual section(s) of a manpage --> + <para id="singular">This option is experimental and subject to change at any given moment without notice. + It will be stabilized and given a backward-compatibility guarantee in a future release.</para> + + <para id="plural">These options are experimental and subject to change at any given moment without notice. + They will be stabilized and given a backward-compatibility guarantee in a future release.</para> + + <!-- for a whole manpage --> + <refsect1 id="component"><title>Experimental + This component is experimental and subject to change at any given moment without notice. + It will be stabilized and given a backward-compatibility guarantee in a future release. + + From 9df2b263344a3e8e223bf57450fe0fc1edbdf88f Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 26 Aug 2026 15:03:04 +0100 Subject: [PATCH 2/6] man: mark systemd-sysupdate[d] as experimental --- man/org.freedesktop.sysupdate1.xml | 2 ++ man/systemd-sysupdate.xml | 2 ++ man/systemd-sysupdated.service.xml | 5 ++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/man/org.freedesktop.sysupdate1.xml b/man/org.freedesktop.sysupdate1.xml index fea301167e..2063bda26b 100644 --- a/man/org.freedesktop.sysupdate1.xml +++ b/man/org.freedesktop.sysupdate1.xml @@ -20,6 +20,8 @@ The D-Bus interface of systemd-sysupdated + + Introduction diff --git a/man/systemd-sysupdate.xml b/man/systemd-sysupdate.xml index 49080f1e36..8a0e9d7e24 100644 --- a/man/systemd-sysupdate.xml +++ b/man/systemd-sysupdate.xml @@ -40,6 +40,8 @@ systemd-sysupdate-update.service + + Description diff --git a/man/systemd-sysupdated.service.xml b/man/systemd-sysupdated.service.xml index 768b19ef8d..0010afddbe 100644 --- a/man/systemd-sysupdated.service.xml +++ b/man/systemd-sysupdated.service.xml @@ -3,7 +3,8 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> - + systemd-sysupdated.service @@ -26,6 +27,8 @@ /usr/lib/systemd/systemd-sysupdated + + Description From 35530fcf9432d9807a1bc564a24c5ecad6a77b7a Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 26 Aug 2026 15:14:11 +0100 Subject: [PATCH 3/6] sysupdate: move back to libexecdir to mark as experimental Fixes https://github.com/systemd/systemd/issues/43498 --- src/sysupdate/meson.build | 9 +-------- test/units/TEST-72-SYSUPDATE.sh | 2 +- units/meson.build | 8 ++++---- ....service => systemd-sysupdate-auto-enable.service.in} | 4 ++-- ...eboot.service => systemd-sysupdate-reboot.service.in} | 2 +- ...pdate.service => systemd-sysupdate-update.service.in} | 2 +- ...-sysupdate@.service => systemd-sysupdate@.service.in} | 2 +- 7 files changed, 11 insertions(+), 18 deletions(-) rename units/{systemd-sysupdate-auto-enable.service => systemd-sysupdate-auto-enable.service.in} (77%) rename units/{systemd-sysupdate-reboot.service => systemd-sysupdate-reboot.service.in} (91%) rename units/{systemd-sysupdate-update.service => systemd-sysupdate-update.service.in} (93%) rename units/{systemd-sysupdate@.service => systemd-sysupdate@.service.in} (95%) diff --git a/src/sysupdate/meson.build b/src/sysupdate/meson.build index c4f569096f..1d7cc3871a 100644 --- a/src/sysupdate/meson.build +++ b/src/sysupdate/meson.build @@ -24,7 +24,7 @@ systemd_updatectl_sources = files( ) executables += [ - executable_template + { + libexec_template + { 'name' : 'systemd-sysupdate', 'public' : true, 'conditions' : ['ENABLE_SYSUPDATE'], @@ -63,10 +63,3 @@ if conf.get('ENABLE_SYSUPDATED') == 1 install_data('org.freedesktop.sysupdate1.policy', install_dir : polkitpolicydir) endif - -if conf.get('ENABLE_SYSUPDATE') == 1 - # symlink for backwards compatibility after rename - install_symlink('systemd-sysupdate', - pointing_to : libexecdir_to_bin / 'systemd-sysupdate', - install_dir : libexecdir) -endif diff --git a/test/units/TEST-72-SYSUPDATE.sh b/test/units/TEST-72-SYSUPDATE.sh index 5224071ddb..b5fd26f3a7 100755 --- a/test/units/TEST-72-SYSUPDATE.sh +++ b/test/units/TEST-72-SYSUPDATE.sh @@ -5,7 +5,7 @@ set -eux set -o pipefail -SYSUPDATE=/usr/bin/systemd-sysupdate +SYSUPDATE=/usr/lib/systemd/systemd-sysupdate SYSUPDATED=/lib/systemd/systemd-sysupdated UPDATECTL="" VARLINK_SOCKET=/run/systemd/io.systemd.SysUpdate diff --git a/units/meson.build b/units/meson.build index 6e0c474830..a02981817f 100644 --- a/units/meson.build +++ b/units/meson.build @@ -881,11 +881,11 @@ units = [ 'conditions' : ['ENABLE_SYSINSTALL'], }, { - 'file' : 'systemd-sysupdate-auto-enable.service', + 'file' : 'systemd-sysupdate-auto-enable.service.in', 'conditions' : ['ENABLE_SYSUPDATE'], }, { - 'file' : 'systemd-sysupdate-reboot.service', + 'file' : 'systemd-sysupdate-reboot.service.in', 'conditions' : ['ENABLE_SYSUPDATE'], }, { @@ -893,12 +893,12 @@ units = [ 'conditions' : ['ENABLE_SYSUPDATE'], }, { - 'file' : 'systemd-sysupdate-update.service', + 'file' : 'systemd-sysupdate-update.service.in', 'conditions' : ['ENABLE_SYSUPDATE'], 'symlinks' : ['systemd-sysupdate.service'], # compatibility after rename }, { - 'file' : 'systemd-sysupdate@.service', + 'file' : 'systemd-sysupdate@.service.in', 'conditions' : ['ENABLE_SYSUPDATE'], }, { diff --git a/units/systemd-sysupdate-auto-enable.service b/units/systemd-sysupdate-auto-enable.service.in similarity index 77% rename from units/systemd-sysupdate-auto-enable.service rename to units/systemd-sysupdate-auto-enable.service.in index 2fee785f87..34cf0cae35 100644 --- a/units/systemd-sysupdate-auto-enable.service +++ b/units/systemd-sysupdate-auto-enable.service.in @@ -14,8 +14,8 @@ Before=systemd-sysupdate-update.service [Service] Type=oneshot -ExecStart=systemd-sysupdate enable-component --component-suggested -ExecStart=systemd-sysupdate enable-feature --component-all --feature-suggested +ExecStart={{LIBEXECDIR}}/systemd-sysupdate enable-component --component-suggested +ExecStart={{LIBEXECDIR}}/systemd-sysupdate enable-feature --component-all --feature-suggested [Install] WantedBy=systemd-sysupdate-update.service diff --git a/units/systemd-sysupdate-reboot.service b/units/systemd-sysupdate-reboot.service.in similarity index 91% rename from units/systemd-sysupdate-reboot.service rename to units/systemd-sysupdate-reboot.service.in index 6750fc431e..5d4011a213 100644 --- a/units/systemd-sysupdate-reboot.service +++ b/units/systemd-sysupdate-reboot.service.in @@ -14,7 +14,7 @@ ConditionVirtualization=!container [Service] Type=oneshot -ExecStart=systemd-sysupdate reboot +ExecStart={{LIBEXECDIR}}/systemd-sysupdate reboot [Install] Also=systemd-sysupdate-reboot.timer diff --git a/units/systemd-sysupdate-update.service b/units/systemd-sysupdate-update.service.in similarity index 93% rename from units/systemd-sysupdate-update.service rename to units/systemd-sysupdate-update.service.in index 839c7fb06d..894d17034c 100644 --- a/units/systemd-sysupdate-update.service +++ b/units/systemd-sysupdate-update.service.in @@ -17,7 +17,7 @@ ConditionVirtualization=!container [Service] Type=simple NotifyAccess=main -ExecStart=systemd-sysupdate update --component-all --cleanup=yes +ExecStart={{LIBEXECDIR}}/systemd-sysupdate update --component-all --cleanup=yes # Keep this sandboxing synchronised with systemd-sysupdate@.service CapabilityBoundingSet=CAP_CHOWN CAP_FOWNER CAP_FSETID CAP_MKNOD CAP_SETFCAP CAP_SYS_ADMIN CAP_SETPCAP CAP_DAC_OVERRIDE CAP_LINUX_IMMUTABLE diff --git a/units/systemd-sysupdate@.service b/units/systemd-sysupdate@.service.in similarity index 95% rename from units/systemd-sysupdate@.service rename to units/systemd-sysupdate@.service.in index f8e86dd2c4..c54d469597 100644 --- a/units/systemd-sysupdate@.service +++ b/units/systemd-sysupdate@.service.in @@ -15,7 +15,7 @@ Conflicts=shutdown.target Before=shutdown.target [Service] -ExecStart=-systemd-sysupdate +ExecStart=-{{LIBEXECDIR}}/systemd-sysupdate # Keep this sandboxing synchronised with systemd-sysupdate-update.service CapabilityBoundingSet=CAP_CHOWN CAP_FOWNER CAP_FSETID CAP_MKNOD CAP_SETFCAP CAP_SYS_ADMIN CAP_SETPCAP CAP_DAC_OVERRIDE CAP_LINUX_IMMUTABLE From bc4d0fde7cafb27940868654c1c2a25da84be053 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 26 Aug 2026 15:31:41 +0100 Subject: [PATCH 4/6] mkosi: update debian commit reference to b12500baf3363288c692d47814c53b55f13e424e * b12500baf3 Drop sd-sysupdate for upstream builds, experimental again * 674dd1e684 d/t/localed-locale: skip in Debian, not supported * 9bd985d014 d/t/localed-locale: clean up on any error with a trap * 56153a917f d/t/control: add dependencies missing for incus image --- mkosi/mkosi.pkgenv/mkosi.conf.d/debian-ubuntu.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkosi/mkosi.pkgenv/mkosi.conf.d/debian-ubuntu.conf b/mkosi/mkosi.pkgenv/mkosi.conf.d/debian-ubuntu.conf index aa60579c4d..9cb78e36bb 100644 --- a/mkosi/mkosi.pkgenv/mkosi.conf.d/debian-ubuntu.conf +++ b/mkosi/mkosi.pkgenv/mkosi.conf.d/debian-ubuntu.conf @@ -9,5 +9,5 @@ Environment= GIT_URL=https://salsa.debian.org/systemd-team/systemd.git GIT_SUBDIR=debian GIT_BRANCH=debian/master - GIT_COMMIT=9badaae1c4c08db447b4e409784688f32d3f04f3 + GIT_COMMIT=b12500baf3363288c692d47814c53b55f13e424e PKG_SUBDIR=debian From 11a9b02493ce723976179f77f6acf86bb4bd74b8 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 26 Aug 2026 18:18:58 +0100 Subject: [PATCH 5/6] mkosi: hack SUSE spec to remove bin/sd-sysupdate --- .../mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mkosi/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot b/mkosi/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot index f3e8841e54..bbebf96e03 100755 --- a/mkosi/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot +++ b/mkosi/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot @@ -20,11 +20,13 @@ TS="${SOURCE_DATE_EPOCH:-$(date +%s)}" # extension. # TODO: remove autovt@ removal when the upstream spec is updated # TODO: remove systemd-udevd-control.socket removal when the upstream spec is updated +# TODO: remove systemd-sysupdate removal when the upstream spec is updated while read -r filelist; do sed -E \ -e '/autovt@/d' \ -e '/sockets\.target\.wants\/systemd-udevd-control\.socket/d' \ -e '/systemd-udevd-control\.socket\.8/d' \ + -e '/^%\{_bindir\}\/systemd-sysupdate$/d' \ -e 's/\.gz$//' \ "$filelist" >"/tmp/$(basename "$filelist")" mount --bind "/tmp/$(basename "$filelist")" "$filelist" From 104ce53916c356e04582148041c25e174465e4a9 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 26 Aug 2026 15:20:42 +0100 Subject: [PATCH 6/6] NEWS: note that sysupdate is experimental again --- NEWS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/NEWS b/NEWS index 8460693200..2f8402e100 100644 --- a/NEWS +++ b/NEWS @@ -104,6 +104,12 @@ CHANGES WITH 262: so the filters were silently ignored. Scripts relying on filtered field lists should be adjusted to query entries explicitly. + * The systemd-sysupdate binary has been moved back from bindir to + libexecdir, as more breaking changes are forthcoming and it is thus + again marked as experimental. It will be stabilized in a future + release. The libexecdir path is the backwards compatible way to call + it. + Changes in the system and service manager: * The manager now embeds a basic set of unit files (basic.target,