Merge ~enr0n/ubuntu/+source/systemd:ubuntu-kinetic into ~ubuntu-core-dev/ubuntu/+source/systemd:ubuntu-kinetic

Proposed by Nick Rosbrook
Status: Merged
Merged at revision: fb5fdc89d8514683e3c46b6e5267dce869495808
Proposed branch: ~enr0n/ubuntu/+source/systemd:ubuntu-kinetic
Merge into: ~ubuntu-core-dev/ubuntu/+source/systemd:ubuntu-kinetic
Diff against target: 7594 lines (+2925/-689)
205 files modified
.gitignore (+1/-0)
debian/changelog (+190/-5)
debian/control (+110/-9)
debian/extra/initramfs/post-update.d/systemd-boot (+11/-0)
debian/extra/kernel/postinst.d/systemd-boot (+11/-0)
debian/extra/kernel/postrm.d/systemd-boot (+11/-0)
debian/extra/pam-configs/systemd-homed (+15/-0)
debian/gitlab-ci.yml (+2/-0)
debian/libnss-myhostname.install (+0/-2)
debian/libnss-myhostname.manpages (+2/-0)
debian/libnss-myhostname.nss (+1/-0)
debian/libnss-mymachines.install (+0/-2)
debian/libnss-mymachines.manpages (+2/-0)
debian/libnss-mymachines.nss (+1/-0)
debian/libnss-resolve.install (+0/-2)
debian/libnss-resolve.lintian-overrides (+0/-1)
debian/libnss-resolve.manpages (+2/-0)
debian/libnss-resolve.nss (+1/-0)
debian/libnss-systemd.install (+0/-2)
debian/libnss-systemd.manpages (+2/-0)
debian/libnss-systemd.nss (+4/-0)
debian/libpam-systemd.install (+1/-2)
debian/libpam-systemd.manpages (+1/-0)
debian/libsystemd-dev.install (+0/-2)
debian/libsystemd-dev.manpages (+2/-0)
debian/libsystemd-shared.install (+2/-0)
debian/libsystemd-shared.lintian-overrides (+2/-0)
debian/libudev-dev.install (+0/-2)
debian/libudev-dev.manpages (+2/-0)
debian/patches/Move-homectl-and-userdbctl-to-bindir.patch (+35/-0)
debian/patches/debian/Downgrade-a-couple-of-warnings-to-debug.patch (+4/-4)
debian/patches/debian/Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-back-to-.patch (+4/-4)
debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch (+2/-2)
debian/patches/debian/Use-Debian-specific-config-files.patch (+2/-2)
debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch (+3/-3)
debian/patches/meson-install-libsystemd-shared-into-rootpkglibdir.patch (+1218/-0)
debian/patches/series (+4/-5)
debian/patches/shellcheck-clean-kernel-install-again.patch (+46/-0)
debian/patches/test-denylist-TEST-29-PORTABLE-again.patch (+18/-0)
debian/rules (+54/-38)
debian/shlibs.local.in (+2/-2)
debian/systemd-boot-efi.install (+1/-0)
debian/systemd-boot-efi.lintian-overrides (+6/-0)
debian/systemd-boot-efi.manpages (+1/-0)
debian/systemd-boot.install (+10/-0)
debian/systemd-boot.lintian-overrides (+3/-0)
debian/systemd-boot.manpages (+8/-0)
debian/systemd-container.install (+0/-6)
debian/systemd-container.manpages (+6/-0)
debian/systemd-coredump.install (+0/-3)
debian/systemd-coredump.manpages (+3/-0)
debian/systemd-homed.install (+11/-0)
debian/systemd-homed.lintian-overrides (+5/-0)
debian/systemd-homed.manpages (+1/-0)
debian/systemd-homed.postinst (+7/-0)
debian/systemd-homed.prerm (+20/-0)
debian/systemd-journal-remote.install (+0/-12)
debian/systemd-journal-remote.manpages (+12/-0)
debian/systemd-oomd.install (+0/-1)
debian/systemd-oomd.manpages (+1/-0)
debian/systemd-resolved.install (+13/-0)
debian/systemd-resolved.links (+1/-0)
debian/systemd-resolved.lintian-overrides (+3/-0)
debian/systemd-resolved.manpages (+4/-0)
debian/systemd-resolved.postinst (+28/-0)
debian/systemd-standalone-sysusers.manpages (+1/-0)
debian/systemd-standalone-tmpfiles.manpages (+1/-0)
debian/systemd-sysv.install (+0/-7)
debian/systemd-sysv.manpages (+7/-0)
debian/systemd-timesyncd.install (+0/-1)
debian/systemd-timesyncd.manpages (+1/-0)
debian/systemd-userdbd.install (+5/-0)
debian/systemd-userdbd.lintian-overrides (+3/-0)
debian/systemd-userdbd.manpages (+1/-0)
debian/systemd.NEWS (+21/-0)
debian/systemd.install (+0/-5)
debian/systemd.lintian-overrides (+0/-7)
debian/systemd.maintscript (+1/-0)
debian/systemd.manpages (+4/-0)
debian/systemd.postinst (+1/-4)
debian/tests/control (+4/-0)
debian/udev.install (+0/-7)
debian/udev.manpages (+7/-0)
dev/null (+0/-33)
hwdb.d/70-analyzers.hwdb (+0/-1)
man/journalctl.xml (+1/-1)
man/os-release.xml (+1/-1)
man/pam_systemd_home.xml (+14/-5)
man/sd_notify.xml (+9/-8)
man/system-or-user-ns.xml (+2/-2)
man/systemctl.xml (+41/-40)
man/systemd-creds.xml (+1/-1)
man/systemd-integritysetup-generator.xml (+1/-1)
man/systemd-sysctl.service.xml (+1/-1)
man/systemd.exec.xml (+34/-12)
man/systemd.mount.xml (+7/-9)
man/systemd.netdev.xml (+1/-1)
man/systemd.network.xml (+6/-6)
man/sysupdate.d.xml (+10/-10)
man/udevadm.xml (+2/-1)
meson.build (+15/-2)
src/analyze/analyze-security.c (+22/-17)
src/basic/fd-util.c (+2/-0)
src/basic/gcrypt-util.c (+2/-0)
src/basic/hashmap.c (+8/-5)
src/basic/missing_fs.h (+5/-0)
src/basic/set.h (+6/-3)
src/basic/stat-util.c (+6/-14)
src/basic/stat-util.h (+7/-2)
src/basic/time-util.c (+1/-1)
src/basic/unit-file.c (+1/-4)
src/basic/virt.c (+12/-7)
src/boot/efi/meson.build (+13/-0)
src/boot/efi/xbootldr.c (+1/-1)
src/cgroups-agent/cgroups-agent.c (+7/-0)
src/core/bpf/restrict_ifaces/restrict-ifaces.bpf.c (+1/-1)
src/core/dbus.c (+3/-1)
src/core/import-creds.c (+4/-4)
src/core/load-fragment.c (+46/-12)
src/core/main.c (+10/-7)
src/core/mount.c (+7/-5)
src/core/namespace.c (+4/-1)
src/core/scope.c (+1/-1)
src/core/systemd.pc.in (+2/-0)
src/coredump/coredump.c (+9/-2)
src/dissect/dissect.c (+1/-0)
src/fundamental/sha256.c (+1/-1)
src/home/homed-home-bus.c (+2/-0)
src/home/homework-cifs.c (+5/-0)
src/home/homework-luks.c (+4/-8)
src/home/homework-mount.c (+2/-0)
src/home/homework.h (+2/-1)
src/import/pull-common.h (+9/-9)
src/integritysetup/integritysetup.c (+6/-6)
src/journal-remote/microhttpd-util.c (+1/-1)
src/kernel-install/kernel-install.in (+1/-1)
src/libsystemd-network/dhcp6-option.c (+7/-7)
src/libsystemd-network/sd-dhcp-lease.c (+1/-1)
src/libsystemd-network/sd-dhcp6-lease.c (+22/-12)
src/libsystemd-network/test-dhcp6-client.c (+42/-0)
src/libsystemd/sd-bus/sd-bus.c (+1/-1)
src/libsystemd/sd-device/device-internal.h (+1/-1)
src/libsystemd/sd-device/device-monitor.c (+2/-2)
src/libsystemd/sd-device/device-private.c (+33/-22)
src/libsystemd/sd-device/device-private.h (+3/-3)
src/libsystemd/sd-device/sd-device.c (+3/-0)
src/libsystemd/sd-device/test-sd-device.c (+18/-4)
src/libsystemd/sd-event/sd-event.c (+1/-1)
src/libsystemd/sd-event/test-event.c (+52/-0)
src/libsystemd/sd-id128/id128-util.c (+4/-4)
src/libsystemd/sd-journal/journal-verify.c (+6/-1)
src/libsystemd/sd-journal/sd-journal.c (+2/-0)
src/locale/keymap-util.c (+1/-1)
src/network/netdev/l2tp-tunnel.c (+1/-1)
src/network/netdev/macsec.c (+0/-2)
src/network/netdev/wireguard.c (+0/-2)
src/network/networkctl.c (+1/-1)
src/network/networkd-dhcp-common.c (+4/-7)
src/network/networkd-dhcp4.c (+0/-5)
src/network/networkd-dhcp6.c (+0/-5)
src/network/networkd-link.c (+1/-1)
src/network/networkd-ndisc.c (+5/-13)
src/network/networkd-radv.c (+8/-3)
src/nspawn/nspawn-settings.c (+5/-0)
src/nspawn/nspawn.c (+2/-2)
src/partition/growfs.c (+5/-1)
src/partition/repart.c (+2/-2)
src/portable/profile/trusted/service.conf (+2/-1)
src/resolve/resolved-bus.c (+1/-7)
src/resolve/resolved-dns-cache.c (+28/-6)
src/resolve/resolved-dns-cache.h (+1/-1)
src/resolve/resolved-dns-packet.c (+28/-10)
src/resolve/resolved-dns-packet.h (+2/-0)
src/resolve/resolved-dns-scope.c (+11/-8)
src/resolve/resolved-dns-transaction.c (+157/-104)
src/resolve/resolved-dns-transaction.h (+0/-4)
src/resolve/resolved-mdns.c (+25/-10)
src/rpm/macros.systemd.in (+1/-0)
src/shared/base-filesystem.c (+1/-1)
src/shared/dissect-image.c (+1/-0)
src/shared/dns-domain.c (+1/-1)
src/shared/json.c (+3/-1)
src/shared/logs-show.c (+1/-1)
src/shared/mount-util.c (+2/-0)
src/shared/seccomp-util.c (+1/-0)
src/shared/utmp-wtmp.h (+1/-1)
src/sleep/sleep.conf (+1/-1)
src/sysext/sysext.c (+1/-0)
src/systemctl/systemctl-list-unit-files.c (+1/-1)
src/systemctl/systemctl-show.c (+4/-4)
src/systemctl/systemctl-util.c (+3/-1)
src/systemctl/systemctl.c (+6/-5)
src/systemd/_sd-common.h (+1/-1)
src/test/test-dns-domain.c (+1/-0)
src/test/test-loop-block.c (+1/-0)
src/test/test-sd-hwdb.c (+1/-1)
src/test/test-set.c (+30/-0)
src/test/test-time-util.c (+5/-0)
src/tmpfiles/tmpfiles.c (+8/-11)
src/udev/udev-rules.c (+4/-4)
src/udev/udevd.c (+1/-1)
test/units/testsuite-04.sh (+1/-1)
test/units/testsuite-67.sh (+25/-4)
units/modprobe@.service (+1/-0)
units/systemd-udev-trigger.service (+1/-1)
Reviewer Review Type Date Requested Status
Lukas Märdian Approve
Review via email: mp+428504@code.launchpad.net

Description of the change

Merge of systemd 251.4-1 from Debian. I will post the PPA autopkgtest results when they have finished.

To post a comment you must log in.
Revision history for this message
Lukas Märdian (slyon) wrote (last edit ):

+1 for DENYLISTing the 29-PORTABLE test, it seems to fail more often than not. Maybe we could also update the upstream bug report with some logs from autopkgtest.ubuntu.com to provide some evidence.

As suggested earlier, I think we need to upgrade the systemd -> (Suggests:) -> systemd-resolved to something stronger, probably "Depends:" in Ubuntu. As Ubuntu has been using systemd-resolved by default for a while.

LGTM otherwise.

PS: I also like the enablement of systemd-homed, wanted to do this for a long time but never found the time (and a proper reason in Ubuntu) to get it enabled.

Revision history for this message
Nick Rosbrook (enr0n) wrote :

I opted to make systemd Recommends: systemd-resolved to avoid circular Depends: between the two packages. The Recommends: is strong enough to ensure that systemd-resolved is installed with systemd by default.

Some PPA autopkgtests are here: https://autopkgtest.staging.ubuntu.com/results/autopkgtest-kinetic-enr0n-systemd-251/?format=plain

Something odd is going in with armhf (apt-source systemd fails), but I have not been able to re-create the issue outside autopkgtest.

On arm64, my PPA builder is using proposed by default, despite the PPA dependencies being configured otherwise. This means the package on arm64 wants libc6 2.36, which cannot be satisfied without proposed.

Still waiting for tests to finish on ppc64el, but tests are passing on amd64 and s390x.

Overall, we may have some work to do to get this version migrated, but I don't think we should block the upload on these PPA autopkgtest issues.

Revision history for this message
Lukas Märdian (slyon) wrote :

Thanks for explaining the test failures!

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/.gitignore b/.gitignore
index 9763766..7b6d0a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,3 +36,4 @@ __pycache__/
36# Ignore any mkosi config files with "local" in the name36# Ignore any mkosi config files with "local" in the name
37/mkosi.default.d/**/*local*.conf37/mkosi.default.d/**/*local*.conf
38/tags38/tags
39.dir-locals-2.el
diff --git a/debian/changelog b/debian/changelog
index 2c2c602..acbfad0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,195 @@
1systemd (251.2-2ubuntu3) UNRELEASED; urgency=medium1systemd (251.4-1ubuntu1) kinetic; urgency=medium
22
3 * Cherry-pick upstream commit (3657d3a) to fix glibc 2.36 compat3 * Merge 251.4-1 from Debian
4 File: debian/patches/glibc-Remove-include-linux-fs.h-to-resolve-fsconfig_comma.patch4 - debian/rules: Keep our diff for TPM2 build on i386
5 https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=1e8048741cc0f811faf6b9e713a3fb7e38ef35035 - Drop EFI build patches.
6 An upstream patch that covers these changes was backported to the 251
7 stable branch.
8 Files:
9 - debian/patches/lp1979215-boot-efi-missing-.note.GNU-stack-section-implies-executab.patch
10 - debian/patches/lp1979236-boot-efi-set-no-warn-rwx-segments-on-arm.patch
11 https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=983b46f110b5a6e32a28b87c4b9458442624c0cd
12 - Drop debian/patches/units-remove-the-restart-limit-on-the-modprobe-.service.patch.
13 This patch was backported to the 251 stable branch.
14 File: debian/patches/units-remove-the-restart-limit-on-the-modprobe-.service.patch
15 https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=959fe326da87466775b37088e9bfd476056373ea
16 - debian/rules: update i386 debugedit workaround.
17 This linuxia32.elf.stub is shipped with systemd-boot-efi now, so update
18 the workaround to include that path as well.
19 File: debian/rules
20 https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=354f9fccc94dcb0d555329921510d5f22e62351a
21 * test: denylist TEST-29-PORTABLE again
22 File: debian/patches/test-denylist-TEST-29-PORTABLE-again.patch
23 https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=6036de78481f8cbf3e8f3a52dac711c732d80c59
24 * debian/control: add systemd-resolved to systemd's Recommends:
25 In Ubuntu, systemd-resolved is used by default, so after the
26 systemd-resolved package split, we should have a stronger relationship
27 than Suggests: systemd-resolved.
28 File: debian/control
29 https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=400bf9dd2cf83c91f47326769eff0259429f3e0a
30 * debian/control: add Recommends: systemd-hwe-hwdb to udev.
31 The systemd-hwe-hwdb brings in additional hwdb rules for HWE, so we want
32 those installed with udev by default.
33 File: debian/control
34 https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=148d8d9cd4c260559ad944de3427f183e04858cc
35
36 -- Nick Rosbrook <nick.rosbrook@canonical.com> Tue, 23 Aug 2022 17:45:48 -0400
37
38systemd (251.4-1) unstable; urgency=medium
39
40 * New upstream version 251.4
41 * Rebase patches
42 * Rebuild against fixed dh-nss to avoid duplicates in /etc/nsswitch.conf
43 (Closes: #1017096)
44
45 -- Michael Biebl <biebl@debian.org> Sun, 14 Aug 2022 20:06:18 +0200
46
47systemd (251.3-2) unstable; urgency=medium
48
49 [ Luca Boccassi ]
50 * libnss-systemd: also let userdbd manage passwords.
51 As of upstream commit:
52 https://github.com/systemd/systemd/commit/f43a19ecd6e3415e
53 in v249 userdbd can also synthesize shadow/gshadow records,
54 so add the shadow config to nsswitch.conf on installation.
55 (Closes: #1004326)
56 * homed: make PAM rules higher priority than unix users.
57 Make sure homed is tried first when logging in. This is required
58 after adding nss-systemd support for 'shadow' in /etc/nsswitch.conf.
59 See Arch bug: https://bugs.archlinux.org/task/72967
60
61 [ Gioele Barabucci ]
62 * d/control: Use dh_installnss
63 * d/libnss-myhostname.nss: Install NSS service `myhostname` via dh_installnss
64 * d/libnss-mymaschines.nss: Install NSS service `mymaschines` via dh_installnss
65 * d/libnss-resolve.nss: Install NSS service `resolve` via dh_installnss
66 * d/libnss-systemd.nss: Install NSS service `systemd` via dh_installnss
67
68 -- Michael Biebl <biebl@debian.org> Fri, 12 Aug 2022 19:06:38 +0200
69
70systemd (251.3-2~exp2) experimental; urgency=medium
71
72 * Note in systemd.NEWS that resolved has moved to a new package
73 * systemd-resolved: move conffile from systemd. Copied from systemd-
74 timesyncd
75
76 -- Luca Boccassi <bluca@debian.org> Sun, 07 Aug 2022 00:06:03 +0100
77
78systemd (251.3-2~exp1) experimental; urgency=medium
79
80 * Split systemd-resolved into its own package which takes over
81 /etc/resolv.conf (Closes: #939904)
82
83 -- Luca Boccassi <bluca@debian.org> Thu, 04 Aug 2022 14:55:48 +0100
84
85systemd (251.3-1) unstable; urgency=medium
86
87 * New upstream version 251.3
88 * Rebase patches
89
90 -- Michael Biebl <biebl@debian.org> Wed, 13 Jul 2022 23:05:40 +0200
91
92systemd (251.2-8) unstable; urgency=medium
93
94 * autopkgtest: install openssl for upstream test.
95 Install openssl explicitly and do not rely on other packages, like
96 swtpm-libs, to pull this dependency for us.
97 Used by TEST-50-DISSECT, which otherwise just silently skips the test.
98 * Add versioned dependency on init-system-helpers to systemd-homed.
99 Ensure that we have a version of deb-systemd-helper which properly
100 handles loops in Also= dependencies. (Closes: #1014115)
101 * Demote shlibs dependencies of libsystemd0 from Pre-Depends to Depends.
102 As systemctl, which is quasi-essential, no longer links against
103 libsystemd0, we do not need those strict requirements anymore.
104 * Work around some more dh_installman issues
6105
7 -- Lukas Märdian <slyon@ubuntu.com> Mon, 15 Aug 2022 15:29:16 +0200106 -- Michael Biebl <biebl@debian.org> Wed, 06 Jul 2022 21:23:38 +0200
107
108systemd (251.2-7) unstable; urgency=medium
109
110 [ Luca Boccassi ]
111 * sd-boot: add kernel hooks scripts
112
113 [ Andrea Pappacoda ]
114 * sd-boot: add initramfs hook (Closes: #826045)
115
116 [ Michael Biebl ]
117 * sd-boot: exit early in initramfs and kernel hook scripts if package is
118 removed but not purged
119 * Do not fail with older binutils.
120 Test if the linker supports --no-warn-execstack and --no-warn-rwx-segments
121 before using those flags. (Closes: #1013967)
122
123 -- Michael Biebl <biebl@debian.org> Tue, 28 Jun 2022 14:33:37 +0200
124
125systemd (251.2-6) unstable; urgency=medium
126
127 [ Helmut Grohne ]
128 * Mark systemd-userdbd and systemd-homed as !stage1 (Closes: #1012738)
129
130 [ Luca Boccassi ]
131 * Remove unused Lintian overrides
132 * Stop overriding the build directory name.
133 We don't do a separate udeb build anymore, so there's no need
134 to specify a separate build directory.
135 * Use execute_before_/after_ instead of override_
136 * Add nodoc profile support.
137 Co-authored-by: Michael Biebl <biebl@debian.org>
138
139 [ Michael Biebl ]
140 * Do not fail EFI build with newer binutils (Closes: #1013482)
141 * shared/microhttp-util: silence gcc warning
142 * Clarify NEWS message about systemd-boot split (Closes: #1013340)
143
144 -- Michael Biebl <biebl@debian.org> Fri, 24 Jun 2022 10:12:34 +0200
145
146systemd (251.2-5) unstable; urgency=medium
147
148 * Tweak description of systemd-homed package
149 * Move shlibs dependencies of libsystemd-shared from Pre-Depends to Depends
150 (Closes: #1012637)
151 * Add versioned Breaks against sicherboot for the systemd-boot split
152 (Closes: #1012625)
153 * Drop old Conflicts against hal from udev.
154 The hal package has been gone for several release cycles, so this
155 Conflicts should not be necessary anymore.
156
157 -- Michael Biebl <biebl@debian.org> Fri, 10 Jun 2022 23:51:50 +0200
158
159systemd (251.2-4) unstable; urgency=medium
160
161 * Use try-restart in systemd-binfmt dpkg trigger
162 * Fix bashism in kernel-install
163 * Upload to unstable
164
165 -- Michael Biebl <biebl@debian.org> Fri, 10 Jun 2022 09:16:48 +0200
166
167systemd (251.2-3) experimental; urgency=medium
168
169 [ Luca Boccassi ]
170 * Add systemd-userdbd package. This can be used to synthetize dynamic
171 user/groups, and can be useful by itself. It will also be used by
172 homed.
173 * Add systemd-homed package (Closes: #976960)
174 * Add systemd-boot-efi multiarch package. Allows EFI binaries for
175 different architectures to be co-installed. Useful when the EFI has a
176 different architecture, or to manipulate images. The userspace tooling
177 doesn't need to match the EFI binaries. Also allows one to reduce the
178 number of packages and dependencies needed when i386 is not a full
179 architecture, but a subset for libraries and for EFI support.
180
181 [ Michael Biebl ]
182 * Move homectl and userdbctl to /usr/bin
183 * Install libsystemd-shared into rootpkglibdir
184 * Split out libsystemd-shared into its own package. Since libsystem-
185 shared is an internal implementation detail, do not generate a shlibs
186 file for it. This means dh_shlibdeps needs to be told explicitly where
187 it can find libsystemd-shared. Mark this new package as Multi-Arch:
188 same. (Closes: #990547)
189 * Split out systemd-boot into its own package
190 * Add NEWS entry for the systemd-boot package split
191
192 -- Luca Boccassi <bluca@debian.org> Wed, 08 Jun 2022 23:56:04 +0100
8193
9systemd (251.2-2ubuntu2) kinetic; urgency=medium194systemd (251.2-2ubuntu2) kinetic; urgency=medium
10195
diff --git a/debian/control b/debian/control
index d940ed4..6bafebb 100644
--- a/debian/control
+++ b/debian/control
@@ -15,11 +15,12 @@ Vcs-Git: https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd
15Vcs-Browser: https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd15Vcs-Browser: https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd
16Homepage: https://www.freedesktop.org/wiki/Software/systemd16Homepage: https://www.freedesktop.org/wiki/Software/systemd
17Build-Depends: debhelper-compat (= 13),17Build-Depends: debhelper-compat (= 13),
18 dh-sequence-installnss,
18 dh-sequence-package-notes,19 dh-sequence-package-notes,
19 pkg-config,20 pkg-config,
20 xsltproc,21 xsltproc <!nodoc>,
21 docbook-xsl,22 docbook-xsl <!nodoc>,
22 docbook-xml,23 docbook-xml <!nodoc>,
23 meson (>= 0.53.2),24 meson (>= 0.53.2),
24 gettext,25 gettext,
25 gperf,26 gperf,
@@ -75,7 +76,11 @@ Priority: important
75Recommends: default-dbus-system-bus | dbus-system-bus,76Recommends: default-dbus-system-bus | dbus-system-bus,
76 networkd-dispatcher,77 networkd-dispatcher,
77 systemd-timesyncd | time-daemon,78 systemd-timesyncd | time-daemon,
79 systemd-resolved,
78Suggests: systemd-container,80Suggests: systemd-container,
81 systemd-homed,
82 systemd-userdbd,
83 systemd-boot,
79 libfido2-1,84 libfido2-1,
80 libtss2-esys-3.0.2-0,85 libtss2-esys-3.0.2-0,
81 libtss2-mu0,86 libtss2-mu0,
@@ -94,6 +99,7 @@ Conflicts: consolekit,
94Breaks: resolvconf (<< 1.83~),99Breaks: resolvconf (<< 1.83~),
95 udev (<< 247~),100 udev (<< 247~),
96 less (<< 563),101 less (<< 563),
102 sicherboot (<< 0.1.6),
97Provides: systemd-sysusers (= ${binary:Version}),103Provides: systemd-sysusers (= ${binary:Version}),
98 systemd-tmpfiles (= ${binary:Version}),104 systemd-tmpfiles (= ${binary:Version}),
99Description: system and service manager105Description: system and service manager
@@ -272,11 +278,11 @@ Multi-Arch: same
272Pre-Depends: ${misc:Pre-Depends}278Pre-Depends: ${misc:Pre-Depends}
273Depends: ${shlibs:Depends},279Depends: ${shlibs:Depends},
274 ${misc:Depends},280 ${misc:Depends},
275 systemd (= ${binary:Version}),281 systemd-resolved (= ${binary:Version}),
276Description: nss module to resolve names via systemd-resolved282Description: nss module to resolve names via systemd-resolved
277 nss-resolve is a plugin for the GNU Name Service Switch (NSS) functionality283 nss-resolve is a plugin for the GNU Name Service Switch (NSS) functionality
278 of the GNU C Library (glibc) providing DNS and LLMNR resolution to programs via284 of the GNU C Library (glibc) providing DNS and LLMNR resolution to programs via
279 the systemd-resolved daemon (provided in the systemd package).285 the systemd-resolved daemon (provided in the systemd-resolved package).
280 .286 .
281 Installing this package automatically adds resolve to /etc/nsswitch.conf.287 Installing this package automatically adds resolve to /etc/nsswitch.conf.
282288
@@ -301,9 +307,8 @@ Package: libsystemd0
301Architecture: linux-any307Architecture: linux-any
302Multi-Arch: same308Multi-Arch: same
303Section: libs309Section: libs
304Pre-Depends: ${shlibs:Depends},310Depends: ${shlibs:Depends},
305 ${misc:Pre-Depends}311 ${misc:Depends}
306Depends: ${misc:Depends}
307Description: systemd utility library312Description: systemd utility library
308 This library provides APIs to interface with various system components such as313 This library provides APIs to interface with various system components such as
309 the system journal, the system service manager, D-Bus and more.314 the system journal, the system service manager, D-Bus and more.
@@ -321,6 +326,18 @@ Description: systemd utility library - development files
321 This package contains the files needed for developing applications that326 This package contains the files needed for developing applications that
322 use libsystemd.327 use libsystemd.
323328
329Package: libsystemd-shared
330Architecture: linux-any
331Multi-Arch: same
332Section: libs
333Pre-Depends: ${misc:Pre-Depends}
334Depends: ${shlibs:Depends},
335 ${misc:Depends}
336Description: systemd shared private library
337 This internal shared library provides common code used by various systemd
338 components. It is supposed to decrease memory and disk footprint.
339 The shared library is not meant for public use and is not API or ABI stable.
340
324Package: udev341Package: udev
325Priority: important342Priority: important
326Architecture: linux-any343Architecture: linux-any
@@ -331,7 +348,7 @@ Depends: ${shlibs:Depends},
331 adduser,348 adduser,
332 libudev1 (= ${binary:Version}),349 libudev1 (= ${binary:Version}),
333 s390-tools [s390],350 s390-tools [s390],
334Conflicts: hal351Recommends: systemd-hwe-hwdb,
335Breaks: systemd (<< ${binary:Version}),352Breaks: systemd (<< ${binary:Version}),
336Description: /dev/ and hotplug management daemon353Description: /dev/ and hotplug management daemon
337 udev is a daemon which dynamically creates and removes device nodes from354 udev is a daemon which dynamically creates and removes device nodes from
@@ -427,3 +444,87 @@ Description: userspace out-of-memory (OOM) killer
427 systemd-oomd is a system service that uses cgroups-v2 and444 systemd-oomd is a system service that uses cgroups-v2 and
428 pressure stall information (PSI) to monitor and take action on445 pressure stall information (PSI) to monitor and take action on
429 processes before an OOM occurs in kernel space.446 processes before an OOM occurs in kernel space.
447
448Package: systemd-userdbd
449Build-Profiles: <!stage1>
450Architecture: linux-any
451Depends: ${shlibs:Depends},
452 ${misc:Depends},
453 systemd (= ${binary:Version}),
454Description: dynamic user/group manager
455 systemd-userdbd is a system service that multiplexes user/group lookups to all
456 local services that provide JSON user/group record definitions to the system.
457 In addition it synthesizes JSON user/group records from classic UNIX/glibc NSS
458 user/group records in order to provide full backwards compatibility. It may
459 also pick up statically defined JSON user/group records from drop-in files.
460
461Package: systemd-homed
462Build-Profiles: <!stage1>
463Architecture: linux-any
464Pre-Depends: ${misc:Pre-Depends},
465 init-system-helpers (>= 1.64~),
466Depends: ${shlibs:Depends},
467 ${misc:Depends},
468 systemd-userdbd (= ${binary:Version}),
469 systemd (= ${binary:Version}),
470 libpam-runtime,
471Description: home area manager
472 systemd-homed is a system service designed to manage home directories. This
473 package includes the homed service, a PAM module to automatically mount home
474 directories on user login, tools and documentation.
475
476Package: systemd-boot
477Architecture: amd64 i386 arm64 armhf
478Depends: ${shlibs:Depends},
479 ${misc:Depends},
480 systemd-boot-efi (= ${binary:Version}),
481Recommends: efibootmgr,
482Breaks: systemd (<< 251.2-3~)
483Replaces: systemd (<< 251.2-3~)
484Description: simple UEFI boot manager - tools and services
485 systemd-boot (short: sd-boot) is a simple UEFI boot manager. It provides a
486 textual menu to select the entry to boot and an editor for the kernel command
487 line. It supports systems with UEFI firmware only.
488 .
489 Installing systemd-boot will not automatically switch your boot loader.
490 .
491 This package contains various tools and services to manage systems using
492 systemd-boot.
493
494Package: systemd-boot-efi
495Architecture: amd64 i386 arm64 armhf
496Multi-Arch: same
497Pre-Depends: ${misc:Pre-Depends},
498Depends: ${misc:Depends},
499Breaks: systemd (<< 251.2-3~)
500Replaces: systemd (<< 251.2-3~)
501Description: simple UEFI boot manager - EFI binaries
502 systemd-boot (short: sd-boot) is a simple UEFI boot manager. It provides a
503 textual menu to select the entry to boot and an editor for the kernel command
504 line. It supports systems with UEFI firmware only.
505 .
506 This package contains the EFI binaries.
507
508Package: systemd-resolved
509Multi-Arch: foreign
510Architecture: linux-any
511Pre-Depends: ${misc:Pre-Depends}
512Depends: ${shlibs:Depends},
513 ${misc:Depends},
514 adduser,
515 systemd (= ${binary:Version}),
516 default-dbus-system-bus | dbus-system-bus
517Recommends: libnss-myhostname,
518 libnss-resolve,
519Suggests: policykit-1,
520Provides: resolvconf
521Conflicts: resolvconf
522Replaces: resolvconf,
523 systemd (<< 251.3-2~)
524Breaks: systemd (<< 251.3-2~)
525Description: systemd DNS resolver
526 This package provides systemd's DNS resolver and the command line tool to
527 manage it.
528 .
529 Installing this package automatically overwrites /etc/resolv.conf and switches
530 it to be managed by systemd-resolved.
diff --git a/debian/extra/initramfs/post-update.d/systemd-boot b/debian/extra/initramfs/post-update.d/systemd-boot
430new file mode 100755531new file mode 100755
index 0000000..1cee51c
--- /dev/null
+++ b/debian/extra/initramfs/post-update.d/systemd-boot
@@ -0,0 +1,11 @@
1#!/bin/sh
2
3set -eu
4
5test -x /usr/bin/bootctl || exit 0
6
7bootctl is-installed --quiet || exit 0
8
9echo "Updating kernel version $1 in systemd-boot..."
10
11kernel-install add "$1" "/boot/vmlinuz-$1" "$2"
diff --git a/debian/extra/kernel/postinst.d/systemd-boot b/debian/extra/kernel/postinst.d/systemd-boot
0new file mode 10075512new file mode 100755
index 0000000..8901140
--- /dev/null
+++ b/debian/extra/kernel/postinst.d/systemd-boot
@@ -0,0 +1,11 @@
1#!/bin/sh
2
3set -e
4
5test -x /usr/bin/bootctl || exit 0
6
7bootctl is-installed --quiet || exit 0
8
9echo "Installing kernel version $1 in systemd-boot..."
10
11kernel-install add "$1" "$2"
diff --git a/debian/extra/kernel/postrm.d/systemd-boot b/debian/extra/kernel/postrm.d/systemd-boot
0new file mode 10075512new file mode 100755
index 0000000..4db5e51
--- /dev/null
+++ b/debian/extra/kernel/postrm.d/systemd-boot
@@ -0,0 +1,11 @@
1#!/bin/sh
2
3set -e
4
5test -x /usr/bin/bootctl || exit 0
6
7bootctl is-installed --quiet || exit 0
8
9echo "Removing kernel version $1 from systemd-boot..."
10
11kernel-install remove "$1"
diff --git a/debian/extra/pam-configs/systemd-homed b/debian/extra/pam-configs/systemd-homed
0new file mode 10064412new file mode 100644
index 0000000..0613efc
--- /dev/null
+++ b/debian/extra/pam-configs/systemd-homed
@@ -0,0 +1,15 @@
1Name: Enable user management by systemd-homed
2Default: yes
3Priority: 257
4Auth-Type: Primary
5Auth:
6 [success=end default=ignore] pam_systemd_home.so
7Account-Type: Primary
8Account:
9 [success=end default=ignore] pam_systemd_home.so
10Session-Type: Additional
11Session:
12 optional pam_systemd_home.so
13Password-Type: Primary
14Password:
15 [success=end default=ignore] pam_systemd_home.so
diff --git a/debian/gitlab-ci.yml b/debian/gitlab-ci.yml
index f39ddcf..c405d57 100644
--- a/debian/gitlab-ci.yml
+++ b/debian/gitlab-ci.yml
@@ -9,3 +9,5 @@ variables:
9 # Many false positives due to issue in binutils:9 # Many false positives due to issue in binutils:
10 # https://bugs.debian.org/100097710 # https://bugs.debian.org/1000977
11 SALSA_CI_LINTIAN_SUPPRESS_TAGS: "elf-error"11 SALSA_CI_LINTIAN_SUPPRESS_TAGS: "elf-error"
12 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1011649
13 SALSA_CI_DISABLE_PIUPARTS: 1
diff --git a/debian/libnss-myhostname.install b/debian/libnss-myhostname.install
index 758fe00..fa88dd6 100644
--- a/debian/libnss-myhostname.install
+++ b/debian/libnss-myhostname.install
@@ -1,3 +1 @@
1usr/lib/*/libnss_myhostname*.so.*1usr/lib/*/libnss_myhostname*.so.*
2usr/share/man/man8/libnss_myhostname.so.2.8
3usr/share/man/man8/nss-myhostname.8
diff --git a/debian/libnss-myhostname.manpages b/debian/libnss-myhostname.manpages
4new file mode 1006442new file mode 100644
index 0000000..d3ba44d
--- /dev/null
+++ b/debian/libnss-myhostname.manpages
@@ -0,0 +1,2 @@
1usr/share/man/man8/libnss_myhostname.so.2.8
2usr/share/man/man8/nss-myhostname.8
diff --git a/debian/libnss-myhostname.nss b/debian/libnss-myhostname.nss
0new file mode 1006443new file mode 100644
index 0000000..0ef4054
--- /dev/null
+++ b/debian/libnss-myhostname.nss
@@ -0,0 +1 @@
1hosts last myhostname
diff --git a/debian/libnss-myhostname.postinst b/debian/libnss-myhostname.postinst
0deleted file mode 1006442deleted file mode 100644
index 1ee0c99..0000000
--- a/debian/libnss-myhostname.postinst
+++ /dev/null
@@ -1,41 +0,0 @@
1#!/bin/sh
2
3set -e
4
5# This code was taken from libnss-myhostname
6
7# try to insert myhostname entries to the "hosts" line in /etc/nsswitch.conf to
8# automatically enable libnss-myhostname support; do not change the
9# configuration if the "hosts" line already references some myhostname lookups
10insert_nss_entry() {
11 echo "Checking NSS setup..."
12 # abort if /etc/nsswitch.conf does not exist
13 if ! [ -e /etc/nsswitch.conf ]; then
14 echo "Could not find /etc/nsswitch.conf."
15 return
16 fi
17 perl -i -pe '
18 sub insert {
19 my $line = shift;
20 # this also splits on tab
21 my @bits=split(" ", $line);
22 # do not break configuration if the "hosts" line already references
23 # myhostname
24 if (grep { $_ eq "myhostname"} @bits) {
25 return $line;
26 }
27 # add myhostname at the end
28 return $line . " myhostname";
29 }
30 s/^(hosts:\s+)(.*)/$1.insert($2)/e;
31 ' /etc/nsswitch.conf
32}
33
34if [ "$1" = configure ] && [ -z "$2" ]; then
35 echo "First installation detected..."
36 # first install: setup the recommended configuration (unless
37 # nsswitch.conf already contains myhostname entries)
38 insert_nss_entry
39fi
40
41#DEBHELPER#
diff --git a/debian/libnss-myhostname.postrm b/debian/libnss-myhostname.postrm
42deleted file mode 1006440deleted file mode 100644
index 90e3c38..0000000
--- a/debian/libnss-myhostname.postrm
+++ /dev/null
@@ -1,29 +0,0 @@
1#!/bin/sh
2
3set -e
4
5remove_nss_entry() {
6 local file=$1
7 local pkg=$2
8 local module=$3
9 refcount=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' \
10 -W $pkg | grep '^i' | wc -l)
11 if [ "$refcount" -gt 0 ] ; then
12 # package is installed for other architectures still, do nothing
13 return
14 fi
15 echo "Checking NSS setup..."
16 # abort if file does not exist
17 if ! [ -e $file ]; then
18 echo "Could not find ${file}."
19 return
20 fi
21 # we must remove possible [foo=bar] options as well
22 sed -i -r "/hosts:/ s/[[:space:]]+$module\b([[:space:]]*\[[^]]*\])*//" $file
23}
24
25if [ "$1" = remove ]; then
26 remove_nss_entry /etc/nsswitch.conf libnss-myhostname myhostname
27fi
28
29#DEBHELPER#
diff --git a/debian/libnss-mymachines.install b/debian/libnss-mymachines.install
index 1923505..50e7d2e 100644
--- a/debian/libnss-mymachines.install
+++ b/debian/libnss-mymachines.install
@@ -1,3 +1 @@
1usr/lib/*/libnss_mymachines*.so.*1usr/lib/*/libnss_mymachines*.so.*
2usr/share/man/man8/libnss_mymachines.so.2.8
3usr/share/man/man8/nss-mymachines.8
diff --git a/debian/libnss-mymachines.manpages b/debian/libnss-mymachines.manpages
4new file mode 1006442new file mode 100644
index 0000000..7afe71d
--- /dev/null
+++ b/debian/libnss-mymachines.manpages
@@ -0,0 +1,2 @@
1usr/share/man/man8/libnss_mymachines.so.2.8
2usr/share/man/man8/nss-mymachines.8
diff --git a/debian/libnss-mymachines.nss b/debian/libnss-mymachines.nss
0new file mode 1006443new file mode 100644
index 0000000..dd7e3a1
--- /dev/null
+++ b/debian/libnss-mymachines.nss
@@ -0,0 +1 @@
1hosts last mymachines
diff --git a/debian/libnss-mymachines.postinst b/debian/libnss-mymachines.postinst
0deleted file mode 1006442deleted file mode 100644
index 165a80a..0000000
--- a/debian/libnss-mymachines.postinst
+++ /dev/null
@@ -1,41 +0,0 @@
1#!/bin/sh
2
3set -e
4
5# This code was taken from libnss-myhostname
6
7# try to insert mymachines entries to the "hosts" line in /etc/nsswitch.conf to
8# automatically enable libnss-mymachines support; do not change the
9# configuration if the "hosts" line already references some mymachines lookups
10insert_nss_entry() {
11 echo "Checking NSS setup..."
12 # abort if /etc/nsswitch.conf does not exist
13 if ! [ -e /etc/nsswitch.conf ]; then
14 echo "Could not find /etc/nsswitch.conf."
15 return
16 fi
17 perl -i -pe '
18 sub insert {
19 my $line = shift;
20 # this also splits on tab
21 my @bits=split(" ", $line);
22 # do not break configuration if the "hosts" line already references
23 # mymachines
24 if (grep { $_ eq "mymachines"} @bits) {
25 return $line;
26 }
27 # add mymachines at the end
28 return $line . " mymachines";
29 }
30 s/^(hosts:\s+)(.*)/$1.insert($2)/e;
31 ' /etc/nsswitch.conf
32}
33
34if [ "$1" = configure ] && [ -z "$2" ]; then
35 echo "First installation detected..."
36 # first install: setup the recommended configuration (unless
37 # nsswitch.conf already contains mymachines entries)
38 insert_nss_entry
39fi
40
41#DEBHELPER#
diff --git a/debian/libnss-mymachines.postrm b/debian/libnss-mymachines.postrm
42deleted file mode 1006440deleted file mode 100644
index c8fb09c..0000000
--- a/debian/libnss-mymachines.postrm
+++ /dev/null
@@ -1,29 +0,0 @@
1#!/bin/sh
2
3set -e
4
5remove_nss_entry() {
6 local file=$1
7 local pkg=$2
8 local module=$3
9 refcount=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' \
10 -W $pkg | grep '^i' | wc -l)
11 if [ "$refcount" -gt 0 ] ; then
12 # package is installed for other architectures still, do nothing
13 return
14 fi
15 echo "Checking NSS setup..."
16 # abort if file does not exist
17 if ! [ -e $file ]; then
18 echo "Could not find ${file}."
19 return
20 fi
21 # we must remove possible [foo=bar] options as well
22 sed -i -r "/hosts:/ s/[[:space:]]+$module\b([[:space:]]*\[[^]]*\])*//" $file
23}
24
25if [ "$1" = remove ]; then
26 remove_nss_entry /etc/nsswitch.conf libnss-mymachines mymachines
27fi
28
29#DEBHELPER#
diff --git a/debian/libnss-resolve.install b/debian/libnss-resolve.install
index 871aac0..3554b53 100644
--- a/debian/libnss-resolve.install
+++ b/debian/libnss-resolve.install
@@ -1,3 +1 @@
1usr/lib/*/libnss_resolve*.so.*1usr/lib/*/libnss_resolve*.so.*
2usr/share/man/man8/libnss_resolve.so.2.8
3usr/share/man/man8/nss-resolve.8
diff --git a/debian/libnss-resolve.lintian-overrides b/debian/libnss-resolve.lintian-overrides
index d29b4e3..06097e8 100644
--- a/debian/libnss-resolve.lintian-overrides
+++ b/debian/libnss-resolve.lintian-overrides
@@ -1,3 +1,2 @@
1# Lintian is really bad at associating manpages1# Lintian is really bad at associating manpages
2libnss-resolve: spare-manual-page2libnss-resolve: spare-manual-page
3libnss-resolve: maintainer-script-calls-systemctl
diff --git a/debian/libnss-resolve.manpages b/debian/libnss-resolve.manpages
4new file mode 1006443new file mode 100644
index 0000000..b3c5a78
--- /dev/null
+++ b/debian/libnss-resolve.manpages
@@ -0,0 +1,2 @@
1usr/share/man/man8/libnss_resolve.so.2.8
2usr/share/man/man8/nss-resolve.8
diff --git a/debian/libnss-resolve.nss b/debian/libnss-resolve.nss
0new file mode 1006443new file mode 100644
index 0000000..a7142b3
--- /dev/null
+++ b/debian/libnss-resolve.nss
@@ -0,0 +1 @@
1hosts before=dns resolve [!UNAVAIL=return]
diff --git a/debian/libnss-resolve.postinst b/debian/libnss-resolve.postinst
0deleted file mode 1006442deleted file mode 100644
index 382364e..0000000
--- a/debian/libnss-resolve.postinst
+++ /dev/null
@@ -1,48 +0,0 @@
1#!/bin/sh
2
3set -e
4
5# This code was taken from libnss-myhostname
6
7# try to insert resolve entries to the "hosts" line in /etc/nsswitch.conf to
8# automatically enable libnss-resolve support; do not change the
9# configuration if the "hosts" line already references some resolve lookups
10insert_nss_entry() {
11 echo "Checking NSS setup..."
12 # abort if /etc/nsswitch.conf does not exist
13 if ! [ -e /etc/nsswitch.conf ]; then
14 echo "Could not find /etc/nsswitch.conf."
15 return
16 fi
17 perl -i -pe '
18 sub insert {
19 my $line = shift;
20 # this also splits on tab
21 my @bits=split(" ", $line);
22 # do not break configuration if the "hosts" line already references
23 # resolve
24 if (grep { $_ eq "resolve"} @bits) {
25 return $line;
26 }
27 # add resolve before dns
28 return join " ", map {
29 $_ eq "dns" ? ("resolve [!UNAVAIL=return]", "$_") : $_
30 } @bits;
31 }
32 s/^(hosts:\s+)(.*)/$1.insert($2)/e;
33 ' /etc/nsswitch.conf
34}
35
36if [ "$1" = configure ] && [ -z "$2" ]; then
37 echo "First installation detected..."
38 # first install: setup the recommended configuration (unless
39 # nsswitch.conf already contains resolve entries)
40 insert_nss_entry
41 # ... and enable resolved
42 systemctl enable systemd-resolved.service
43 if [ -d /run/systemd/system ]; then
44 deb-systemd-invoke start systemd-resolved.service || true
45 fi
46fi
47
48#DEBHELPER#
diff --git a/debian/libnss-resolve.postrm b/debian/libnss-resolve.postrm
49deleted file mode 1006440deleted file mode 100644
index 32b9b8f..0000000
--- a/debian/libnss-resolve.postrm
+++ /dev/null
@@ -1,29 +0,0 @@
1#!/bin/sh
2
3set -e
4
5remove_nss_entry() {
6 local file=$1
7 local pkg=$2
8 local module=$3
9 refcount=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' \
10 -W $pkg | grep '^i' | wc -l)
11 if [ "$refcount" -gt 0 ] ; then
12 # package is installed for other architectures still, do nothing
13 return
14 fi
15 echo "Checking NSS setup..."
16 # abort if file does not exist
17 if ! [ -e $file ]; then
18 echo "Could not find ${file}."
19 return
20 fi
21 # we must remove possible [foo=bar] options as well
22 sed -i -r "/hosts:/ s/[[:space:]]+$module\b([[:space:]]*\[[^]]*\])*//" $file
23}
24
25if [ "$1" = remove ]; then
26 remove_nss_entry /etc/nsswitch.conf libnss-resolve resolve
27fi
28
29#DEBHELPER#
diff --git a/debian/libnss-systemd.install b/debian/libnss-systemd.install
index 858f307..df23cb8 100644
--- a/debian/libnss-systemd.install
+++ b/debian/libnss-systemd.install
@@ -1,3 +1 @@
1usr/lib/*/libnss_systemd*.so.*1usr/lib/*/libnss_systemd*.so.*
2usr/share/man/man8/libnss_systemd*
3usr/share/man/man8/nss-systemd*
diff --git a/debian/libnss-systemd.manpages b/debian/libnss-systemd.manpages
4new file mode 1006442new file mode 100644
index 0000000..bf1e840
--- /dev/null
+++ b/debian/libnss-systemd.manpages
@@ -0,0 +1,2 @@
1usr/share/man/man8/libnss_systemd*
2usr/share/man/man8/nss-systemd*
diff --git a/debian/libnss-systemd.nss b/debian/libnss-systemd.nss
0new file mode 1006443new file mode 100644
index 0000000..9c3f443
--- /dev/null
+++ b/debian/libnss-systemd.nss
@@ -0,0 +1,4 @@
1passwd last systemd
2group last systemd
3shadow last systemd
4gshadow last systemd
diff --git a/debian/libnss-systemd.postinst b/debian/libnss-systemd.postinst
0deleted file mode 1006445deleted file mode 100644
index 16040bc..0000000
--- a/debian/libnss-systemd.postinst
+++ /dev/null
@@ -1,39 +0,0 @@
1#!/bin/sh
2
3set -e
4
5# try to insert the systemd entry to the "passwd" and "group" lines in
6# /etc/nsswitch.conf to automatically enable libnss-systemd support; do not
7# change the configuration if the lines already contain "systemd"
8insert_nss_entry() {
9 echo "Checking NSS setup..."
10 # abort if /etc/nsswitch.conf does not exist
11 if ! [ -e /etc/nsswitch.conf ]; then
12 echo "Could not find /etc/nsswitch.conf."
13 return
14 fi
15 perl -i -pe '
16 sub insert {
17 my $line = shift;
18 # this also splits on tab
19 my @bits=split(" ", $line);
20 # do not break configuration if the line already references
21 # systemd
22 if (grep { $_ eq "systemd"} @bits) {
23 return $line;
24 }
25 # add systemd at the end
26 return $line . " systemd";
27 }
28 s/^(passwd:\s+)(.*)/$1.insert($2)/e;
29 s/^(group:\s+)(.*)/$1.insert($2)/e;
30 ' /etc/nsswitch.conf
31}
32
33if [ "$1" = configure ] && [ -z "$2" ]; then
34 echo "First installation detected..."
35 # first install: setup the recommended configuration
36 insert_nss_entry
37fi
38
39#DEBHELPER#
diff --git a/debian/libnss-systemd.postrm b/debian/libnss-systemd.postrm
40deleted file mode 1006440deleted file mode 100644
index ce8e954..0000000
--- a/debian/libnss-systemd.postrm
+++ /dev/null
@@ -1,29 +0,0 @@
1#!/bin/sh
2
3set -e
4
5remove_nss_entry() {
6 local file=$1
7 local pkg=$2
8 local module=$3
9 refcount=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' \
10 -W $pkg | grep '^i' | wc -l)
11 if [ "$refcount" -gt 0 ] ; then
12 # package is installed for other architectures still, do nothing
13 return
14 fi
15 echo "Checking NSS setup..."
16 # abort if file does not exist
17 if ! [ -e $file ]; then
18 echo "Could not find ${file}."
19 return
20 fi
21 # we must remove possible [foo=bar] options as well
22 sed -i -r "/(passwd|group):/ s/[[:space:]]+$module\b([[:space:]]*\[[^]]*\])*//" $file
23}
24
25if [ "$1" = remove ]; then
26 remove_nss_entry /etc/nsswitch.conf libnss-systemd systemd
27fi
28
29#DEBHELPER#
diff --git a/debian/libpam-systemd.install b/debian/libpam-systemd.install
index 7b5a260..b4faf87 100644
--- a/debian/libpam-systemd.install
+++ b/debian/libpam-systemd.install
@@ -1,3 +1,2 @@
1lib/*/security/pam_systemd.so1lib/*/security/pam_systemd.so
2usr/share/man/man8/pam_systemd.82../extra/pam-configs/systemd usr/share/pam-configs/
3../extra/pam-configs usr/share/
diff --git a/debian/libpam-systemd.manpages b/debian/libpam-systemd.manpages
4new file mode 1006443new file mode 100644
index 0000000..d30ee0f
--- /dev/null
+++ b/debian/libpam-systemd.manpages
@@ -0,0 +1 @@
1usr/share/man/man8/pam_systemd.8
diff --git a/debian/libsystemd-dev.install b/debian/libsystemd-dev.install
index eef73a9..5a73373 100644
--- a/debian/libsystemd-dev.install
+++ b/debian/libsystemd-dev.install
@@ -1,5 +1,3 @@
1usr/include/systemd/1usr/include/systemd/
2usr/lib/*/libsystemd.so2usr/lib/*/libsystemd.so
3usr/lib/*/pkgconfig/libsystemd.pc3usr/lib/*/pkgconfig/libsystemd.pc
4usr/share/man/man3/sd*
5usr/share/man/man3/SD*
diff --git a/debian/libsystemd-dev.manpages b/debian/libsystemd-dev.manpages
6new file mode 1006444new file mode 100644
index 0000000..0723dcb
--- /dev/null
+++ b/debian/libsystemd-dev.manpages
@@ -0,0 +1,2 @@
1usr/share/man/man3/sd*
2usr/share/man/man3/SD*
diff --git a/debian/libsystemd-shared.install b/debian/libsystemd-shared.install
0new file mode 1006443new file mode 100644
index 0000000..085a7cd
--- /dev/null
+++ b/debian/libsystemd-shared.install
@@ -0,0 +1,2 @@
1usr/lib/*/systemd/libsystemd-core-*.so
2usr/lib/*/systemd/libsystemd-shared-*.so
diff --git a/debian/libsystemd-shared.lintian-overrides b/debian/libsystemd-shared.lintian-overrides
0new file mode 1006443new file mode 100644
index 0000000..065ba9b
--- /dev/null
+++ b/debian/libsystemd-shared.lintian-overrides
@@ -0,0 +1,2 @@
1# Intentional: value of config got in a release by mistake, needs to be kept
2libsystemd-shared: spelling-error-in-binary usr/lib/*/systemd/libsystemd-shared-251.so anually annually
diff --git a/debian/libudev-dev.install b/debian/libudev-dev.install
index 3cd6bf0..ac9a6b4 100644
--- a/debian/libudev-dev.install
+++ b/debian/libudev-dev.install
@@ -1,5 +1,3 @@
1usr/include/libudev.h1usr/include/libudev.h
2usr/lib/*/libudev.so2usr/lib/*/libudev.so
3usr/lib/*/pkgconfig/libudev.pc3usr/lib/*/pkgconfig/libudev.pc
4usr/share/man/man3/udev*
5usr/share/man/man3/libudev*
diff --git a/debian/libudev-dev.manpages b/debian/libudev-dev.manpages
6new file mode 1006444new file mode 100644
index 0000000..009109c
--- /dev/null
+++ b/debian/libudev-dev.manpages
@@ -0,0 +1,2 @@
1usr/share/man/man3/udev*
2usr/share/man/man3/libudev*
diff --git a/debian/patches/Move-homectl-and-userdbctl-to-bindir.patch b/debian/patches/Move-homectl-and-userdbctl-to-bindir.patch
0new file mode 1006443new file mode 100644
index 0000000..a07e5cd
--- /dev/null
+++ b/debian/patches/Move-homectl-and-userdbctl-to-bindir.patch
@@ -0,0 +1,35 @@
1From: Michael Biebl <biebl@debian.org>
2Date: Sat, 28 May 2022 12:00:08 +0200
3Subject: Move homectl and userdbctl to bindir
4
5Those binaries aren't needed during early boot.
6
7(cherry picked from commit 003a67616148a8c2b94aa0c87595465f5dcac508)
8---
9 meson.build | 6 ++----
10 1 file changed, 2 insertions(+), 4 deletions(-)
11
12diff --git a/meson.build b/meson.build
13index dbba108..ecc5533 100644
14--- a/meson.build
15+++ b/meson.build
16@@ -2577,8 +2577,7 @@ if conf.get('ENABLE_USERDB') == 1
17 link_with : [libshared],
18 dependencies : [threads],
19 install_rpath : rootlibexecdir,
20- install : true,
21- install_dir : rootbindir)
22+ install : true)
23 endif
24
25 if conf.get('ENABLE_HOMED') == 1
26@@ -2621,8 +2620,7 @@ if conf.get('ENABLE_HOMED') == 1
27 libp11kit,
28 libdl],
29 install_rpath : rootlibexecdir,
30- install : true,
31- install_dir : rootbindir)
32+ install : true)
33
34 if conf.get('HAVE_PAM') == 1
35 version_script_arg = project_source_root / pam_systemd_home_sym
diff --git a/debian/patches/debian/Downgrade-a-couple-of-warnings-to-debug.patch b/debian/patches/debian/Downgrade-a-couple-of-warnings-to-debug.patch
index 0c8f9f4..1c4762c 100644
--- a/debian/patches/debian/Downgrade-a-couple-of-warnings-to-debug.patch
+++ b/debian/patches/debian/Downgrade-a-couple-of-warnings-to-debug.patch
@@ -16,7 +16,7 @@ Closes: #981407
16 3 files changed, 7 insertions(+), 3 deletions(-)16 3 files changed, 7 insertions(+), 3 deletions(-)
1717
18diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c18diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
19index 3ff6eae..09ba381 10064419index 11991ec..76893db 100644
20--- a/src/core/load-fragment.c20--- a/src/core/load-fragment.c
21+++ b/src/core/load-fragment.c21+++ b/src/core/load-fragment.c
22@@ -522,6 +522,7 @@ static int patch_var_run(22@@ -522,6 +522,7 @@ static int patch_var_run(
@@ -51,10 +51,10 @@ index 14ae873..aa9e94b 100644
51 "Please update package to include a native systemd unit file, in order to make it more safe and robust.", fpath);51 "Please update package to include a native systemd unit file, in order to make it more safe and robust.", fpath);
52 52
53diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c53diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
54index 94973c2..0d27daa 10064454index 53cd570..7d71edd 100644
55--- a/src/tmpfiles/tmpfiles.c55--- a/src/tmpfiles/tmpfiles.c
56+++ b/src/tmpfiles/tmpfiles.c56+++ b/src/tmpfiles/tmpfiles.c
57@@ -2760,6 +2760,7 @@ static int specifier_expansion_from_arg(const Specifier *specifier_table, Item *57@@ -2757,6 +2757,7 @@ static int specifier_expansion_from_arg(const Specifier *specifier_table, Item *
58 static int patch_var_run(const char *fname, unsigned line, char **path) {58 static int patch_var_run(const char *fname, unsigned line, char **path) {
59 const char *k;59 const char *k;
60 char *n;60 char *n;
@@ -62,7 +62,7 @@ index 94973c2..0d27daa 100644
62 62
63 assert(path);63 assert(path);
64 assert(*path);64 assert(*path);
65@@ -2785,7 +2786,8 @@ static int patch_var_run(const char *fname, unsigned line, char **path) {65@@ -2782,7 +2783,8 @@ static int patch_var_run(const char *fname, unsigned line, char **path) {
66 /* Also log about this briefly. We do so at LOG_NOTICE level, as we fixed up the situation automatically, hence66 /* Also log about this briefly. We do so at LOG_NOTICE level, as we fixed up the situation automatically, hence
67 * there's no immediate need for action by the user. However, in the interest of making things less confusing67 * there's no immediate need for action by the user. However, in the interest of making things less confusing
68 * to the user, let's still inform the user that these snippets should really be updated. */68 * to the user, let's still inform the user that these snippets should really be updated. */
diff --git a/debian/patches/debian/Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-back-to-.patch b/debian/patches/debian/Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-back-to-.patch
index 3cb53bc..9a39629 100644
--- a/debian/patches/debian/Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-back-to-.patch
+++ b/debian/patches/debian/Move-sysusers.d-sysctl.d-binfmt.d-modules-load.d-back-to-.patch
@@ -14,12 +14,12 @@ Closes: #971282
14 2 files changed, 8 insertions(+), 8 deletions(-)14 2 files changed, 8 insertions(+), 8 deletions(-)
1515
16diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in16diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
17index fc0f8c3..65996bb 10064417index 693433b..8368a3f 100644
18--- a/src/core/systemd.pc.in18--- a/src/core/systemd.pc.in
19+++ b/src/core/systemd.pc.in19+++ b/src/core/systemd.pc.in
20@@ -65,16 +65,16 @@ systemdshutdowndir=${systemd_shutdown_dir}20@@ -67,16 +67,16 @@ tmpfilesdir=${tmpfiles_dir}
21 tmpfiles_dir=${prefix}/lib/tmpfiles.d21
22 tmpfilesdir=${tmpfiles_dir}22 user_tmpfiles_dir=${prefix}/share/user-tmpfiles.d
23 23
24-sysusers_dir=${rootprefix}/lib/sysusers.d24-sysusers_dir=${rootprefix}/lib/sysusers.d
25+sysusers_dir=${prefix}/lib/sysusers.d25+sysusers_dir=${prefix}/lib/sysusers.d
diff --git a/debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch b/debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch
index 37f3a0a..6043efd 100644
--- a/debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch
+++ b/debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch
@@ -19,7 +19,7 @@ Bug-Debian: https://bugs.debian.org/815020
19 2 files changed, 1 insertion(+), 21 deletions(-)19 2 files changed, 1 insertion(+), 21 deletions(-)
2020
21diff --git a/src/core/main.c b/src/core/main.c21diff --git a/src/core/main.c b/src/core/main.c
22index 409b84a..7989bbe 10064422index 69d450a..badd385 100644
23--- a/src/core/main.c23--- a/src/core/main.c
24+++ b/src/core/main.c24+++ b/src/core/main.c
25@@ -1619,24 +1619,6 @@ static void cmdline_take_random_seed(void) {25@@ -1619,24 +1619,6 @@ static void cmdline_take_random_seed(void) {
@@ -47,7 +47,7 @@ index 409b84a..7989bbe 100644
47 static void initialize_core_pattern(bool skip_setup) {47 static void initialize_core_pattern(bool skip_setup) {
48 int r;48 int r;
49 49
50@@ -2765,8 +2747,6 @@ int main(int argc, char *argv[]) {50@@ -2763,8 +2745,6 @@ int main(int argc, char *argv[]) {
51 kernel_timestamp = DUAL_TIMESTAMP_NULL;51 kernel_timestamp = DUAL_TIMESTAMP_NULL;
52 }52 }
53 53
diff --git a/debian/patches/debian/Use-Debian-specific-config-files.patch b/debian/patches/debian/Use-Debian-specific-config-files.patch
index 3b25027..b7a2c6d 100644
--- a/debian/patches/debian/Use-Debian-specific-config-files.patch
+++ b/debian/patches/debian/Use-Debian-specific-config-files.patch
@@ -16,7 +16,7 @@ Read/write /etc/timezone if /etc/localtime does not exist.
16 4 files changed, 164 insertions(+), 113 deletions(-)16 4 files changed, 164 insertions(+), 113 deletions(-)
1717
18diff --git a/src/basic/time-util.c b/src/basic/time-util.c18diff --git a/src/basic/time-util.c b/src/basic/time-util.c
19index c309369..6e3fbd1 10064419index 0ad8de4..f0f0ef4 100644
20--- a/src/basic/time-util.c20--- a/src/basic/time-util.c
21+++ b/src/basic/time-util.c21+++ b/src/basic/time-util.c
22@@ -1477,19 +1477,43 @@ int get_timezone(char **ret) {22@@ -1477,19 +1477,43 @@ int get_timezone(char **ret) {
@@ -101,7 +101,7 @@ index 716febb..9818602 100644
101 char *s;101 char *s;
102 102
103diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c103diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c
104index 9759f46..4eb48bb 100644104index 2d1b982..96b7eca 100644
105--- a/src/locale/keymap-util.c105--- a/src/locale/keymap-util.c
106+++ b/src/locale/keymap-util.c106+++ b/src/locale/keymap-util.c
107@@ -91,6 +91,7 @@ void locale_simplify(char *locale[_VARIABLE_LC_MAX]) {107@@ -91,6 +91,7 @@ void locale_simplify(char *locale[_VARIABLE_LC_MAX]) {
diff --git a/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch b/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch
index e028e3c..80211e4 100644
--- a/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch
+++ b/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch
@@ -239,10 +239,10 @@ index 0000000..b7ad58d
239+239+
240+</refentry>240+</refentry>
241diff --git a/meson.build b/meson.build241diff --git a/meson.build b/meson.build
242index 36cbfa4..2abc0f1 100644242index f73c7ff..d94e75d 100644
243--- a/meson.build243--- a/meson.build
244+++ b/meson.build244+++ b/meson.build
245@@ -3207,6 +3207,15 @@ executable(245@@ -3219,6 +3219,15 @@ executable(
246 install : true,246 install : true,
247 install_dir : rootlibexecdir)247 install_dir : rootlibexecdir)
248 248
@@ -251,7 +251,7 @@ index 36cbfa4..2abc0f1 100644
251+ 'src/fsckd/fsckd.c',251+ 'src/fsckd/fsckd.c',
252+ include_directories : includes,252+ include_directories : includes,
253+ link_with : [libshared],253+ link_with : [libshared],
254+ install_rpath : rootlibexecdir,254+ install_rpath : rootpkglibdir,
255+ install : true,255+ install : true,
256+ install_dir : rootlibexecdir)256+ install_dir : rootlibexecdir)
257+257+
diff --git a/debian/patches/glibc-Remove-include-linux-fs.h-to-resolve-fsconfig_comma.patch b/debian/patches/glibc-Remove-include-linux-fs.h-to-resolve-fsconfig_comma.patch
258deleted file mode 100644258deleted file mode 100644
index c11f3e8..0000000
--- a/debian/patches/glibc-Remove-include-linux-fs.h-to-resolve-fsconfig_comma.patch
+++ /dev/null
@@ -1,95 +0,0 @@
1From: Rudi Heitbaum <rudi@heitbaum.com>
2Date: Sat, 23 Jul 2022 10:38:49 +0000
3Subject: glibc: Remove #include <linux/fs.h> to resolve
4Origin: upstream,https://github.com/systemd/systemd/pull/23992
5
6fsconfig_command/mount_attr conflict with glibc 2.36
7Fixes: #23984
8
9---
10 meson.build | 13 ++++++++++++-
11 src/basic/fd-util.c | 2 ++
12 src/core/namespace.c | 2 ++
13 src/shared/mount-util.c | 2 ++
14 4 files changed, 18 insertions(+), 1 deletion(-)
15
16diff --git a/meson.build b/meson.build
17index 2abc0f1..9f00405 100644
18--- a/meson.build
19+++ b/meson.build
20@@ -479,7 +479,6 @@ decl_headers = '''
21 #include <uchar.h>
22 #include <sys/mount.h>
23 #include <sys/stat.h>
24-#include <linux/fs.h>
25 '''
26
27 foreach decl : ['char16_t',
28@@ -491,6 +490,17 @@ foreach decl : ['char16_t',
29 # We get -1 if the size cannot be determined
30 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
31
32+ if decl == 'struct mount_attr'
33+ if have
34+ want_linux_fs_h = false
35+ else
36+ have = cc.sizeof(decl,
37+ prefix : decl_headers + '#include <linux/fs.h>',
38+ args : '-D_GNU_SOURCE') > 0
39+ want_linux_fs_h = have
40+ endif
41+ endif
42+
43 if decl == 'struct statx'
44 if have
45 want_linux_stat_h = false
46@@ -506,6 +516,7 @@ foreach decl : ['char16_t',
47 endforeach
48
49 conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
50+conf.set10('WANT_LINUX_FS_H', want_linux_fs_h)
51
52 foreach ident : ['secure_getenv', '__secure_getenv']
53 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
54diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c
55index 6c1de92..00591d6 100644
56--- a/src/basic/fd-util.c
57+++ b/src/basic/fd-util.c
58@@ -3,7 +3,9 @@
59 #include <errno.h>
60 #include <fcntl.h>
61 #include <linux/btrfs.h>
62+#if WANT_LINUX_FS_H
63 #include <linux/fs.h>
64+#endif
65 #include <linux/magic.h>
66 #include <sys/ioctl.h>
67 #include <sys/resource.h>
68diff --git a/src/core/namespace.c b/src/core/namespace.c
69index 926aa96..c85a947 100644
70--- a/src/core/namespace.c
71+++ b/src/core/namespace.c
72@@ -6,7 +6,9 @@
73 #include <stdio.h>
74 #include <sys/mount.h>
75 #include <unistd.h>
76+#if WANT_LINUX_FS_H
77 #include <linux/fs.h>
78+#endif
79
80 #include "alloc-util.h"
81 #include "base-filesystem.h"
82diff --git a/src/shared/mount-util.c b/src/shared/mount-util.c
83index e76e4a0..0c8dec7 100644
84--- a/src/shared/mount-util.c
85+++ b/src/shared/mount-util.c
86@@ -7,7 +7,9 @@
87 #include <sys/statvfs.h>
88 #include <unistd.h>
89 #include <linux/loop.h>
90+#if WANT_LINUX_FS_H
91 #include <linux/fs.h>
92+#endif
93
94 #include "alloc-util.h"
95 #include "chase-symlinks.h"
diff --git a/debian/patches/lp1979215-boot-efi-missing-.note.GNU-stack-section-implies-executab.patch b/debian/patches/lp1979215-boot-efi-missing-.note.GNU-stack-section-implies-executab.patch
96deleted file mode 1006440deleted file mode 100644
index 150eb84..0000000
--- a/debian/patches/lp1979215-boot-efi-missing-.note.GNU-stack-section-implies-executab.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1Description: Ignore 'missing .note.GNU-stack section implies executable stack' warning
2 This is actually caused by crt0-efi-x86_64.o from gnu-efi. Ignore the warning until
3 this package is fixed.
4Author: Nick Rosbrook <nick.rosbrook@canonical.com>
5Bug: https://sourceforge.net/p/gnu-efi/bugs/28/
6Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnu-efi/+bug/1979215
7Last-Update: 2022-06-20
8---
9From: Nick Rosbrook <nick.rosbrook@canonical.com>
10Date: Fri, 17 Jun 2022 14:48:49 -0400
11Subject: boot/efi: ignore 'missing .note.GNU-stack section implies executable stack' warning
12
13This actually comes from gnu-efi [1], so once that is fixed we can drop
14this patch.
15
16[1] https://sourceforge.net/p/gnu-efi/bugs/28/
17---
18 src/boot/efi/meson.build | 1 +
19 1 file changed, 1 insertion(+)
20
21diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
22index 299a01b..6f0d7b9 100644
23--- a/src/boot/efi/meson.build
24+++ b/src/boot/efi/meson.build
25@@ -256,6 +256,7 @@ efi_ldflags = [
26 '-Wl,--fatal-warnings',
27 '-Wl,--no-undefined',
28 '-Wl,--warn-common',
29+ '-Wl,--no-warn-execstack',
30 '-Wl,-Bsymbolic',
31 '-z', 'nocombreloc',
32 efi_crt0,
diff --git a/debian/patches/lp1979236-boot-efi-set-no-warn-rwx-segments-on-arm.patch b/debian/patches/lp1979236-boot-efi-set-no-warn-rwx-segments-on-arm.patch
33deleted file mode 1006440deleted file mode 100644
index 2e09a6d..0000000
--- a/debian/patches/lp1979236-boot-efi-set-no-warn-rwx-segments-on-arm.patch
+++ /dev/null
@@ -1,34 +0,0 @@
1Description: Set --no-warn-rwx-segments on arm
2 A new linker warning is causing FTBFS on arm. Until upstream systemd
3 has an appropriate patch, just disable the warning.
4Author: Nick Rosbrook <nick.rosbrook@canonical.com>
5Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1979236
6Last-Update: 2022-06-20
7---
8From: Nick Rosbrook <nick.rosbrook@canonical.com>
9Date: Fri, 17 Jun 2022 15:54:34 -0400
10Subject: boot/efi: set --no-warn-rwx-segments on arm
11
12---
13 src/boot/efi/meson.build | 2 ++
14 1 file changed, 2 insertions(+)
15diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
16index 6f0d7b9..c0beffb 100644
17--- a/src/boot/efi/meson.build
18+++ b/src/boot/efi/meson.build
19@@ -266,6 +266,7 @@ if efi_arch[1] in ['aarch64', 'arm', 'riscv64']
20 # Aarch64, ARM32 and 64bit RISC-V don't have an EFI capable objcopy.
21 # Use 'binary' instead, and add required symbols manually.
22 efi_ldflags += ['-Wl,--defsym=EFI_SUBSYSTEM=0xa']
23+ efi_ldflags += ['-Wl,--no-warn-rwx-segments']
24 efi_format = ['-O', 'binary']
25 else
26 efi_ldflags += ['-pie']
27@@ -280,6 +281,7 @@ if efi_arch[1] == 'arm'
28 # is because libgcc is not compiled with -fshort-wchar, but it does not
29 # have any occurrences of wchar_t in its sources or the documentation, so
30 # it is safe to assume that we can ignore this warning.
31+ efi_ldflags += ['-Wl,--no-warn-rwx-segments']
32 efi_ldflags += ['-Wl,--no-wchar-size-warning']
33 endif
34
diff --git a/debian/patches/meson-install-libsystemd-shared-into-rootpkglibdir.patch b/debian/patches/meson-install-libsystemd-shared-into-rootpkglibdir.patch
35new file mode 1006440new file mode 100644
index 0000000..91a4e3a
--- /dev/null
+++ b/debian/patches/meson-install-libsystemd-shared-into-rootpkglibdir.patch
@@ -0,0 +1,1218 @@
1From: Michael Biebl <biebl@debian.org>
2Date: Wed, 1 Jun 2022 08:23:02 +0200
3Subject: meson: install libsystemd-shared into rootpkglibdir
4
5Introduce rootpkglibdir for installing libsystemd-{shared,core}.so.
6The benefit over using rootlibexecdir is that this path can be
7multiarch aware, i.e. this path can be architecture qualified.
8
9This is something we'd like to make use of in Debian/Ubuntu to make
10libsystemd-shared co-installable, e.g. for i386 the path would be
11/usr/lib/i386-linux-gnu/systemd/libsystemd-shared-*.so and for amd64
12/usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-*.so.
13This will allow for example to install and run systemd-boot/i386 on an
14amd64 host. It also simplifies/enables cross-building/bootstrapping.
15
16For more infos about Multi-Arch see https://wiki.debian.org/Multiarch.
17
18See also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990547
19
20(cherry picked from commit 5fb225615bf751b97644bed7aae44f69ba03cc84)
21---
22 meson.build | 249 ++++++++++++++++++++++++-----------------------
23 src/core/meson.build | 2 +-
24 src/nspawn/nspawn-util.c | 5 +-
25 src/shared/meson.build | 2 +-
26 src/udev/meson.build | 2 +-
27 5 files changed, 132 insertions(+), 128 deletions(-)
28
29diff --git a/meson.build b/meson.build
30index ecc5533..f73c7ff 100644
31--- a/meson.build
32+++ b/meson.build
33@@ -146,6 +146,7 @@ rootlibdir = get_option('rootlibdir')
34 if rootlibdir == ''
35 rootlibdir = rootprefixdir / libdir.split('/')[-1]
36 endif
37+rootpkglibdir = rootlibdir / 'systemd'
38
39 install_sysconfdir = get_option('install-sysconfdir') != 'false'
40 install_sysconfdir_samples = get_option('install-sysconfdir') == 'true'
41@@ -1994,7 +1995,7 @@ if conf.get('HAVE_LIBCRYPTSETUP_PLUGINS') == 1
42 tpm2,
43 versiondep],
44 link_depends : cryptsetup_token_sym,
45- install_rpath : rootlibexecdir,
46+ install_rpath : rootpkglibdir,
47 install : true,
48 install_dir : libcryptsetup_plugins_dir)
49 endif
50@@ -2012,7 +2013,7 @@ if conf.get('HAVE_LIBCRYPTSETUP_PLUGINS') == 1
51 libfido2,
52 versiondep],
53 link_depends : cryptsetup_token_sym,
54- install_rpath : rootlibexecdir,
55+ install_rpath : rootpkglibdir,
56 install : true,
57 install_dir : libcryptsetup_plugins_dir)
58 endif
59@@ -2030,7 +2031,7 @@ if conf.get('HAVE_LIBCRYPTSETUP_PLUGINS') == 1
60 libp11kit,
61 versiondep],
62 link_depends : cryptsetup_token_sym,
63- install_rpath : rootlibexecdir,
64+ install_rpath : rootpkglibdir,
65 install : true,
66 install_dir : libcryptsetup_plugins_dir)
67 endif
68@@ -2165,7 +2166,7 @@ exe = executable(
69 libshared],
70 dependencies : [versiondep,
71 libseccomp],
72- install_rpath : rootlibexecdir,
73+ install_rpath : rootpkglibdir,
74 install : true,
75 install_dir : rootlibexecdir)
76 dbus_programs += exe
77@@ -2183,7 +2184,7 @@ public_programs += executable(
78 libshared],
79 dependencies : [versiondep,
80 libseccomp],
81- install_rpath : rootlibexecdir,
82+ install_rpath : rootpkglibdir,
83 install : conf.get('ENABLE_ANALYZE') == 1)
84
85 executable(
86@@ -2197,7 +2198,7 @@ executable(
87 liblz4,
88 libselinux,
89 libzstd],
90- install_rpath : rootlibexecdir,
91+ install_rpath : rootpkglibdir,
92 install : true,
93 install_dir : rootlibexecdir)
94
95@@ -2208,7 +2209,7 @@ public_programs += executable(
96 link_with : [libjournal_core,
97 libshared],
98 dependencies : [threads],
99- install_rpath : rootlibexecdir,
100+ install_rpath : rootpkglibdir,
101 install : true)
102
103 public_programs += executable(
104@@ -2222,7 +2223,7 @@ public_programs += executable(
105 liblz4,
106 libzstd,
107 libdl],
108- install_rpath : rootlibexecdir,
109+ install_rpath : rootpkglibdir,
110 install : true,
111 install_dir : rootbindir)
112
113@@ -2231,7 +2232,7 @@ executable(
114 'src/getty-generator/getty-generator.c',
115 include_directories : includes,
116 link_with : [libshared],
117- install_rpath : rootlibexecdir,
118+ install_rpath : rootpkglibdir,
119 install : true,
120 install_dir : systemgeneratordir)
121
122@@ -2240,7 +2241,7 @@ executable(
123 'src/debug-generator/debug-generator.c',
124 include_directories : includes,
125 link_with : [libshared],
126- install_rpath : rootlibexecdir,
127+ install_rpath : rootpkglibdir,
128 install : true,
129 install_dir : systemgeneratordir)
130
131@@ -2249,7 +2250,7 @@ executable(
132 'src/run-generator/run-generator.c',
133 include_directories : includes,
134 link_with : [libshared],
135- install_rpath : rootlibexecdir,
136+ install_rpath : rootpkglibdir,
137 install : true,
138 install_dir : systemgeneratordir)
139
140@@ -2258,7 +2259,7 @@ exe = executable(
141 'src/fstab-generator/fstab-generator.c',
142 include_directories : includes,
143 link_with : [libshared],
144- install_rpath : rootlibexecdir,
145+ install_rpath : rootpkglibdir,
146 install : true,
147 install_dir : systemgeneratordir)
148
149@@ -2276,7 +2277,7 @@ if conf.get('ENABLE_ENVIRONMENT_D') == 1
150 'src/environment-d-generator/environment-d-generator.c',
151 include_directories : includes,
152 link_with : [libshared],
153- install_rpath : rootlibexecdir,
154+ install_rpath : rootpkglibdir,
155 install : true,
156 install_dir : userenvgeneratordir)
157
158@@ -2291,7 +2292,7 @@ if conf.get('ENABLE_HIBERNATE') == 1
159 'src/hibernate-resume/hibernate-resume-generator.c',
160 include_directories : includes,
161 link_with : [libshared],
162- install_rpath : rootlibexecdir,
163+ install_rpath : rootpkglibdir,
164 install : true,
165 install_dir : systemgeneratordir)
166
167@@ -2300,7 +2301,7 @@ if conf.get('ENABLE_HIBERNATE') == 1
168 'src/hibernate-resume/hibernate-resume.c',
169 include_directories : includes,
170 link_with : [libshared],
171- install_rpath : rootlibexecdir,
172+ install_rpath : rootpkglibdir,
173 install : true,
174 install_dir : rootlibexecdir)
175 endif
176@@ -2312,7 +2313,7 @@ if conf.get('HAVE_BLKID') == 1
177 include_directories : includes,
178 link_with : [libshared],
179 dependencies : libblkid,
180- install_rpath : rootlibexecdir,
181+ install_rpath : rootpkglibdir,
182 install : true,
183 install_dir : systemgeneratordir)
184
185@@ -2321,7 +2322,7 @@ if conf.get('HAVE_BLKID') == 1
186 'src/dissect/dissect.c',
187 include_directories : includes,
188 link_with : [libshared],
189- install_rpath : rootlibexecdir,
190+ install_rpath : rootpkglibdir,
191 install : true)
192 endif
193
194@@ -2334,7 +2335,7 @@ if conf.get('ENABLE_RESOLVE') == 1
195 libbasic_gcrypt,
196 libsystemd_resolve_core],
197 dependencies : systemd_resolved_dependencies,
198- install_rpath : rootlibexecdir,
199+ install_rpath : rootpkglibdir,
200 install : true,
201 install_dir : rootlibexecdir)
202
203@@ -2349,7 +2350,7 @@ if conf.get('ENABLE_RESOLVE') == 1
204 lib_openssl_or_gcrypt,
205 libm,
206 libidn],
207- install_rpath : rootlibexecdir,
208+ install_rpath : rootpkglibdir,
209 install : true)
210
211 meson.add_install_script(meson_make_symlink,
212@@ -2370,7 +2371,7 @@ if conf.get('ENABLE_LOGIND') == 1
213 libshared],
214 dependencies : [threads,
215 libacl],
216- install_rpath : rootlibexecdir,
217+ install_rpath : rootpkglibdir,
218 install : true,
219 install_dir : rootlibexecdir)
220
221@@ -2383,7 +2384,7 @@ if conf.get('ENABLE_LOGIND') == 1
222 liblz4,
223 libxz,
224 libzstd],
225- install_rpath : rootlibexecdir,
226+ install_rpath : rootpkglibdir,
227 install : true,
228 install_dir : rootbindir)
229
230@@ -2392,7 +2393,7 @@ if conf.get('ENABLE_LOGIND') == 1
231 'src/login/inhibit.c',
232 include_directories : includes,
233 link_with : [libshared],
234- install_rpath : rootlibexecdir,
235+ install_rpath : rootpkglibdir,
236 install : true,
237 install_dir : rootbindir)
238
239@@ -2429,7 +2430,7 @@ if conf.get('ENABLE_LOGIND') == 1
240 user_runtime_dir_sources,
241 include_directories : includes,
242 link_with : [libshared],
243- install_rpath : rootlibexecdir,
244+ install_rpath : rootpkglibdir,
245 install : true,
246 install_dir : rootlibexecdir)
247 endif
248@@ -2440,7 +2441,7 @@ if conf.get('HAVE_PAM') == 1
249 'src/user-sessions/user-sessions.c',
250 include_directories : includes,
251 link_with : [libshared],
252- install_rpath : rootlibexecdir,
253+ install_rpath : rootpkglibdir,
254 install : true,
255 install_dir : rootlibexecdir)
256 endif
257@@ -2458,7 +2459,7 @@ if conf.get('HAVE_BLKID') == 1 and conf.get('HAVE_GNU_EFI') == 1
258 include_directories : includes,
259 link_with : [boot_link_with],
260 dependencies : [libblkid],
261- install_rpath : rootlibexecdir,
262+ install_rpath : rootpkglibdir,
263 install : true)
264
265 public_programs += executable(
266@@ -2467,7 +2468,7 @@ if conf.get('HAVE_BLKID') == 1 and conf.get('HAVE_GNU_EFI') == 1
267 include_directories : includes,
268 link_with : [boot_link_with],
269 dependencies : [libblkid],
270- install_rpath : rootlibexecdir,
271+ install_rpath : rootpkglibdir,
272 install : true,
273 install_dir : rootlibexecdir)
274
275@@ -2476,7 +2477,7 @@ if conf.get('HAVE_BLKID') == 1 and conf.get('HAVE_GNU_EFI') == 1
276 'src/boot/bless-boot-generator.c',
277 include_directories : includes,
278 link_with : [boot_link_with],
279- install_rpath : rootlibexecdir,
280+ install_rpath : rootpkglibdir,
281 install : true,
282 install_dir : systemgeneratordir)
283 endif
284@@ -2487,7 +2488,7 @@ executable(
285 include_directories : includes,
286 link_with : [libshared],
287 dependencies : [libblkid],
288- install_rpath : rootlibexecdir,
289+ install_rpath : rootpkglibdir,
290 install : true,
291 install_dir : rootlibexecdir)
292
293@@ -2497,7 +2498,7 @@ public_programs += executable(
294 include_directories : includes,
295 link_with : [libshared],
296 dependencies : [threads],
297- install_rpath : rootlibexecdir,
298+ install_rpath : rootpkglibdir,
299 install : true)
300
301 systemctl = executable(
302@@ -2511,7 +2512,7 @@ systemctl = executable(
303 libxz,
304 liblz4,
305 libzstd],
306- install_rpath : rootlibexecdir,
307+ install_rpath : rootpkglibdir,
308 install : true,
309 install_dir : rootbindir)
310 public_programs += systemctl
311@@ -2523,7 +2524,7 @@ if conf.get('ENABLE_PORTABLED') == 1
312 include_directories : includes,
313 link_with : [libshared],
314 dependencies : [threads, libselinux],
315- install_rpath : rootlibexecdir,
316+ install_rpath : rootpkglibdir,
317 install : true,
318 install_dir : rootlibexecdir)
319
320@@ -2533,7 +2534,7 @@ if conf.get('ENABLE_PORTABLED') == 1
321 include_directories : includes,
322 link_with : [libshared],
323 dependencies : [threads],
324- install_rpath : rootlibexecdir,
325+ install_rpath : rootpkglibdir,
326 install : true,
327 install_dir : rootbindir)
328 endif
329@@ -2544,7 +2545,7 @@ if conf.get('ENABLE_SYSEXT') == 1
330 systemd_sysext_sources,
331 include_directories : includes,
332 link_with : [libshared],
333- install_rpath : rootlibexecdir,
334+ install_rpath : rootpkglibdir,
335 install : true,
336 install_dir : rootbindir)
337 endif
338@@ -2556,7 +2557,7 @@ if conf.get('ENABLE_USERDB') == 1
339 include_directories : includes,
340 link_with : [libshared],
341 dependencies : [threads],
342- install_rpath : rootlibexecdir,
343+ install_rpath : rootpkglibdir,
344 install : true,
345 install_dir : rootlibexecdir)
346
347@@ -2566,7 +2567,7 @@ if conf.get('ENABLE_USERDB') == 1
348 include_directories : includes,
349 link_with : [libshared],
350 dependencies : [threads],
351- install_rpath : rootlibexecdir,
352+ install_rpath : rootpkglibdir,
353 install : true,
354 install_dir : rootlibexecdir)
355
356@@ -2576,7 +2577,7 @@ if conf.get('ENABLE_USERDB') == 1
357 include_directories : includes,
358 link_with : [libshared],
359 dependencies : [threads],
360- install_rpath : rootlibexecdir,
361+ install_rpath : rootpkglibdir,
362 install : true)
363 endif
364
365@@ -2592,7 +2593,7 @@ if conf.get('ENABLE_HOMED') == 1
366 libopenssl,
367 libfdisk,
368 libp11kit],
369- install_rpath : rootlibexecdir,
370+ install_rpath : rootpkglibdir,
371 install : true,
372 install_dir : rootlibexecdir)
373
374@@ -2605,7 +2606,7 @@ if conf.get('ENABLE_HOMED') == 1
375 libcrypt,
376 libopenssl,
377 libm],
378- install_rpath : rootlibexecdir,
379+ install_rpath : rootpkglibdir,
380 install : true,
381 install_dir : rootlibexecdir)
382
383@@ -2619,7 +2620,7 @@ if conf.get('ENABLE_HOMED') == 1
384 libopenssl,
385 libp11kit,
386 libdl],
387- install_rpath : rootlibexecdir,
388+ install_rpath : rootpkglibdir,
389 install : true)
390
391 if conf.get('HAVE_PAM') == 1
392@@ -2661,7 +2662,7 @@ if conf.get('ENABLE_BACKLIGHT') == 1
393 'src/backlight/backlight.c',
394 include_directories : includes,
395 link_with : [libshared],
396- install_rpath : rootlibexecdir,
397+ install_rpath : rootpkglibdir,
398 install : true,
399 install_dir : rootlibexecdir)
400 endif
401@@ -2672,7 +2673,7 @@ if conf.get('ENABLE_RFKILL') == 1
402 'src/rfkill/rfkill.c',
403 include_directories : includes,
404 link_with : [libshared],
405- install_rpath : rootlibexecdir,
406+ install_rpath : rootpkglibdir,
407 install : true,
408 install_dir : rootlibexecdir)
409 endif
410@@ -2682,7 +2683,7 @@ executable(
411 'src/system-update-generator/system-update-generator.c',
412 include_directories : includes,
413 link_with : [libshared],
414- install_rpath : rootlibexecdir,
415+ install_rpath : rootpkglibdir,
416 install : true,
417 install_dir : systemgeneratordir)
418
419@@ -2694,7 +2695,7 @@ if conf.get('HAVE_LIBCRYPTSETUP') == 1
420 link_with : [libshared],
421 dependencies : [libcryptsetup,
422 libp11kit],
423- install_rpath : rootlibexecdir,
424+ install_rpath : rootpkglibdir,
425 install : true,
426 install_dir : rootlibexecdir)
427
428@@ -2703,7 +2704,7 @@ if conf.get('HAVE_LIBCRYPTSETUP') == 1
429 'src/cryptsetup/cryptsetup-generator.c',
430 include_directories : includes,
431 link_with : [libshared],
432- install_rpath : rootlibexecdir,
433+ install_rpath : rootpkglibdir,
434 install : true,
435 install_dir : systemgeneratordir)
436
437@@ -2713,7 +2714,7 @@ if conf.get('HAVE_LIBCRYPTSETUP') == 1
438 include_directories : includes,
439 link_with : [libshared],
440 dependencies : [libcryptsetup],
441- install_rpath : rootlibexecdir,
442+ install_rpath : rootpkglibdir,
443 install : true,
444 install_dir : rootlibexecdir)
445
446@@ -2722,7 +2723,7 @@ if conf.get('HAVE_LIBCRYPTSETUP') == 1
447 'src/veritysetup/veritysetup-generator.c',
448 include_directories : includes,
449 link_with : [libshared],
450- install_rpath : rootlibexecdir,
451+ install_rpath : rootpkglibdir,
452 install : true,
453 install_dir : systemgeneratordir)
454
455@@ -2735,7 +2736,7 @@ if conf.get('HAVE_LIBCRYPTSETUP') == 1
456 libdl,
457 libopenssl,
458 libp11kit],
459- install_rpath : rootlibexecdir,
460+ install_rpath : rootpkglibdir,
461 install : true)
462
463 executable(
464@@ -2744,7 +2745,7 @@ if conf.get('HAVE_LIBCRYPTSETUP') == 1
465 include_directories : includes,
466 link_with : [libshared],
467 dependencies : [libcryptsetup],
468- install_rpath : rootlibexecdir,
469+ install_rpath : rootpkglibdir,
470 install : true,
471 install_dir : rootlibexecdir)
472
473@@ -2753,7 +2754,7 @@ if conf.get('HAVE_LIBCRYPTSETUP') == 1
474 ['src/integritysetup/integritysetup-generator.c', 'src/integritysetup/integrity-util.c'],
475 include_directories : includes,
476 link_with : [libshared],
477- install_rpath : rootlibexecdir,
478+ install_rpath : rootpkglibdir,
479 install : true,
480 install_dir : systemgeneratordir)
481 endif
482@@ -2764,7 +2765,7 @@ if conf.get('HAVE_SYSV_COMPAT') == 1
483 'src/sysv-generator/sysv-generator.c',
484 include_directories : includes,
485 link_with : [libshared],
486- install_rpath : rootlibexecdir,
487+ install_rpath : rootpkglibdir,
488 install : true,
489 install_dir : systemgeneratordir)
490
491@@ -2780,7 +2781,7 @@ if conf.get('HAVE_SYSV_COMPAT') == 1
492 'src/rc-local-generator/rc-local-generator.c',
493 include_directories : includes,
494 link_with : [libshared],
495- install_rpath : rootlibexecdir,
496+ install_rpath : rootpkglibdir,
497 install : true,
498 install_dir : systemgeneratordir)
499 endif
500@@ -2791,7 +2792,7 @@ if conf.get('ENABLE_XDG_AUTOSTART') == 1
501 systemd_xdg_autostart_generator_sources,
502 include_directories : includes,
503 link_with : [libshared],
504- install_rpath : rootlibexecdir,
505+ install_rpath : rootpkglibdir,
506 install : true,
507 install_dir : usergeneratordir)
508
509@@ -2800,7 +2801,7 @@ if conf.get('ENABLE_XDG_AUTOSTART') == 1
510 'src/xdg-autostart-generator/xdg-autostart-condition.c',
511 include_directories : includes,
512 link_with : [libshared],
513- install_rpath : rootlibexecdir,
514+ install_rpath : rootpkglibdir,
515 install : true,
516 install_dir : rootlibexecdir)
517 endif
518@@ -2811,7 +2812,7 @@ if conf.get('ENABLE_HOSTNAMED') == 1
519 'src/hostname/hostnamed.c',
520 include_directories : includes,
521 link_with : [libshared],
522- install_rpath : rootlibexecdir,
523+ install_rpath : rootpkglibdir,
524 install : true,
525 install_dir : rootlibexecdir)
526
527@@ -2820,7 +2821,7 @@ if conf.get('ENABLE_HOSTNAMED') == 1
528 'src/hostname/hostnamectl.c',
529 include_directories : includes,
530 link_with : [libshared],
531- install_rpath : rootlibexecdir,
532+ install_rpath : rootpkglibdir,
533 install : true)
534 endif
535
536@@ -2839,7 +2840,7 @@ if conf.get('ENABLE_LOCALED') == 1
537 include_directories : includes,
538 link_with : [libshared],
539 dependencies : deps,
540- install_rpath : rootlibexecdir,
541+ install_rpath : rootpkglibdir,
542 install : true,
543 install_dir : rootlibexecdir)
544
545@@ -2848,7 +2849,7 @@ if conf.get('ENABLE_LOCALED') == 1
546 localectl_sources,
547 include_directories : includes,
548 link_with : [libshared],
549- install_rpath : rootlibexecdir,
550+ install_rpath : rootpkglibdir,
551 install : true)
552 endif
553
554@@ -2858,7 +2859,7 @@ if conf.get('ENABLE_TIMEDATED') == 1
555 'src/timedate/timedated.c',
556 include_directories : includes,
557 link_with : [libshared],
558- install_rpath : rootlibexecdir,
559+ install_rpath : rootpkglibdir,
560 install : true,
561 install_dir : rootlibexecdir)
562 endif
563@@ -2868,7 +2869,7 @@ if conf.get('ENABLE_TIMEDATECTL') == 1
564 'timedatectl',
565 'src/timedate/timedatectl.c',
566 include_directories : includes,
567- install_rpath : rootlibexecdir,
568+ install_rpath : rootpkglibdir,
569 link_with : [libshared],
570 dependencies : [libm],
571 install : true)
572@@ -2882,7 +2883,7 @@ if conf.get('ENABLE_TIMESYNCD') == 1
573 link_with : [libtimesyncd_core],
574 dependencies : [threads,
575 libm],
576- install_rpath : rootlibexecdir,
577+ install_rpath : rootpkglibdir,
578 install : true,
579 install_dir : rootlibexecdir)
580
581@@ -2891,7 +2892,7 @@ if conf.get('ENABLE_TIMESYNCD') == 1
582 'src/timesync/wait-sync.c',
583 include_directories : includes,
584 link_with : [libtimesyncd_core],
585- install_rpath : rootlibexecdir,
586+ install_rpath : rootpkglibdir,
587 install : true,
588 install_dir : rootlibexecdir)
589 endif
590@@ -2903,7 +2904,7 @@ if conf.get('ENABLE_MACHINED') == 1
591 include_directories : includes,
592 link_with : [libmachine_core,
593 libshared],
594- install_rpath : rootlibexecdir,
595+ install_rpath : rootpkglibdir,
596 install : true,
597 install_dir : rootlibexecdir)
598
599@@ -2916,7 +2917,7 @@ if conf.get('ENABLE_MACHINED') == 1
600 libxz,
601 liblz4,
602 libzstd],
603- install_rpath : rootlibexecdir,
604+ install_rpath : rootpkglibdir,
605 install : true,
606 install_dir : rootbindir)
607 endif
608@@ -2928,7 +2929,7 @@ if conf.get('ENABLE_IMPORTD') == 1
609 include_directories : includes,
610 link_with : [libshared],
611 dependencies : [threads],
612- install_rpath : rootlibexecdir,
613+ install_rpath : rootpkglibdir,
614 install : true,
615 install_dir : rootlibexecdir)
616
617@@ -2944,7 +2945,7 @@ if conf.get('ENABLE_IMPORTD') == 1
618 libz,
619 libbzip2,
620 libxz],
621- install_rpath : rootlibexecdir,
622+ install_rpath : rootpkglibdir,
623 install : true,
624 install_dir : rootlibexecdir)
625
626@@ -2958,7 +2959,7 @@ if conf.get('ENABLE_IMPORTD') == 1
627 libz,
628 libbzip2,
629 libxz],
630- install_rpath : rootlibexecdir,
631+ install_rpath : rootpkglibdir,
632 install : true,
633 install_dir : rootlibexecdir)
634
635@@ -2968,7 +2969,7 @@ if conf.get('ENABLE_IMPORTD') == 1
636 include_directories : includes,
637 link_with : [libshared,
638 lib_import_common],
639- install_rpath : rootlibexecdir,
640+ install_rpath : rootpkglibdir,
641 install : true,
642 install_dir : rootlibexecdir)
643
644@@ -2982,7 +2983,7 @@ if conf.get('ENABLE_IMPORTD') == 1
645 libz,
646 libbzip2,
647 libxz],
648- install_rpath : rootlibexecdir,
649+ install_rpath : rootpkglibdir,
650 install : true,
651 install_dir : rootlibexecdir)
652
653@@ -3002,7 +3003,7 @@ if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
654 libxz,
655 liblz4,
656 libzstd],
657- install_rpath : rootlibexecdir,
658+ install_rpath : rootpkglibdir,
659 install : true,
660 install_dir : rootlibexecdir)
661 endif
662@@ -3020,7 +3021,7 @@ if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
663 libxz,
664 liblz4,
665 libzstd],
666- install_rpath : rootlibexecdir,
667+ install_rpath : rootpkglibdir,
668 install : true,
669 install_dir : rootlibexecdir)
670
671@@ -3035,7 +3036,7 @@ if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
672 libxz,
673 liblz4,
674 libzstd],
675- install_rpath : rootlibexecdir,
676+ install_rpath : rootpkglibdir,
677 install : true,
678 install_dir : rootlibexecdir)
679 endif
680@@ -3052,7 +3053,7 @@ if conf.get('ENABLE_COREDUMP') == 1
681 libxz,
682 liblz4,
683 libzstd],
684- install_rpath : rootlibexecdir,
685+ install_rpath : rootpkglibdir,
686 install : true,
687 install_dir : rootlibexecdir)
688
689@@ -3066,7 +3067,7 @@ if conf.get('ENABLE_COREDUMP') == 1
690 libxz,
691 liblz4,
692 libzstd],
693- install_rpath : rootlibexecdir,
694+ install_rpath : rootpkglibdir,
695 install : true)
696 endif
697
698@@ -3081,7 +3082,7 @@ if conf.get('ENABLE_PSTORE') == 1
699 libxz,
700 liblz4,
701 libzstd],
702- install_rpath : rootlibexecdir,
703+ install_rpath : rootpkglibdir,
704 install : true,
705 install_dir : rootlibexecdir)
706 endif
707@@ -3092,7 +3093,7 @@ if conf.get('ENABLE_OOMD') == 1
708 include_directories : includes,
709 link_with : [libshared],
710 dependencies : [],
711- install_rpath : rootlibexecdir,
712+ install_rpath : rootpkglibdir,
713 install : true,
714 install_dir : rootlibexecdir)
715
716@@ -3102,7 +3103,7 @@ if conf.get('ENABLE_OOMD') == 1
717 include_directories : includes,
718 link_with : [libshared],
719 dependencies : [],
720- install_rpath : rootlibexecdir,
721+ install_rpath : rootpkglibdir,
722 install : true)
723 endif
724
725@@ -3112,7 +3113,7 @@ if conf.get('ENABLE_BINFMT') == 1
726 'src/binfmt/binfmt.c',
727 include_directories : includes,
728 link_with : [libshared],
729- install_rpath : rootlibexecdir,
730+ install_rpath : rootpkglibdir,
731 install : true,
732 install_dir : rootlibexecdir)
733
734@@ -3134,7 +3135,7 @@ if conf.get('ENABLE_SYSUPDATE') == 1
735 libblkid,
736 libfdisk,
737 libopenssl],
738- install_rpath : rootlibexecdir,
739+ install_rpath : rootpkglibdir,
740 install : true,
741 install_dir : rootlibexecdir)
742 public_programs += exe
743@@ -3146,7 +3147,7 @@ if conf.get('ENABLE_VCONSOLE') == 1
744 'src/vconsole/vconsole-setup.c',
745 include_directories : includes,
746 link_with : [libshared],
747- install_rpath : rootlibexecdir,
748+ install_rpath : rootpkglibdir,
749 install : true,
750 install_dir : rootlibexecdir)
751 endif
752@@ -3157,7 +3158,7 @@ if conf.get('ENABLE_RANDOMSEED') == 1
753 'src/random-seed/random-seed.c',
754 include_directories : includes,
755 link_with : [libshared],
756- install_rpath : rootlibexecdir,
757+ install_rpath : rootpkglibdir,
758 install : true,
759 install_dir : rootlibexecdir)
760 endif
761@@ -3169,7 +3170,7 @@ if conf.get('ENABLE_FIRSTBOOT') == 1
762 include_directories : includes,
763 link_with : [libshared],
764 dependencies : [libcrypt],
765- install_rpath : rootlibexecdir,
766+ install_rpath : rootpkglibdir,
767 install : true,
768 install_dir : rootbindir)
769 endif
770@@ -3179,7 +3180,7 @@ executable(
771 'src/remount-fs/remount-fs.c',
772 include_directories : includes,
773 link_with : [libshared],
774- install_rpath : rootlibexecdir,
775+ install_rpath : rootpkglibdir,
776 install : true,
777 install_dir : rootlibexecdir)
778
779@@ -3188,7 +3189,7 @@ executable(
780 'src/machine-id-setup/machine-id-setup-main.c',
781 include_directories : includes,
782 link_with : [libshared],
783- install_rpath : rootlibexecdir,
784+ install_rpath : rootpkglibdir,
785 install : true,
786 install_dir : rootbindir)
787
788@@ -3197,7 +3198,7 @@ executable(
789 'src/fsck/fsck.c',
790 include_directories : includes,
791 link_with : [libshared],
792- install_rpath : rootlibexecdir,
793+ install_rpath : rootpkglibdir,
794 install : true,
795 install_dir : rootlibexecdir)
796
797@@ -3205,7 +3206,7 @@ executable('systemd-growfs',
798 'src/partition/growfs.c',
799 include_directories : includes,
800 link_with : [libshared],
801- install_rpath : rootlibexecdir,
802+ install_rpath : rootpkglibdir,
803 install : true,
804 install_dir : rootlibexecdir)
805
806@@ -3214,7 +3215,7 @@ executable(
807 'src/partition/makefs.c',
808 include_directories : includes,
809 link_with : [libshared],
810- install_rpath : rootlibexecdir,
811+ install_rpath : rootpkglibdir,
812 install : true,
813 install_dir : rootlibexecdir)
814
815@@ -3223,7 +3224,7 @@ executable(
816 'src/sleep/sleep.c',
817 include_directories : includes,
818 link_with : [libshared],
819- install_rpath : rootlibexecdir,
820+ install_rpath : rootpkglibdir,
821 install : true,
822 install_dir : rootlibexecdir)
823
824@@ -3237,7 +3238,7 @@ public_programs += executable(
825 'src/sysctl/sysctl.c',
826 include_directories : includes,
827 link_with : [libshared],
828- install_rpath : rootlibexecdir,
829+ install_rpath : rootpkglibdir,
830 install : true,
831 install_dir : rootlibexecdir)
832
833@@ -3246,7 +3247,7 @@ executable(
834 'src/ac-power/ac-power.c',
835 include_directories : includes,
836 link_with : [libshared],
837- install_rpath : rootlibexecdir,
838+ install_rpath : rootpkglibdir,
839 install : true,
840 install_dir : rootlibexecdir)
841
842@@ -3255,7 +3256,7 @@ public_programs += executable(
843 'src/detect-virt/detect-virt.c',
844 include_directories : includes,
845 link_with : [libshared],
846- install_rpath : rootlibexecdir,
847+ install_rpath : rootpkglibdir,
848 install : true)
849
850 public_programs += executable(
851@@ -3263,7 +3264,7 @@ public_programs += executable(
852 'src/delta/delta.c',
853 include_directories : includes,
854 link_with : [libshared],
855- install_rpath : rootlibexecdir,
856+ install_rpath : rootpkglibdir,
857 install : true)
858
859 public_programs += executable(
860@@ -3271,7 +3272,7 @@ public_programs += executable(
861 'src/escape/escape.c',
862 include_directories : includes,
863 link_with : [libshared],
864- install_rpath : rootlibexecdir,
865+ install_rpath : rootpkglibdir,
866 install : true,
867 install_dir : rootbindir)
868
869@@ -3280,7 +3281,7 @@ public_programs += executable(
870 'src/notify/notify.c',
871 include_directories : includes,
872 link_with : [libshared],
873- install_rpath : rootlibexecdir,
874+ install_rpath : rootpkglibdir,
875 install : true,
876 install_dir : rootbindir)
877
878@@ -3291,7 +3292,7 @@ public_programs += executable(
879 link_with : [libshared],
880 dependencies : [threads,
881 libopenssl],
882- install_rpath : rootlibexecdir,
883+ install_rpath : rootpkglibdir,
884 install : true,
885 install_dir : rootbindir)
886
887@@ -3300,7 +3301,7 @@ executable(
888 'src/volatile-root/volatile-root.c',
889 include_directories : includes,
890 link_with : [libshared],
891- install_rpath : rootlibexecdir,
892+ install_rpath : rootpkglibdir,
893 install : conf.get('ENABLE_INITRD') == 1,
894 install_dir : rootlibexecdir)
895
896@@ -3309,7 +3310,7 @@ executable(
897 'src/cgroups-agent/cgroups-agent.c',
898 include_directories : includes,
899 link_with : [libshared],
900- install_rpath : rootlibexecdir,
901+ install_rpath : rootpkglibdir,
902 install : true,
903 install_dir : rootlibexecdir)
904
905@@ -3318,7 +3319,7 @@ systemd_id128 = executable(
906 'src/id128/id128.c',
907 include_directories : includes,
908 link_with : [libshared],
909- install_rpath : rootlibexecdir,
910+ install_rpath : rootpkglibdir,
911 install : true)
912 public_programs += systemd_id128
913
914@@ -3335,7 +3336,7 @@ public_programs += executable(
915 'src/path/path.c',
916 include_directories : includes,
917 link_with : [libshared],
918- install_rpath : rootlibexecdir,
919+ install_rpath : rootpkglibdir,
920 install : true)
921
922 public_programs += executable(
923@@ -3343,7 +3344,7 @@ public_programs += executable(
924 'src/ask-password/ask-password.c',
925 include_directories : includes,
926 link_with : [libshared],
927- install_rpath : rootlibexecdir,
928+ install_rpath : rootpkglibdir,
929 install : true,
930 install_dir : rootbindir)
931
932@@ -3352,7 +3353,7 @@ executable(
933 'src/reply-password/reply-password.c',
934 include_directories : includes,
935 link_with : [libshared],
936- install_rpath : rootlibexecdir,
937+ install_rpath : rootpkglibdir,
938 install : true,
939 install_dir : rootlibexecdir)
940
941@@ -3361,7 +3362,7 @@ public_programs += executable(
942 'src/tty-ask-password-agent/tty-ask-password-agent.c',
943 include_directories : includes,
944 link_with : [libshared],
945- install_rpath : rootlibexecdir,
946+ install_rpath : rootpkglibdir,
947 install : true,
948 install_dir : rootbindir)
949
950@@ -3370,7 +3371,7 @@ public_programs += executable(
951 'src/cgls/cgls.c',
952 include_directories : includes,
953 link_with : [libshared],
954- install_rpath : rootlibexecdir,
955+ install_rpath : rootpkglibdir,
956 install : true)
957
958 public_programs += executable(
959@@ -3378,7 +3379,7 @@ public_programs += executable(
960 'src/cgtop/cgtop.c',
961 include_directories : includes,
962 link_with : [libshared],
963- install_rpath : rootlibexecdir,
964+ install_rpath : rootpkglibdir,
965 install : true)
966
967 executable(
968@@ -3386,7 +3387,7 @@ executable(
969 'src/initctl/initctl.c',
970 include_directories : includes,
971 link_with : [libshared],
972- install_rpath : rootlibexecdir,
973+ install_rpath : rootpkglibdir,
974 install : (conf.get('HAVE_SYSV_COMPAT') == 1),
975 install_dir : rootlibexecdir)
976
977@@ -3396,7 +3397,7 @@ public_programs += executable(
978 include_directories : includes,
979 link_with : [libshared],
980 dependencies: [libmount],
981- install_rpath : rootlibexecdir,
982+ install_rpath : rootpkglibdir,
983 install : true)
984
985 meson.add_install_script(meson_make_symlink,
986@@ -3407,7 +3408,7 @@ public_programs += executable(
987 'src/run/run.c',
988 include_directories : includes,
989 link_with : [libshared],
990- install_rpath : rootlibexecdir,
991+ install_rpath : rootpkglibdir,
992 install : true)
993
994 public_programs += executable(
995@@ -3416,7 +3417,7 @@ public_programs += executable(
996 include_directories : includes,
997 link_with : [libshared],
998 dependencies : [versiondep],
999- install_rpath : rootlibexecdir,
1000+ install_rpath : rootpkglibdir,
1001 install : true)
1002
1003 public_programs += executable(
1004@@ -3425,7 +3426,7 @@ public_programs += executable(
1005 include_directories : includes,
1006 link_with : [libshared],
1007 dependencies : [versiondep],
1008- install_rpath : rootlibexecdir,
1009+ install_rpath : rootpkglibdir,
1010 install : true)
1011
1012 if enable_sysusers
1013@@ -3434,7 +3435,7 @@ if enable_sysusers
1014 'src/sysusers/sysusers.c',
1015 include_directories : includes,
1016 link_with : [libshared],
1017- install_rpath : rootlibexecdir,
1018+ install_rpath : rootpkglibdir,
1019 install : true,
1020 install_dir : rootbindir)
1021 public_programs += exe
1022@@ -3476,7 +3477,7 @@ if conf.get('ENABLE_TMPFILES') == 1
1023 include_directories : includes,
1024 link_with : [libshared],
1025 dependencies : [libacl],
1026- install_rpath : rootlibexecdir,
1027+ install_rpath : rootpkglibdir,
1028 install : true,
1029 install_dir : rootbindir)
1030 public_programs += exe
1031@@ -3538,7 +3539,7 @@ if conf.get('ENABLE_QUOTACHECK') == 1
1032 'src/quotacheck/quotacheck.c',
1033 include_directories : includes,
1034 link_with : [libshared],
1035- install_rpath : rootlibexecdir,
1036+ install_rpath : rootpkglibdir,
1037 install : true,
1038 install_dir : rootlibexecdir)
1039 endif
1040@@ -3549,7 +3550,7 @@ public_programs += executable(
1041 include_directories : includes,
1042 link_with : [libshared],
1043 dependencies : [threads],
1044- install_rpath : rootlibexecdir,
1045+ install_rpath : rootpkglibdir,
1046 install : true,
1047 install_dir : rootlibexecdir)
1048
1049@@ -3578,7 +3579,7 @@ if conf.get('ENABLE_REPART') == 1
1050 dependencies : [threads,
1051 libblkid,
1052 libfdisk],
1053- install_rpath : rootlibexecdir,
1054+ install_rpath : rootpkglibdir,
1055 install : true,
1056 install_dir : rootbindir)
1057 public_programs += exe
1058@@ -3596,7 +3597,7 @@ executable(
1059 include_directories : includes,
1060 link_with : [libshared],
1061 dependencies : [libmount],
1062- install_rpath : rootlibexecdir,
1063+ install_rpath : rootpkglibdir,
1064 install : true,
1065 install_dir : rootlibexecdir)
1066
1067@@ -3605,7 +3606,7 @@ executable(
1068 'src/update-done/update-done.c',
1069 include_directories : includes,
1070 link_with : [libshared],
1071- install_rpath : rootlibexecdir,
1072+ install_rpath : rootpkglibdir,
1073 install : true,
1074 install_dir : rootlibexecdir)
1075
1076@@ -3615,7 +3616,7 @@ executable(
1077 include_directories : includes,
1078 link_with : [libshared],
1079 dependencies : [libaudit],
1080- install_rpath : rootlibexecdir,
1081+ install_rpath : rootpkglibdir,
1082 install : (conf.get('ENABLE_UTMP') == 1),
1083 install_dir : rootlibexecdir)
1084
1085@@ -3626,7 +3627,7 @@ if conf.get('HAVE_KMOD') == 1
1086 include_directories : includes,
1087 link_with : [libshared],
1088 dependencies : [libkmod],
1089- install_rpath : rootlibexecdir,
1090+ install_rpath : rootpkglibdir,
1091 install : true,
1092 install_dir : rootlibexecdir)
1093
1094@@ -3646,7 +3647,7 @@ public_programs += executable(
1095 libshared],
1096 dependencies : [libblkid,
1097 libseccomp],
1098- install_rpath : rootlibexecdir,
1099+ install_rpath : rootpkglibdir,
1100 install : true)
1101
1102 if conf.get('ENABLE_NETWORKD') == 1
1103@@ -3658,7 +3659,7 @@ if conf.get('ENABLE_NETWORKD') == 1
1104 libsystemd_network,
1105 networkd_link_with],
1106 dependencies : [threads],
1107- install_rpath : rootlibexecdir,
1108+ install_rpath : rootpkglibdir,
1109 install : true,
1110 install_dir : rootlibexecdir)
1111
1112@@ -3667,7 +3668,7 @@ if conf.get('ENABLE_NETWORKD') == 1
1113 systemd_networkd_wait_online_sources,
1114 include_directories : includes,
1115 link_with : [networkd_link_with],
1116- install_rpath : rootlibexecdir,
1117+ install_rpath : rootpkglibdir,
1118 install : true,
1119 install_dir : rootlibexecdir)
1120
1121@@ -3677,7 +3678,7 @@ if conf.get('ENABLE_NETWORKD') == 1
1122 include_directories : libsystemd_network_includes,
1123 link_with : [libsystemd_network,
1124 networkd_link_with],
1125- install_rpath : rootlibexecdir,
1126+ install_rpath : rootpkglibdir,
1127 install : true,
1128 install_dir : rootbindir)
1129 endif
1130@@ -3687,7 +3688,7 @@ exe = executable(
1131 network_generator_sources,
1132 include_directories : includes,
1133 link_with : [networkd_link_with],
1134- install_rpath : rootlibexecdir,
1135+ install_rpath : rootpkglibdir,
1136 install : true,
1137 install_dir : rootlibexecdir)
1138
1139@@ -3704,7 +3705,7 @@ executable(
1140 'src/sulogin-shell/sulogin-shell.c',
1141 include_directories : includes,
1142 link_with : [libshared],
1143- install_rpath : rootlibexecdir,
1144+ install_rpath : rootpkglibdir,
1145 install : true,
1146 install_dir : rootlibexecdir)
1147
1148@@ -3767,7 +3768,7 @@ foreach tuple : tests
1149 dependencies],
1150 c_args : defs,
1151 build_by_default : want_tests != 'false',
1152- install_rpath : rootlibexecdir,
1153+ install_rpath : rootpkglibdir,
1154 install : install_tests,
1155 install_dir : testsdir / type,
1156 link_depends : runtest_env)
1157diff --git a/src/core/meson.build b/src/core/meson.build
1158index 9efa542..162090a 100644
1159--- a/src/core/meson.build
1160+++ b/src/core/meson.build
1161@@ -202,7 +202,7 @@ libcore = shared_library(
1162 libblkid,
1163 libacl],
1164 install : true,
1165- install_dir : rootlibexecdir)
1166+ install_dir : rootpkglibdir)
1167
1168 core_includes = [includes, include_directories('.')]
1169
1170diff --git a/src/nspawn/nspawn-util.c b/src/nspawn/nspawn-util.c
1171index 402554f..830ac39 100644
1172--- a/src/nspawn/nspawn-util.c
1173+++ b/src/nspawn/nspawn-util.c
1174@@ -20,9 +20,12 @@ int systemd_installation_has_version(const char *root, const char *minimal_versi
1175 /* /lib works for systems without usr-merge, and for systems with a sane
1176 * usr-merge, where /lib is a symlink to /usr/lib. /usr/lib is necessary
1177 * for Gentoo which does a merge without making /lib a symlink.
1178+ * Also support multiarch paths von Debian/Ubuntu; *-linux-* is a small
1179+ * optimization based on the naming scheme of existing multiarch tuples.
1180 */
1181 "/lib/systemd/libsystemd-shared-*.so",
1182 "/lib64/systemd/libsystemd-shared-*.so",
1183+ "/usr/lib/*-linux-*/systemd/libsystemd-shared-*.so",
1184 "/usr/lib/systemd/libsystemd-shared-*.so",
1185 "/usr/lib64/systemd/libsystemd-shared-*.so") {
1186
1187@@ -47,7 +50,7 @@ int systemd_installation_has_version(const char *root, const char *minimal_versi
1188 /* This is most likely to run only once, hence let's not optimize anything. */
1189 char *t, *t2;
1190
1191- t = startswith(*name, path);
1192+ t = startswith(basename(*name), "libsystemd-shared-");
1193 if (!t)
1194 continue;
1195
1196diff --git a/src/shared/meson.build b/src/shared/meson.build
1197index 1d4e4a0..363693d 100644
1198--- a/src/shared/meson.build
1199+++ b/src/shared/meson.build
1200@@ -483,4 +483,4 @@ libshared = shared_library(
1201 libsystemd_static],
1202 dependencies : libshared_deps,
1203 install : true,
1204- install_dir : rootlibexecdir)
1205+ install_dir : rootpkglibdir)
1206diff --git a/src/udev/meson.build b/src/udev/meson.build
1207index 79964a7..c6711be 100644
1208--- a/src/udev/meson.build
1209+++ b/src/udev/meson.build
1210@@ -100,7 +100,7 @@ link_config_gperf_c = custom_target(
1211
1212 if get_option('link-udev-shared')
1213 udev_link_with = [libshared]
1214- udev_rpath = rootlibexecdir
1215+ udev_rpath = rootpkglibdir
1216 else
1217 udev_link_with = [libshared_static,
1218 libsystemd_static]
diff --git a/debian/patches/series b/debian/patches/series
index 4b00a36..7c6674d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,5 +1,7 @@
1Do-not-require-a-valid-version-when-parsing-sd-boot-loade.patch1Do-not-require-a-valid-version-when-parsing-sd-boot-loade.patch
2sha256-fix-compilation-on-efi-ia32.patch2Move-homectl-and-userdbctl-to-bindir.patch
3meson-install-libsystemd-shared-into-rootpkglibdir.patch
4shellcheck-clean-kernel-install-again.patch
3debian/Use-Debian-specific-config-files.patch5debian/Use-Debian-specific-config-files.patch
4debian/Bring-tmpfiles.d-tmp.conf-in-line-with-Debian-defaul.patch6debian/Bring-tmpfiles.d-tmp.conf-in-line-with-Debian-defaul.patch
5debian/Make-run-lock-tmpfs-an-API-fs.patch7debian/Make-run-lock-tmpfs-an-API-fs.patch
@@ -41,13 +43,10 @@ lp1950794-Revert-sd-dhcp-do-not-use-detect_container-to-guess-.patch
410001-Revert-tests-add-test-case-for-UMask-BindPaths-combi.patch430001-Revert-tests-add-test-case-for-UMask-BindPaths-combi.patch
42deny-list-TEST-55-OOMD-on-ppc64el.patch44deny-list-TEST-55-OOMD-on-ppc64el.patch
43debian/UBUNTU-Don-t-override-Ubuntu-s-default-sysctl-values-LP-1962038.patch45debian/UBUNTU-Don-t-override-Ubuntu-s-default-sysctl-values-LP-1962038.patch
44lp1979215-boot-efi-missing-.note.GNU-stack-section-implies-executab.patch
45lp1979236-boot-efi-set-no-warn-rwx-segments-on-arm.patch
46lp1978079-pstore-Run-after-modules-are-loaded.patch46lp1978079-pstore-Run-after-modules-are-loaded.patch
47sd-hwdb-add-sd_hwdb_new_from_path.patch47sd-hwdb-add-sd_hwdb_new_from_path.patch
48hwdb-implement-root-option-for-systemd-hwdb-query.patch48hwdb-implement-root-option-for-systemd-hwdb-query.patch
49test-increase-QEMU_MEM-for-some-tests.patch49test-increase-QEMU_MEM-for-some-tests.patch
50test-copy-libgcc_s.so.1-to-TPM2-test-image-on-Debian-like.patch50test-copy-libgcc_s.so.1-to-TPM2-test-image-on-Debian-like.patch
51units-remove-the-restart-limit-on-the-modprobe-.service.patch
52lp1981042-core-firstboot-workaround-timezone-issues-caused-by-Ubunt.patch51lp1981042-core-firstboot-workaround-timezone-issues-caused-by-Ubunt.patch
53glibc-Remove-include-linux-fs.h-to-resolve-fsconfig_comma.patch52test-denylist-TEST-29-PORTABLE-again.patch
diff --git a/debian/patches/sha256-fix-compilation-on-efi-ia32.patch b/debian/patches/sha256-fix-compilation-on-efi-ia32.patch
54deleted file mode 10064453deleted file mode 100644
index 9d0494a..0000000
--- a/debian/patches/sha256-fix-compilation-on-efi-ia32.patch
+++ /dev/null
@@ -1,39 +0,0 @@
1From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
2Date: Fri, 3 Jun 2022 09:32:02 +0200
3Subject: sha256: fix compilation on efi-ia32
4MIME-Version: 1.0
5Content-Type: text/plain; charset="utf-8"
6Content-Transfer-Encoding: 8bit
7
8/usr/bin/gcc -c ../src/fundamental/sha256.c -o src/boot/efi/sha256.c.o -Wno-format-signedness -Wno-missing-field-initializers -Wno-unused-parameter -Wdate-time -Wendif-labels -Werror=format=2 -Werror=implicit-function-declaration -Werror=incompatible-pointer-types -Werror=int-conversion -Werror=overflow -Werror=override-init -Werror=return-type -Werror=shift-count-overflow -Werror=shift-overflow=2 -Werror=undef -Wfloat-equal -Wimplicit-fallthrough=5 -Winit-self -Wlogical-op -Wmissing-include-dirs -Wmissing-noreturn -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-aliasing=2 -Wstrict-prototypes -Wsuggest-attribute=noreturn -Wunused-function -Wwrite-strings -Wno-unused-result -fno-stack-protector -fno-strict-aliasing -fpic -fwide-exec-charset=UCS2 -Wall -Wextra -Wsign-compare -nostdlib -std=gnu99 -ffreestanding -fshort-wchar -fvisibility=hidden -isystem /usr/include/efi -isystem /usr/include/efi/ia32 -I /builddir/build/BUILD/systemd-stable-250.7/src/fundamental -DSD_BOOT -DGNU_EFI_USE_MS_ABI -include src/boot/efi/efi_config.h -include version.h -mno-sse -mno-mmx -flto -O2 -flto=auto
9../src/fundamental/sha256.c: In function ‘sha256_finish_ctx’:
10../src/fundamental/sha256.c:61:25: error: ‘false’ undeclared (first use in this function)
11 61 | # define UNALIGNED_P(p) false
12 | ^~~~~
13../src/fundamental/sha256.c:136:21: note: in expansion of macro ‘UNALIGNED_P’
14 136 | if (UNALIGNED_P(resbuf))
15 | ^~~~~~~~~~~
16../src/fundamental/sha256.c:32:1: note: ‘false’ is defined in header ‘<stdbool.h>’; did you forget to ‘#include <stdbool.h>’?
17 31 | #include "sha256.h"
18 +++ |+#include <stdbool.h>
19 32 |
20...
21
22(cherry picked from commit 38c87ca2ab96d085158485ecfc46c7cb6af0f166)
23---
24 src/fundamental/sha256.c | 2 +-
25 1 file changed, 1 insertion(+), 1 deletion(-)
26
27diff --git a/src/fundamental/sha256.c b/src/fundamental/sha256.c
28index cd16aec..58b1a80 100644
29--- a/src/fundamental/sha256.c
30+++ b/src/fundamental/sha256.c
31@@ -58,7 +58,7 @@
32 # define UNALIGNED_P(p) (((size_t) p) % sizeof(uint32_t) != 0)
33 # endif
34 #else
35-# define UNALIGNED_P(p) false
36+# define UNALIGNED_P(p) sd_false
37 #endif
38
39 /* This array contains the bytes used to pad the buffer to the next
diff --git a/debian/patches/shellcheck-clean-kernel-install-again.patch b/debian/patches/shellcheck-clean-kernel-install-again.patch
40new file mode 1006440new file mode 100644
index 0000000..ff3d498
--- /dev/null
+++ b/debian/patches/shellcheck-clean-kernel-install-again.patch
@@ -0,0 +1,46 @@
1From: =?utf-8?b?0L3QsNCx?= <nabijaczleweli@nabijaczleweli.xyz>
2Date: Sun, 22 May 2022 22:09:23 +0200
3Subject: shellcheck-clean kernel-install again
4
5(cherry picked from commit 35339eb88c72f30204589101765a0bca5424e253)
6---
7 src/kernel-install/kernel-install.in | 5 ++++-
8 1 file changed, 4 insertions(+), 1 deletion(-)
9
10diff --git a/src/kernel-install/kernel-install.in b/src/kernel-install/kernel-install.in
11index cf1b81b..c6965ee 100755
12--- a/src/kernel-install/kernel-install.in
13+++ b/src/kernel-install/kernel-install.in
14@@ -115,6 +115,7 @@ fi
15
16 if [ -n "$install_conf" ]; then
17 [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "Reading $install_conf…"
18+ # shellcheck source=/dev/null
19 . "$install_conf"
20 # FIXME: This may override configuration in environment variables, e.g. $BOOT_ROOT.
21 fi
22@@ -133,6 +134,7 @@ fi
23 # generated one. If the user configured an explicit machine ID to use in
24 # /etc/machine-info to use for our purpose, we'll use that instead (for
25 # compatibility).
26+# shellcheck source=/dev/null
27 if [ -z "$MACHINE_ID" ] && [ -r /etc/machine-info ] && . /etc/machine-info && MACHINE_ID="$KERNEL_INSTALL_MACHINE_ID"; then
28 [ -n "$MACHINE_ID" ] && [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \
29 echo "machine-id $MACHINE_ID acquired from /etc/machine-info"
30@@ -160,6 +162,7 @@ if [ -z "$ENTRY_TOKEN" ]; then
31 # the IMAGE_ID= and ID= fields from /etc/os-release and finally the fixed
32 # string "Default"
33 ENTRY_TOKEN_SEARCH="$MACHINE_ID"
34+ # shellcheck source=/dev/null
35 [ -r /etc/os-release ] && . /etc/os-release
36 [ -n "$IMAGE_ID" ] && ENTRY_TOKEN_SEARCH="$ENTRY_TOKEN_SEARCH $IMAGE_ID"
37 [ -n "$ID" ] && ENTRY_TOKEN_SEARCH="$ENTRY_TOKEN_SEARCH $ID"
38@@ -294,7 +297,7 @@ PLUGINS="$(
39 IFS="
40 "
41
42-[ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo -e "Plugin files:\n$PLUGINS"
43+[ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && printf '%s\n' "Plugin files:" "$PLUGINS"
44
45 case "$COMMAND" in
46 add)
diff --git a/debian/patches/test-denylist-TEST-29-PORTABLE-again.patch b/debian/patches/test-denylist-TEST-29-PORTABLE-again.patch
0new file mode 10064447new file mode 100644
index 0000000..5a97810
--- /dev/null
+++ b/debian/patches/test-denylist-TEST-29-PORTABLE-again.patch
@@ -0,0 +1,18 @@
1From: Nick Rosbrook <nick.rosbrook@canonical.com>
2Date: Tue, 16 Aug 2022 17:38:36 -0400
3Subject: test: denylist TEST-29-PORTABLE again
4
5Bug: https://github.com/systemd/systemd/issues/24147
6
7---
8 test/TEST-29-PORTABLE/deny-list-upstream-ci | 1 +
9 1 file changed, 1 insertion(+)
10 create mode 100644 test/TEST-29-PORTABLE/deny-list-upstream-ci
11
12diff --git a/test/TEST-29-PORTABLE/deny-list-upstream-ci b/test/TEST-29-PORTABLE/deny-list-upstream-ci
13new file mode 100644
14index 0000000..89e1567
15--- /dev/null
16+++ b/test/TEST-29-PORTABLE/deny-list-upstream-ci
17@@ -0,0 +1 @@
18+# Flaky test tracked in https://github.com/systemd/systemd/issues/24147
diff --git a/debian/patches/units-remove-the-restart-limit-on-the-modprobe-.service.patch b/debian/patches/units-remove-the-restart-limit-on-the-modprobe-.service.patch
0deleted file mode 10064419deleted file mode 100644
index f8668f9..0000000
--- a/debian/patches/units-remove-the-restart-limit-on-the-modprobe-.service.patch
+++ /dev/null
@@ -1,33 +0,0 @@
1From: Alban Bedel <alban.bedel@aerq.com>
2Date: Wed, 15 Jun 2022 13:12:46 +0200
3Subject: units: remove the restart limit on the modprobe@.service
4
5They are various cases where the same module might be repeatedly
6loaded in a short time frame, for example if a service depending on a
7module keep restarting, or if many instances of such service get
8started at the same time. If this happend the modprobe@.service
9instance will be marked as failed because it hit the restart limit.
10
11Overall it doesn't seems to make much sense to have a restart limit on
12the modprobe service so just disable it.
13
14Fixes: #23742
15---
16Origin: upstream, https://github.com/systemd/systemd/commit/9625350e5381a68c1179ae4581e7586c206663e1
17Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1982462
18---
19 units/modprobe@.service | 1 +
20 1 file changed, 1 insertion(+)
21
22diff --git a/units/modprobe@.service b/units/modprobe@.service
23index cf8baf6..85a2c08 100644
24--- a/units/modprobe@.service
25+++ b/units/modprobe@.service
26@@ -13,6 +13,7 @@ DefaultDependencies=no
27 Before=sysinit.target
28 Documentation=man:modprobe(8)
29 ConditionCapability=CAP_SYS_MODULE
30+StartLimitIntervalSec=0
31
32 [Service]
33 Type=oneshot
diff --git a/debian/rules b/debian/rules
index 957f0c3..e47607a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -75,8 +75,6 @@ CONFFLAGS = \
75 -Dsysupdate=false \75 -Dsysupdate=false \
76 -Dxkbcommon=false \76 -Dxkbcommon=false \
77 -Dwheel-group=false \77 -Dwheel-group=false \
78 -Duserdb=false \
79 -Dhomed=false \
80 -Dpwquality=false \78 -Dpwquality=false \
81 -Dp11kit=false \79 -Dp11kit=false \
82 -Doomd=true \80 -Doomd=true \
@@ -103,7 +101,7 @@ CONFFLAGS = \
103 -Dinstall-tests=$(if $(filter noinsttest,$(DEB_BUILD_PROFILES)),false,true) \101 -Dinstall-tests=$(if $(filter noinsttest,$(DEB_BUILD_PROFILES)),false,true) \
104 -Dlibcryptsetup-plugins=false \102 -Dlibcryptsetup-plugins=false \
105 -Defi=true \103 -Defi=true \
106 -Dman=true \104 -Dman=$(if $(filter nodoc,$(DEB_BUILD_PROFILES)),false,true) \
107 -Dtranslations=true \105 -Dtranslations=true \
108 -Dnss-myhostname=true \106 -Dnss-myhostname=true \
109 -Dnss-mymachines=true \107 -Dnss-mymachines=true \
@@ -129,6 +127,8 @@ CONFFLAGS += \
129 -Ddns-over-tls=openssl \127 -Ddns-over-tls=openssl \
130 -Dlibfido2=true \128 -Dlibfido2=true \
131 -Dtpm2=$(if $(filter i386,$(DEB_HOST_ARCH)),false,true) \129 -Dtpm2=$(if $(filter i386,$(DEB_HOST_ARCH)),false,true) \
130 -Dhomed=true \
131 -Duserdb=true \
132 -Dpcre2=true132 -Dpcre2=true
133else133else
134CONFFLAGS += \134CONFFLAGS += \
@@ -145,41 +145,46 @@ CONFFLAGS += \
145 -Dopenssl=false \145 -Dopenssl=false \
146 -Dlibfido2=false \146 -Dlibfido2=false \
147 -Dtpm2=false \147 -Dtpm2=false \
148 -Dhomed=false \
149 -Duserdb=false \
148 -Dpcre2=false150 -Dpcre2=false
149endif151endif
150152
151override_dh_auto_configure:153override_dh_auto_configure:
152 dh_auto_configure --builddirectory=build-deb \154 dh_auto_configure \
153 -- $(CONFFLAGS) $(CONFFLAGS_DISTRO) $(CONFFLAGS_UPSTREAM)155 -- $(CONFFLAGS) $(CONFFLAGS_DISTRO) $(CONFFLAGS_UPSTREAM)
154156
155override_dh_auto_build:157execute_before_dh_auto_build:
156 # blhc false positives: C++ fuzz test program, cc -E flags listing, PE-COFF EFI binaries158 # blhc false positives: C++ fuzz test program, cc -E flags listing, PE-COFF EFI binaries
157 @echo 'blhc: ignore-line-regexp: .* -o test-bus-vtable-cc.*'159 @echo 'blhc: ignore-line-regexp: .* -o test-bus-vtable-cc.*'
158 @echo 'blhc: ignore-line-regexp: .*cc -E.*'160 @echo 'blhc: ignore-line-regexp: .*cc -E.*'
159 @echo 'blhc: ignore-line-regexp: .* -o src/boot/efi.*'161 @echo 'blhc: ignore-line-regexp: .* -o src/boot/efi.*'
160 dh_auto_build --builddirectory=build-deb162
163execute_after_dh_auto_build:
161 # generate POT file for translators164 # generate POT file for translators
162 ninja -C build-deb/ systemd-pot165 ninja -C obj-$(DEB_HOST_GNU_TYPE) systemd-pot
163166
164override_dh_auto_install:167execute_after_dh_auto_install:
165 dh_auto_install --builddirectory=build-deb
166 # fix paths in manpages; manually check the remaining /usr occurrences168 # fix paths in manpages; manually check the remaining /usr occurrences
167 # occasionally, with filtering out paths which are known to be in /usr:169 # occasionally, with filtering out paths which are known to be in /usr:
168 # grep -r /usr debian/tmp/usr/share/man/|egrep -v '/usr/local|os.*release|factory|zoneinfo|tmpfiles|kernel|foo|machines|sysctl|dbus|include|binfmt'170 # grep -r /usr debian/tmp/usr/share/man/|egrep -v '/usr/local|os.*release|factory|zoneinfo|tmpfiles|kernel|foo|machines|sysctl|dbus|include|binfmt'
169 find debian/tmp/usr/share/man/ -type f | xargs sed -ri 's_/usr(/lib/systemd/system|/lib/systemd/network|/lib/udev|/lib[^/]|/lib/[^a-z])_\1_g'171 if test -d debian/tmp/usr/share/man; then \
172 find debian/tmp/usr/share/man/ -type f | xargs sed -ri 's_/usr(/lib/systemd/system|/lib/systemd/network|/lib/udev|/lib[^/]|/lib/[^a-z])_\1_g'; \
173 fi
170174
171override_dh_auto_clean:175execute_before_dh_auto_clean:
172ifneq (, $(TEST_UPSTREAM))176ifneq (, $(TEST_UPSTREAM))
173 debian/extra/checkout-upstream177 debian/extra/checkout-upstream
174endif178endif
175 dh_auto_clean --builddirectory=build-deb179
180execute_after_dh_auto_clean:
176 rm -f debian/shlibs.local181 rm -f debian/shlibs.local
177 # remove Python byte code files182 # remove Python byte code files
178 rm -rf tools/__pycache__/183 rm -rf tools/__pycache__/
179 rm -rf tools/chromiumos/__pycache__/184 rm -rf tools/chromiumos/__pycache__/
180 rm -f po/systemd.pot185 rm -f po/systemd.pot
181186
182override_dh_install:187execute_before_dh_install:
183 # remove unnecessary / unused files188 # remove unnecessary / unused files
184 rm -rf debian/tmp/usr/share/doc/systemd/LICENSES/189 rm -rf debian/tmp/usr/share/doc/systemd/LICENSES/
185 rm -f debian/tmp/usr/share/doc/systemd/LICENSE.*190 rm -f debian/tmp/usr/share/doc/systemd/LICENSE.*
@@ -202,21 +207,14 @@ override_dh_install:
202 rm -rf debian/tmp/usr/share/factory/207 rm -rf debian/tmp/usr/share/factory/
203 # replace upstream sysusers.d/basic.conf with proper users for Debian208 # replace upstream sysusers.d/basic.conf with proper users for Debian
204 debian/extra/make-sysusers-basic > debian/tmp/usr/lib/sysusers.d/basic.conf209 debian/extra/make-sysusers-basic > debian/tmp/usr/lib/sysusers.d/basic.conf
205 # remove resolvconf compat symlink
206 rm -f debian/tmp/sbin/resolvconf
207 # remove obsolete compat symlink210 # remove obsolete compat symlink
208 rm -f debian/tmp/usr/bin/systemd-resolve211 rm -f debian/tmp/usr/bin/systemd-resolve
209 # do not create a potentially broken /etc/resolv.conf symlink
210 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1007018
211 rm -f debian/tmp/usr/lib/tmpfiles.d/systemd-resolve.conf
212
213 dh_install
214212
215 # install standalone binaries and manpages213execute_after_dh_install:
214 # install standalone binaries
216 for pkg in sysusers tmpfiles; do \215 for pkg in sysusers tmpfiles; do \
217 mkdir -p debian/systemd-standalone-$$pkg/bin debian/systemd-standalone-$$pkg/usr/share/man/man8; \216 mkdir -p debian/systemd-standalone-$$pkg/bin; \
218 mv debian/systemd/bin/systemd-$$pkg.standalone debian/systemd-standalone-$$pkg/bin/systemd-$$pkg; \217 mv debian/systemd/bin/systemd-$$pkg.standalone debian/systemd-standalone-$$pkg/bin/systemd-$$pkg; \
219 cp debian/tmp/usr/share/man/man8/systemd-$$pkg.8 debian/systemd-standalone-$$pkg/usr/share/man/man8/; \
220 done218 done
221219
222 # we don't want /tmp to be a tmpfs by default220 # we don't want /tmp to be a tmpfs by default
@@ -226,7 +224,7 @@ override_dh_install:
226224
227 # files shipped by cryptsetup225 # files shipped by cryptsetup
228ifeq (, $(filter stage1, $(DEB_BUILD_PROFILES)))226ifeq (, $(filter stage1, $(DEB_BUILD_PROFILES)))
229 rm debian/systemd/usr/share/man/man5/crypttab.5227 rm -f debian/tmp/usr/share/man/man5/crypttab.5
230endif228endif
231229
232 # files shipped by systemd230 # files shipped by systemd
@@ -235,14 +233,6 @@ endif
235 rm debian/udev/lib/udev/rules.d/71-seat.rules233 rm debian/udev/lib/udev/rules.d/71-seat.rules
236 rm debian/udev/lib/udev/rules.d/99-systemd.rules234 rm debian/udev/lib/udev/rules.d/99-systemd.rules
237235
238 # remove duplicate files shipped by systemd-*/udev
239 echo "Removing duplicate files in systemd package:"
240 set -e; for pkg in $(shell dh_listpackages -Nudev-udeb -Nlibudev1-udeb -Nsystemd -Nsystemd-standalone-sysusers -Nsystemd-standalone-tmpfiles); do \
241 echo "... from $$pkg..."; \
242 (cd debian/$$pkg; find -type f -o -type l) | (cd debian/systemd; xargs rm -f --verbose); \
243 (cd debian/$$pkg; find -mindepth 1 -type d | sort -r) | (cd debian/systemd; xargs rmdir --ignore-fail-on-non-empty --verbose || true); \
244 done
245
246 # Ubuntu specific files236 # Ubuntu specific files
247ifeq ($(DEB_VENDOR),Ubuntu)237ifeq ($(DEB_VENDOR),Ubuntu)
248 install -D --mode=644 debian/extra/udev.py debian/udev/usr/share/apport/package-hooks/udev.py238 install -D --mode=644 debian/extra/udev.py debian/udev/usr/share/apport/package-hooks/udev.py
@@ -254,8 +244,30 @@ endif
254 # Remove unneeded file that produces errors in debugedit (LP: #1950445)244 # Remove unneeded file that produces errors in debugedit (LP: #1950445)
255ifeq ($(DEB_HOST_ARCH),i386)245ifeq ($(DEB_HOST_ARCH),i386)
256 rm -f debian/systemd/usr/lib/systemd/boot/efi/linuxia32.elf.stub246 rm -f debian/systemd/usr/lib/systemd/boot/efi/linuxia32.elf.stub
247 rm -f debian/systemd-boot-efi/usr/lib/systemd/boot/efi/linuxia32.elf.stub
257endif248endif
258249
250execute_after_dh_installman:
251 # remove duplicate files shipped by systemd-*/udev
252 # run after dh_installman, which runs after dh_install, to include manpages
253 echo "Removing duplicate files in systemd package:"
254 set -e; for pkg in $(shell dh_listpackages -Nudev-udeb -Nlibudev1-udeb -Nsystemd -Nsystemd-standalone-sysusers -Nsystemd-standalone-tmpfiles); do \
255 echo "... from $$pkg..."; \
256 (cd debian/$$pkg; find -type f -o -type l) | (cd debian/systemd; xargs rm -f --verbose); \
257 (cd debian/$$pkg; find -mindepth 1 -type d | sort -r) | (cd debian/systemd; xargs rmdir --ignore-fail-on-non-empty --verbose || true); \
258 done
259
260 # dh_installman is affected by false positives and mangles manpages named as lib*.so.*
261 # fixed in debhelper 13.7.2 by https://salsa.debian.org/debian/debhelper/-/merge_requests/69
262 for pkg in libnss-myhostname libnss-mymachines libnss-resolve libnss-systemd; do \
263 rm -rf debian/$$pkg/usr/share/man/so; \
264 done
265 # work around some more dh_installman issues
266 # see https://salsa.debian.org/debian/debhelper/-/merge_requests/69#note_316102
267 for pkg in libnss-myhostname libnss-mymachines libnss-resolve libnss-systemd; do \
268 rm -rf debian/$$pkg/usr/share/man/man2/; \
269 done
270
259override_dh_missing:271override_dh_missing:
260 dh_missing $(DH_MISSING)272 dh_missing $(DH_MISSING)
261273
@@ -267,31 +279,35 @@ override_dh_installsystemd:
267 dh_installsystemd -psystemd-timesyncd279 dh_installsystemd -psystemd-timesyncd
268 dh_installsystemd -psystemd-oomd systemd-oomd.service280 dh_installsystemd -psystemd-oomd systemd-oomd.service
269 dh_installsystemd -psystemd-oomd --no-stop-on-upgrade systemd-oomd.socket281 dh_installsystemd -psystemd-oomd --no-stop-on-upgrade systemd-oomd.socket
282 dh_installsystemd -psystemd-userdbd --no-stop-on-upgrade systemd-userdbd.socket
283 dh_installsystemd -psystemd-homed --no-also systemd-homed.service systemd-homed-activate.service
284 dh_installsystemd -psystemd-resolved
270285
271override_dh_installsystemduser:286override_dh_installsystemduser:
272287
273PROJECT_VERSION ?= $(shell awk '/(PROJECT|PACKAGE)_VERSION/ {print $$3}' build-deb/config.h | tr -d \")288PROJECT_VERSION ?= $(shell awk '/(PROJECT|PACKAGE)_VERSION/ {print $$3}' obj-$(DEB_HOST_GNU_TYPE)/config.h | tr -d \")
274289
275# The SysV compat tools (which are symlinks to systemctl) are290# The SysV compat tools (which are symlinks to systemctl) are
276# quasi-essential, so add their dependencies to Pre-Depends291# quasi-essential, so add their dependencies to Pre-Depends
277# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=753589292# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=753589
278override_dh_shlibdeps:293override_dh_shlibdeps:
279 dh_shlibdeps -psystemd -llib/systemd/ -- \294 dh_shlibdeps -psystemd -Llibsystemd-shared -- \
280 -dPre-Depends -edebian/systemd/bin/systemctl \295 -dPre-Depends -edebian/systemd/bin/systemctl \
281 -dDepends296 -dDepends
282 dh_shlibdeps --remaining-packages -Lsystemd297 dh_shlibdeps -plibsystemd-shared -lusr/lib/$(DEB_HOST_MULTIARCH)/systemd
298 dh_shlibdeps --remaining-packages -Llibsystemd-shared
283299
284override_dh_makeshlibs:300override_dh_makeshlibs:
285 sed 's/SHARED_LIB_VERSION/$(PROJECT_VERSION)/' debian/shlibs.local.in > debian/shlibs.local301 sed 's/SHARED_LIB_VERSION/$(PROJECT_VERSION)/' debian/shlibs.local.in > debian/shlibs.local
286 dh_makeshlibs -plibudev1 --add-udeb=libudev1-udeb -- -c$(GENSYMBOLS_LEVEL)302 dh_makeshlibs -plibudev1 --add-udeb=libudev1-udeb -- -c$(GENSYMBOLS_LEVEL)
287 dh_makeshlibs -psystemd -Xlibsystemd-shared -Xlibsystemd-core -- -c$(GENSYMBOLS_LEVEL)303 dh_makeshlibs -plibsystemd-shared -Xlibsystemd-shared -Xlibsystemd-core -- -c$(GENSYMBOLS_LEVEL)
288 dh_makeshlibs --remaining-packages -- -c$(GENSYMBOLS_LEVEL)304 dh_makeshlibs --remaining-packages -- -c$(GENSYMBOLS_LEVEL)
289305
290override_dh_auto_test:306override_dh_auto_test:
291ifeq (, $(filter nocheck, $(DEB_BUILD_OPTIONS)))307ifeq (, $(filter nocheck, $(DEB_BUILD_OPTIONS)))
292 echo "01234567890123456789012345678901" > build-deb/machine-id308 echo "01234567890123456789012345678901" > obj-$(DEB_HOST_GNU_TYPE)/machine-id
293 # some tests hang under fakeroot, so disable fakeroot309 # some tests hang under fakeroot, so disable fakeroot
294 env -u LD_PRELOAD SYSTEMD_MACHINE_ID_PATH=$(CURDIR)/build-deb/machine-id meson test -C build-deb --print-errorlogs $(TEST_TIMEOUT_MULTIPLIER)310 env -u LD_PRELOAD SYSTEMD_MACHINE_ID_PATH=$(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)/machine-id meson test -C obj-$(DEB_HOST_GNU_TYPE) --print-errorlogs $(TEST_TIMEOUT_MULTIPLIER)
295endif311endif
296312
297%:313%:
diff --git a/debian/shlibs.local.in b/debian/shlibs.local.in
index 3a5cc0d..085835d 100644
--- a/debian/shlibs.local.in
+++ b/debian/shlibs.local.in
@@ -1,4 +1,4 @@
1udeb: libudev 1 libudev1-udeb1udeb: libudev 1 libudev1-udeb
2libsystemd 0 libsystemd0 (= ${binary:Version})2libsystemd 0 libsystemd0 (= ${binary:Version})
3libsystemd-shared SHARED_LIB_VERSION systemd (= ${binary:Version})3libsystemd-shared SHARED_LIB_VERSION libsystemd-shared (= ${binary:Version})
4libsystemd-core SHARED_LIB_VERSION systemd (= ${binary:Version})4libsystemd-core SHARED_LIB_VERSION libsystemd-shared (= ${binary:Version})
diff --git a/debian/systemd-boot-efi.install b/debian/systemd-boot-efi.install
5new file mode 1006445new file mode 100644
index 0000000..1cb75d0
--- /dev/null
+++ b/debian/systemd-boot-efi.install
@@ -0,0 +1 @@
1usr/lib/systemd/boot/
diff --git a/debian/systemd-boot-efi.lintian-overrides b/debian/systemd-boot-efi.lintian-overrides
0new file mode 1006442new file mode 100644
index 0000000..79067b8
--- /dev/null
+++ b/debian/systemd-boot-efi.lintian-overrides
@@ -0,0 +1,6 @@
1# Not a shared library
2systemd-boot-efi: shared-library-lacks-prerequisites
3# PE-COFF EFI binaries, false positives
4systemd-boot-efi: executable-not-elf-or-script
5# These are EFI binaries, not libraries, they all ship in /usr/lib/systemd/boot
6systemd-boot-efi: arch-dependent-file-not-in-arch-specific-directory
diff --git a/debian/systemd-boot-efi.manpages b/debian/systemd-boot-efi.manpages
0new file mode 1006447new file mode 100644
index 0000000..4af7d86
--- /dev/null
+++ b/debian/systemd-boot-efi.manpages
@@ -0,0 +1 @@
1usr/share/man/man7/*.efi.stub.7
diff --git a/debian/systemd-boot.install b/debian/systemd-boot.install
0new file mode 1006442new file mode 100644
index 0000000..29cd23b
--- /dev/null
+++ b/debian/systemd-boot.install
@@ -0,0 +1,10 @@
1lib/systemd/systemd-bless-boot
2lib/systemd/system-generators/systemd-bless-boot-generator
3lib/systemd/system/sysinit.target.wants/systemd-boot-system-token.service
4lib/systemd/system/systemd-bless-boot.service
5lib/systemd/system/systemd-boot-system-token.service
6lib/systemd/system/systemd-boot-update.service
7usr/bin/bootctl
8usr/share/bash-completion/completions/bootctl
9../extra/initramfs etc/
10../extra/kernel etc/
diff --git a/debian/systemd-boot.lintian-overrides b/debian/systemd-boot.lintian-overrides
0new file mode 10064411new file mode 100644
index 0000000..9a3c32a
--- /dev/null
+++ b/debian/systemd-boot.lintian-overrides
@@ -0,0 +1,3 @@
1# Lintian is really bad at associating manpages
2systemd-boot: spare-manual-page
3systemd-boot: package-supports-alternative-init-but-no-init.d-script
diff --git a/debian/systemd-boot.manpages b/debian/systemd-boot.manpages
0new file mode 1006444new file mode 100644
index 0000000..e9c96fd
--- /dev/null
+++ b/debian/systemd-boot.manpages
@@ -0,0 +1,8 @@
1usr/share/man/man1/bootctl.1
2usr/share/man/man5/loader.conf.5
3usr/share/man/man7/sd-boot.7
4usr/share/man/man7/systemd-boot.7
5usr/share/man/man8/systemd-bless-boot.8
6usr/share/man/man8/systemd-bless-boot-generator.8
7usr/share/man/man8/systemd-bless-boot.service.8
8usr/share/man/man8/systemd-boot-system-token.service.8
diff --git a/debian/systemd-container.install b/debian/systemd-container.install
index a092998..0d0a86c 100644
--- a/debian/systemd-container.install
+++ b/debian/systemd-container.install
@@ -27,12 +27,6 @@ usr/share/dbus-1/system.d/org.freedesktop.portable1.conf
27usr/share/dbus-1/system-services/org.freedesktop.import1.service27usr/share/dbus-1/system-services/org.freedesktop.import1.service
28usr/share/dbus-1/system-services/org.freedesktop.machine1.service28usr/share/dbus-1/system-services/org.freedesktop.machine1.service
29usr/share/dbus-1/system-services/org.freedesktop.portable1.service29usr/share/dbus-1/system-services/org.freedesktop.portable1.service
30usr/share/man/man*/*nspawn*
31usr/share/man/man*/machinectl*
32usr/share/man/man*/portablectl*
33usr/share/man/man*/systemd-dissect*
34usr/share/man/man*/systemd-machined*
35usr/share/man/man*/systemd-portabled*
36usr/share/polkit-1/actions/org.freedesktop.import1.policy30usr/share/polkit-1/actions/org.freedesktop.import1.policy
37usr/share/polkit-1/actions/org.freedesktop.machine1.policy31usr/share/polkit-1/actions/org.freedesktop.machine1.policy
38usr/share/polkit-1/actions/org.freedesktop.portable1.policy32usr/share/polkit-1/actions/org.freedesktop.portable1.policy
diff --git a/debian/systemd-container.manpages b/debian/systemd-container.manpages
39new file mode 10064433new file mode 100644
index 0000000..c09a172
--- /dev/null
+++ b/debian/systemd-container.manpages
@@ -0,0 +1,6 @@
1usr/share/man/man*/*nspawn*
2usr/share/man/man*/machinectl*
3usr/share/man/man*/portablectl*
4usr/share/man/man*/systemd-dissect*
5usr/share/man/man*/systemd-machined*
6usr/share/man/man*/systemd-portabled*
diff --git a/debian/systemd-coredump.install b/debian/systemd-coredump.install
index e3c3245..730a98c 100644
--- a/debian/systemd-coredump.install
+++ b/debian/systemd-coredump.install
@@ -5,8 +5,5 @@ lib/systemd/system/*/systemd-coredump*
5usr/bin/coredumpctl5usr/bin/coredumpctl
6usr/lib/sysctl.d/50-coredump.conf6usr/lib/sysctl.d/50-coredump.conf
7usr/lib/sysusers.d/systemd-coredump.conf7usr/lib/sysusers.d/systemd-coredump.conf
8usr/share/man/man1/coredumpctl*
9usr/share/man/man5/coredump.conf*
10usr/share/man/man8/systemd-coredump*
11usr/share/bash-completion/completions/coredumpctl8usr/share/bash-completion/completions/coredumpctl
12usr/share/zsh/vendor-completions/_coredumpctl9usr/share/zsh/vendor-completions/_coredumpctl
diff --git a/debian/systemd-coredump.manpages b/debian/systemd-coredump.manpages
13new file mode 10064410new file mode 100644
index 0000000..5e7573e
--- /dev/null
+++ b/debian/systemd-coredump.manpages
@@ -0,0 +1,3 @@
1usr/share/man/man1/coredumpctl*
2usr/share/man/man5/coredump.conf*
3usr/share/man/man8/systemd-coredump*
diff --git a/debian/systemd-homed.install b/debian/systemd-homed.install
0new file mode 1006444new file mode 100644
index 0000000..b8357a3
--- /dev/null
+++ b/debian/systemd-homed.install
@@ -0,0 +1,11 @@
1etc/systemd/homed.conf
2lib/*/security/pam_systemd_home.so
3lib/systemd/systemd-homed
4lib/systemd/systemd-homework
5lib/systemd/system/systemd-homed.service
6lib/systemd/system/systemd-homed-activate.service
7usr/bin/homectl
8usr/share/dbus-1/*/*home*
9usr/share/polkit-1/actions/org.freedesktop.home1.policy
10usr/share/bash-completion/completions/homectl
11../extra/pam-configs/systemd-homed usr/share/pam-configs/
diff --git a/debian/systemd-homed.lintian-overrides b/debian/systemd-homed.lintian-overrides
0new file mode 10064412new file mode 100644
index 0000000..51274e4
--- /dev/null
+++ b/debian/systemd-homed.lintian-overrides
@@ -0,0 +1,5 @@
1# Lintian is really bad at associating manpages
2systemd-homed: spare-manual-page
3# False positive: Lintian doesn't recognize Also=
4systemd-homed: systemd-service-file-refers-to-unusual-wantedby-target
5systemd-homed: package-supports-alternative-init-but-no-init.d-script
diff --git a/debian/systemd-homed.manpages b/debian/systemd-homed.manpages
0new file mode 1006446new file mode 100644
index 0000000..4696f75
--- /dev/null
+++ b/debian/systemd-homed.manpages
@@ -0,0 +1 @@
1usr/share/man/man*/*home*
diff --git a/debian/systemd-homed.postinst b/debian/systemd-homed.postinst
0new file mode 1006442new file mode 100644
index 0000000..7e37590
--- /dev/null
+++ b/debian/systemd-homed.postinst
@@ -0,0 +1,7 @@
1#!/bin/sh
2
3set -e
4
5pam-auth-update --package
6
7#DEBHELPER#
diff --git a/debian/systemd-homed.prerm b/debian/systemd-homed.prerm
0new file mode 1006448new file mode 100644
index 0000000..0dd38b0
--- /dev/null
+++ b/debian/systemd-homed.prerm
@@ -0,0 +1,20 @@
1#!/bin/sh
2
3set -e
4
5# pam-auth-update --remove removes the named profile from the active config.
6# It arguably should be called during deconfigure as well, but deconfigure
7# can happen in some cases during a dist-upgrade and we don't want to
8# deconfigure all PAM modules in the middle of a dist-upgrade by accident.
9#
10# More importantly, with the current implementation, --remove also removes
11# all local preferences for the named config (such as whether it's enabled
12# or disabled), which we don't want to do on deconfigure.
13#
14# This may need to change later as pam-auth-update evolves.
15
16if [ "$1" = remove ] && [ "${DPKG_MAINTSCRIPT_PACKAGE_REFCOUNT:-1}" = 1 ]; then
17 pam-auth-update --package --remove systemd-homed
18fi
19
20#DEBHELPER#
diff --git a/debian/systemd-journal-remote.install b/debian/systemd-journal-remote.install
index 188628b..f187d8f 100644
--- a/debian/systemd-journal-remote.install
+++ b/debian/systemd-journal-remote.install
@@ -2,10 +2,6 @@
2etc/systemd/journal-upload.conf2etc/systemd/journal-upload.conf
3lib/systemd/systemd-journal-upload3lib/systemd/systemd-journal-upload
4lib/systemd/system/systemd-journal-upload.service4lib/systemd/system/systemd-journal-upload.service
5usr/share/man/man5/journal-upload.conf.d.5
6usr/share/man/man5/journal-upload.conf.5
7usr/share/man/man8/systemd-journal-upload.8
8usr/share/man/man8/systemd-journal-upload.service.8
95
10# systemd-journal-remote6# systemd-journal-remote
11etc/systemd/journal-remote.conf7etc/systemd/journal-remote.conf
@@ -13,17 +9,9 @@ lib/systemd/systemd-journal-remote
13lib/systemd/system/systemd-journal-remote.service9lib/systemd/system/systemd-journal-remote.service
14lib/systemd/system/systemd-journal-remote.socket10lib/systemd/system/systemd-journal-remote.socket
15usr/lib/sysusers.d/systemd-remote.conf11usr/lib/sysusers.d/systemd-remote.conf
16usr/share/man/man5/journal-remote.conf.d.5
17usr/share/man/man5/journal-remote.conf.5
18usr/share/man/man8/systemd-journal-remote.service.8
19usr/share/man/man8/systemd-journal-remote.socket.8
20usr/share/man/man8/systemd-journal-remote.8
2112
22# systemd-journal-gatewayd13# systemd-journal-gatewayd
23lib/systemd/systemd-journal-gatewayd14lib/systemd/systemd-journal-gatewayd
24lib/systemd/system/systemd-journal-gatewayd.service15lib/systemd/system/systemd-journal-gatewayd.service
25lib/systemd/system/systemd-journal-gatewayd.socket16lib/systemd/system/systemd-journal-gatewayd.socket
26usr/share/systemd/gatewayd/17usr/share/systemd/gatewayd/
27usr/share/man/man8/systemd-journal-gatewayd.service.8
28usr/share/man/man8/systemd-journal-gatewayd.socket.8
29usr/share/man/man8/systemd-journal-gatewayd.8
diff --git a/debian/systemd-journal-remote.manpages b/debian/systemd-journal-remote.manpages
30new file mode 10064418new file mode 100644
index 0000000..55ede14
--- /dev/null
+++ b/debian/systemd-journal-remote.manpages
@@ -0,0 +1,12 @@
1usr/share/man/man5/journal-upload.conf.d.5
2usr/share/man/man5/journal-upload.conf.5
3usr/share/man/man8/systemd-journal-upload.8
4usr/share/man/man8/systemd-journal-upload.service.8
5usr/share/man/man5/journal-remote.conf.d.5
6usr/share/man/man5/journal-remote.conf.5
7usr/share/man/man8/systemd-journal-remote.service.8
8usr/share/man/man8/systemd-journal-remote.socket.8
9usr/share/man/man8/systemd-journal-remote.8
10usr/share/man/man8/systemd-journal-gatewayd.service.8
11usr/share/man/man8/systemd-journal-gatewayd.socket.8
12usr/share/man/man8/systemd-journal-gatewayd.8
diff --git a/debian/systemd-oomd.install b/debian/systemd-oomd.install
index f9f6686..7bbe7cd 100644
--- a/debian/systemd-oomd.install
+++ b/debian/systemd-oomd.install
@@ -8,6 +8,5 @@ lib/systemd/system/systemd-oomd.socket
8usr/bin/oomctl8usr/bin/oomctl
9usr/lib/sysusers.d/systemd-oom.conf9usr/lib/sysusers.d/systemd-oom.conf
10usr/share/dbus-1/*/*oom*10usr/share/dbus-1/*/*oom*
11usr/share/man/man*/*oom*
12usr/share/bash-completion/completions/oomctl11usr/share/bash-completion/completions/oomctl
13usr/share/zsh/vendor-completions/_oomctl12usr/share/zsh/vendor-completions/_oomctl
diff --git a/debian/systemd-oomd.manpages b/debian/systemd-oomd.manpages
14new file mode 10064413new file mode 100644
index 0000000..b1f4970
--- /dev/null
+++ b/debian/systemd-oomd.manpages
@@ -0,0 +1 @@
1usr/share/man/man*/*oom*
diff --git a/debian/systemd-resolved.install b/debian/systemd-resolved.install
0new file mode 1006442new file mode 100644
index 0000000..6d7241d
--- /dev/null
+++ b/debian/systemd-resolved.install
@@ -0,0 +1,13 @@
1/sbin/resolvconf
2/etc/systemd/resolved.conf
3/lib/systemd/systemd-resolved
4/lib/systemd/system/systemd-resolved.service
5/usr/bin/resolvectl
6/usr/lib/sysusers.d/systemd-resolve.conf
7/usr/lib/tmpfiles.d/systemd-resolve.conf
8/usr/share/bash-completion/completions/resolvectl
9/usr/share/bash-completion/completions/systemd-resolve
10/usr/share/dbus-1/system.d/org.freedesktop.resolve1.conf
11/usr/share/dbus-1/system-services/org.freedesktop.resolve1.service
12/usr/share/polkit-1/actions/org.freedesktop.resolve1.policy
13/usr/share/zsh/vendor-completions/_resolvectl
diff --git a/debian/systemd-resolved.links b/debian/systemd-resolved.links
0new file mode 10064414new file mode 100644
index 0000000..63b933a
--- /dev/null
+++ b/debian/systemd-resolved.links
@@ -0,0 +1 @@
1/run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
diff --git a/debian/systemd-resolved.lintian-overrides b/debian/systemd-resolved.lintian-overrides
0new file mode 1006442new file mode 100644
index 0000000..459af93
--- /dev/null
+++ b/debian/systemd-resolved.lintian-overrides
@@ -0,0 +1,3 @@
1# Lintian is really bad at associating manpages
2systemd-resolved: spare-manual-page
3systemd-resolved: package-supports-alternative-init-but-no-init.d-script
diff --git a/debian/systemd-resolved.manpages b/debian/systemd-resolved.manpages
0new file mode 1006444new file mode 100644
index 0000000..2933665
--- /dev/null
+++ b/debian/systemd-resolved.manpages
@@ -0,0 +1,4 @@
1usr/share/man/man1/resolv*
2usr/share/man/man5/org.freedesktop.resolve1*
3usr/share/man/man5/resolved.conf.*
4usr/share/man/man8/systemd-resolved.*
diff --git a/debian/systemd-resolved.postinst b/debian/systemd-resolved.postinst
0new file mode 1006445new file mode 100644
index 0000000..17ab957
--- /dev/null
+++ b/debian/systemd-resolved.postinst
@@ -0,0 +1,28 @@
1#!/bin/sh
2
3set -e
4
5_adopt_conffile() {
6 conffile=$1
7 pkg=$2
8
9 [ -f ${conffile}.dpkg-bak ] || return 0
10
11 md5sum="$(md5sum ${conffile} | sed -e 's/ .*//')"
12 old_md5sum="$(dpkg-query -W -f='${Conffiles}' $pkg | \
13 sed -n -e "\' ${conffile} ' { s/ obsolete$//; s/.* //; p }")"
14 # On new installs, if the policy file was preserved on systemd upgrade
15 # by dpkg-maintscript helper, copy it back if the new file has not been modified yet
16 if [ "$md5sum" = "$old_md5sum" ]; then
17 mv ${conffile}.dpkg-bak ${conffile}
18 fi
19}
20
21
22if [ "$1" = configure ] && [ -z "$2" ]; then
23 adduser --quiet --system --group --no-create-home --home /run/systemd \
24 --gecos "systemd Resolver" systemd-resolve
25 _adopt_conffile /etc/systemd/resolved.conf systemd-resolved
26fi
27
28#DEBHELPER#
diff --git a/debian/systemd-standalone-sysusers.manpages b/debian/systemd-standalone-sysusers.manpages
0new file mode 10064429new file mode 100644
index 0000000..daaab6a
--- /dev/null
+++ b/debian/systemd-standalone-sysusers.manpages
@@ -0,0 +1 @@
1usr/share/man/man8/systemd-sysusers.8
diff --git a/debian/systemd-standalone-tmpfiles.manpages b/debian/systemd-standalone-tmpfiles.manpages
0new file mode 1006442new file mode 100644
index 0000000..d90ac8f
--- /dev/null
+++ b/debian/systemd-standalone-tmpfiles.manpages
@@ -0,0 +1 @@
1usr/share/man/man8/systemd-tmpfiles.8
diff --git a/debian/systemd-sysv.install b/debian/systemd-sysv.install
index 9c104a9..34e4528 100644
--- a/debian/systemd-sysv.install
+++ b/debian/systemd-sysv.install
@@ -1,10 +1,3 @@
1usr/share/man/man1/init.1
2usr/share/man/man8/telinit.8
3usr/share/man/man8/runlevel.8
4usr/share/man/man8/shutdown.8
5usr/share/man/man8/poweroff.8
6usr/share/man/man8/reboot.8
7usr/share/man/man8/halt.8
8sbin/init1sbin/init
9sbin/telinit2sbin/telinit
10sbin/runlevel3sbin/runlevel
diff --git a/debian/systemd-sysv.manpages b/debian/systemd-sysv.manpages
11new file mode 1006444new file mode 100644
index 0000000..0a949c9
--- /dev/null
+++ b/debian/systemd-sysv.manpages
@@ -0,0 +1,7 @@
1usr/share/man/man1/init.1
2usr/share/man/man8/telinit.8
3usr/share/man/man8/runlevel.8
4usr/share/man/man8/shutdown.8
5usr/share/man/man8/poweroff.8
6usr/share/man/man8/reboot.8
7usr/share/man/man8/halt.8
diff --git a/debian/systemd-timesyncd.install b/debian/systemd-timesyncd.install
index 7090dba..a5be5b5 100644
--- a/debian/systemd-timesyncd.install
+++ b/debian/systemd-timesyncd.install
@@ -4,5 +4,4 @@ lib/systemd/systemd-timesyncd
4lib/systemd/system/systemd-timesyncd.service4lib/systemd/system/systemd-timesyncd.service
5usr/lib/sysusers.d/systemd-timesync.conf5usr/lib/sysusers.d/systemd-timesync.conf
6usr/share/dbus-1/*/*timesync*6usr/share/dbus-1/*/*timesync*
7usr/share/man/man*/*timesyncd*
8../extra/dhclient-exit-hooks.d/ etc/dhcp/7../extra/dhclient-exit-hooks.d/ etc/dhcp/
diff --git a/debian/systemd-timesyncd.manpages b/debian/systemd-timesyncd.manpages
9new file mode 1006448new file mode 100644
index 0000000..b77577f
--- /dev/null
+++ b/debian/systemd-timesyncd.manpages
@@ -0,0 +1 @@
1usr/share/man/man*/*timesyncd*
diff --git a/debian/systemd-userdbd.install b/debian/systemd-userdbd.install
0new file mode 1006442new file mode 100644
index 0000000..c40ee43
--- /dev/null
+++ b/debian/systemd-userdbd.install
@@ -0,0 +1,5 @@
1lib/systemd/systemd-userdbd
2lib/systemd/systemd-userwork
3lib/systemd/system/systemd-userdbd.service
4lib/systemd/system/systemd-userdbd.socket
5usr/bin/userdbctl
diff --git a/debian/systemd-userdbd.lintian-overrides b/debian/systemd-userdbd.lintian-overrides
0new file mode 1006446new file mode 100644
index 0000000..f834679
--- /dev/null
+++ b/debian/systemd-userdbd.lintian-overrides
@@ -0,0 +1,3 @@
1# Lintian is really bad at associating manpages
2systemd-userdbd: spare-manual-page
3systemd-userdbd: package-supports-alternative-init-but-no-init.d-script
diff --git a/debian/systemd-userdbd.manpages b/debian/systemd-userdbd.manpages
0new file mode 1006444new file mode 100644
index 0000000..95d4d26
--- /dev/null
+++ b/debian/systemd-userdbd.manpages
@@ -0,0 +1 @@
1usr/share/man/man*/*userdb*
diff --git a/debian/systemd.NEWS b/debian/systemd.NEWS
index 4003182..100a1df 100644
--- a/debian/systemd.NEWS
+++ b/debian/systemd.NEWS
@@ -1,3 +1,24 @@
1systemd (251.3-2) unstable; urgency=medium
2
3 systemd-resolved has been split into a separate package.
4 This new systemd-resolved package will not be installed automatically on
5 upgrades. If you are using systemd-resolved, please install this new
6 package manually.
7
8 -- Luca Boccassi <bluca@debian.org> Thu, 05 Aug 2022 20:26:12 +0100
9
10systemd (251.2-3) unstable; urgency=medium
11
12 systemd-boot has been split into a separate package.
13 This new systemd-boot package will not be installed automatically on
14 upgrades. If you are using systemd-boot, please install this new
15 package manually.
16
17 The default boot loader in Debian is grub2. If you have not set up
18 systemd-boot manually, no action is required on your side.
19
20 -- Michael Biebl <biebl@debian.org> Wed, 08 Jun 2022 21:49:47 +0200
21
1systemd (251.1-1) unstable; urgency=medium22systemd (251.1-1) unstable; urgency=medium
223
3 systemd-journal-gatewayd and systemd-journal-remote are now built24 systemd-journal-gatewayd and systemd-journal-remote are now built
diff --git a/debian/systemd.install b/debian/systemd.install
index c2e5c69..f5547d0 100644
--- a/debian/systemd.install
+++ b/debian/systemd.install
@@ -14,14 +14,9 @@ usr/lib/sysctl.d/
14usr/lib/sysusers.d/basic.conf14usr/lib/sysusers.d/basic.conf
15usr/lib/sysusers.d/systemd-journal.conf15usr/lib/sysusers.d/systemd-journal.conf
16usr/lib/sysusers.d/systemd-network.conf16usr/lib/sysusers.d/systemd-network.conf
17usr/lib/sysusers.d/systemd-resolve.conf
18usr/lib/systemd/17usr/lib/systemd/
19usr/lib/tmpfiles.d/18usr/lib/tmpfiles.d/
20usr/lib/kernel19usr/lib/kernel
21usr/share/man/man1/
22usr/share/man/man5/
23usr/share/man/man7/
24usr/share/man/man8/
25usr/share/bash-completion/20usr/share/bash-completion/
26usr/share/zsh/vendor-completions/21usr/share/zsh/vendor-completions/
27usr/share/dbus-1/22usr/share/dbus-1/
diff --git a/debian/systemd.lintian-overrides b/debian/systemd.lintian-overrides
index 1c2a8f2..5159e2c 100644
--- a/debian/systemd.lintian-overrides
+++ b/debian/systemd.lintian-overrides
@@ -15,12 +15,5 @@ systemd: package-contains-empty-directory lib/systemd/system/runlevel4.target.wa
15systemd: package-contains-empty-directory lib/systemd/system/runlevel5.target.wants/15systemd: package-contains-empty-directory lib/systemd/system/runlevel5.target.wants/
16systemd: package-contains-empty-directory usr/lib/binfmt.d/16systemd: package-contains-empty-directory usr/lib/binfmt.d/
17systemd: package-contains-empty-directory usr/lib/modules-load.d/17systemd: package-contains-empty-directory usr/lib/modules-load.d/
18# Not a shared library
19systemd: shared-library-lacks-prerequisites usr/lib/systemd/boot/efi/linuxx64.elf.stub
20# PE-COFF EFI binaries, false positives
21systemd: executable-not-elf-or-script usr/lib/systemd/boot/efi/linuxx64.efi.stub
22systemd: executable-not-elf-or-script usr/lib/systemd/boot/efi/systemd-bootx64.efi
23# Intentional: value of config got in a release by mistake, needs to be kept
24systemd: spelling-error-in-binary lib/systemd/libsystemd-shared-251.so anually annually
25# netlink keyword18# netlink keyword
26systemd: spelling-error-in-binary lib/systemd/systemd-networkd iif if19systemd: spelling-error-in-binary lib/systemd/systemd-networkd iif if
diff --git a/debian/systemd.maintscript b/debian/systemd.maintscript
index a4cd38d..e7fd0a1 100644
--- a/debian/systemd.maintscript
+++ b/debian/systemd.maintscript
@@ -2,3 +2,4 @@ rm_conffile /etc/dhcp/dhclient-exit-hooks.d/timesyncd 245.4-2~
2rm_conffile /etc/systemd/timesyncd.conf 245.4-2~2rm_conffile /etc/systemd/timesyncd.conf 245.4-2~
3rm_conffile /etc/dhcp/dhclient-enter-hooks.d/resolved 246-2ubuntu1~3rm_conffile /etc/dhcp/dhclient-enter-hooks.d/resolved 246-2ubuntu1~
4rm_conffile /etc/pam.d/systemd-user 246.6-3~4rm_conffile /etc/pam.d/systemd-user 246.6-3~
5rm_conffile /etc/systemd/resolved.conf 251.3-2~
diff --git a/debian/systemd.manpages b/debian/systemd.manpages
5new file mode 1006446new file mode 100644
index 0000000..57f666f
--- /dev/null
+++ b/debian/systemd.manpages
@@ -0,0 +1,4 @@
1usr/share/man/man1/*
2usr/share/man/man5/*
3usr/share/man/man7/*
4usr/share/man/man8/*
diff --git a/debian/systemd.postinst b/debian/systemd.postinst
index 32fa7db..63e78ca 100644
--- a/debian/systemd.postinst
+++ b/debian/systemd.postinst
@@ -19,7 +19,7 @@ _update_binfmt() {
19 # configuration ship a corresponding binfmt.d snippet yet.19 # configuration ship a corresponding binfmt.d snippet yet.
20 # Once this is the case, this additional safety check can be removed.20 # Once this is the case, this additional safety check can be removed.
21 if ! _systemctl -q is-active binfmt-support.service; then21 if ! _systemctl -q is-active binfmt-support.service; then
22 _systemctl restart systemd-binfmt.service || true22 _systemctl try-restart systemd-binfmt.service || true
23 fi23 fi
24}24}
2525
@@ -84,8 +84,6 @@ addgroup --quiet --system systemd-journal
8484
85adduser --quiet --system --group --no-create-home --home /run/systemd \85adduser --quiet --system --group --no-create-home --home /run/systemd \
86 --gecos "systemd Network Management" systemd-network86 --gecos "systemd Network Management" systemd-network
87adduser --quiet --system --group --no-create-home --home /run/systemd \
88 --gecos "systemd Resolver" systemd-resolve
8987
90# Enable persistent journal, in auto-mode, by default on new installs installs and upgrades88# Enable persistent journal, in auto-mode, by default on new installs installs and upgrades
91if dpkg --compare-versions "$2" lt "235-3ubuntu3~"; then89if dpkg --compare-versions "$2" lt "235-3ubuntu3~"; then
@@ -116,7 +114,6 @@ if [ -n "$2" ] && [ "$(systemctl is-system-running)" != "stopping" ]; then
116 _systemctl stop systemd-networkd.socket || true114 _systemctl stop systemd-networkd.socket || true
117 fi115 fi
118 _systemctl try-restart systemd-networkd.service || true116 _systemctl try-restart systemd-networkd.service || true
119 _systemctl try-restart systemd-resolved.service || true
120 _systemctl try-restart systemd-journald.service || true117 _systemctl try-restart systemd-journald.service || true
121fi118fi
122119
diff --git a/debian/tests/control b/debian/tests/control
index 56626f9..361abe0 100644
--- a/debian/tests/control
+++ b/debian/tests/control
@@ -37,6 +37,7 @@ Tests: networkd-test.py
37Tests-Directory: test37Tests-Directory: test
38Depends: systemd,38Depends: systemd,
39 udev,39 udev,
40 systemd-resolved,
40 libpam-systemd,41 libpam-systemd,
41 libnss-systemd,42 libnss-systemd,
42 acl,43 acl,
@@ -137,6 +138,8 @@ Depends: systemd-tests,
137 systemd-coredump,138 systemd-coredump,
138 systemd-timesyncd,139 systemd-timesyncd,
139 systemd-oomd,140 systemd-oomd,
141 systemd-homed,
142 systemd-resolved,
140 libnss-myhostname,143 libnss-myhostname,
141 libnss-mymachines,144 libnss-mymachines,
142 libnss-resolve,145 libnss-resolve,
@@ -188,6 +191,7 @@ Depends: systemd-tests,
188 swtpm,191 swtpm,
189 tpm2-tools,192 tpm2-tools,
190 libgcc-s1,193 libgcc-s1,
194 openssl,
191Restrictions: needs-root, allow-stderr, isolation-machine195Restrictions: needs-root, allow-stderr, isolation-machine
192196
193Tests: boot-smoke197Tests: boot-smoke
diff --git a/debian/udev.install b/debian/udev.install
index cb52122..adeb7ad 100644
--- a/debian/udev.install
+++ b/debian/udev.install
@@ -7,13 +7,6 @@ lib/systemd/systemd-udevd
7bin/udevadm7bin/udevadm
8bin/systemd-hwdb8bin/systemd-hwdb
9usr/lib/tmpfiles.d/static-nodes-permissions.conf9usr/lib/tmpfiles.d/static-nodes-permissions.conf
10usr/share/man/man5/udev.conf.5
11usr/share/man/man5/systemd.link.5
12usr/share/man/man7/hwdb.7
13usr/share/man/man7/udev.7
14usr/share/man/man8/systemd-hwdb*
15usr/share/man/man8/systemd-udevd*
16usr/share/man/man8/udevadm.8
17usr/share/bash-completion/completions/udevadm10usr/share/bash-completion/completions/udevadm
18usr/share/zsh/vendor-completions/_udevadm11usr/share/zsh/vendor-completions/_udevadm
19usr/share/pkgconfig/udev.pc12usr/share/pkgconfig/udev.pc
diff --git a/debian/udev.manpages b/debian/udev.manpages
20new file mode 10064413new file mode 100644
index 0000000..f55622c
--- /dev/null
+++ b/debian/udev.manpages
@@ -0,0 +1,7 @@
1usr/share/man/man5/udev.conf.5
2usr/share/man/man5/systemd.link.5
3usr/share/man/man7/hwdb.7
4usr/share/man/man7/udev.7
5usr/share/man/man8/systemd-hwdb*
6usr/share/man/man8/systemd-udevd*
7usr/share/man/man8/udevadm.8
diff --git a/hwdb.d/70-analyzers.hwdb b/hwdb.d/70-analyzers.hwdb
index 899ece3..0a19115 100644
--- a/hwdb.d/70-analyzers.hwdb
+++ b/hwdb.d/70-analyzers.hwdb
@@ -29,7 +29,6 @@ usb:v1679p3001*
2929
30# Power Delivery Analyzers30# Power Delivery Analyzers
31usb:v1679p6003*31usb:v1679p6003*
32usb:v0483pDF11*
33 ID_SIGNAL_ANALYZER=132 ID_SIGNAL_ANALYZER=1
3433
35###########################################################34###########################################################
diff --git a/man/journalctl.xml b/man/journalctl.xml
index 424acc9..e226663 100644
--- a/man/journalctl.xml
+++ b/man/journalctl.xml
@@ -650,7 +650,7 @@
650650
651 <listitem><para>If <replaceable>FILE</replaceable> exists and contains a651 <listitem><para>If <replaceable>FILE</replaceable> exists and contains a
652 cursor, start showing entries <emphasis>after</emphasis> this location.652 cursor, start showing entries <emphasis>after</emphasis> this location.
653 Otherwise the show entries according the other given options. At the end,653 Otherwise show entries according to the other given options. At the end,
654 write the cursor of the last entry to <replaceable>FILE</replaceable>. Use654 write the cursor of the last entry to <replaceable>FILE</replaceable>. Use
655 this option to continually read the journal by sequentially calling655 this option to continually read the journal by sequentially calling
656 <command>journalctl</command>.</para></listitem>656 <command>journalctl</command>.</para></listitem>
diff --git a/man/os-release.xml b/man/os-release.xml
index 875ac94..dd135d6 100644
--- a/man/os-release.xml
+++ b/man/os-release.xml
@@ -429,7 +429,7 @@
429 <listitem><para>Takes a space-separated list of one or more valid prefix match strings for the429 <listitem><para>Takes a space-separated list of one or more valid prefix match strings for the
430 <ulink url="https://systemd.io/PORTABLE_SERVICES">Portable Services</ulink> logic. This field430 <ulink url="https://systemd.io/PORTABLE_SERVICES">Portable Services</ulink> logic. This field
431 serves two purposes: it is informational, identifying portable service images as such (and thus431 serves two purposes: it is informational, identifying portable service images as such (and thus
432 allowing them to be distinguished from other OS images, such as bootable system images). In is also432 allowing them to be distinguished from other OS images, such as bootable system images). It is also
433 used when a portable service image is attached: the specified or implied portable service prefix is433 used when a portable service image is attached: the specified or implied portable service prefix is
434 checked against the list specified here, to enforce restrictions how images may be attached to a434 checked against the list specified here, to enforce restrictions how images may be attached to a
435 system.</para></listitem>435 system.</para></listitem>
diff --git a/man/pam_systemd_home.xml b/man/pam_systemd_home.xml
index 906d1c1..9fa0e0a 100644
--- a/man/pam_systemd_home.xml
+++ b/man/pam_systemd_home.xml
@@ -17,8 +17,8 @@
1717
18 <refnamediv>18 <refnamediv>
19 <refname>pam_systemd_home</refname>19 <refname>pam_systemd_home</refname>
20 <refpurpose>Automatically mount home directories managed by <filename>systemd-homed.service</filename> on20 <refpurpose>Authenticate users and mount home directories via <filename>systemd-homed.service</filename>
21 login, and unmount them on logout</refpurpose>21 </refpurpose>
22 </refnamediv>22 </refnamediv>
2323
24 <refsynopsisdiv>24 <refsynopsisdiv>
@@ -31,7 +31,11 @@
31 <para><command>pam_systemd_home</command> ensures that home directories managed by31 <para><command>pam_systemd_home</command> ensures that home directories managed by
32 <citerefentry><refentrytitle>systemd-homed.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>32 <citerefentry><refentrytitle>systemd-homed.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
33 are automatically activated (mounted) on user login, and are deactivated (unmounted) when the last33 are automatically activated (mounted) on user login, and are deactivated (unmounted) when the last
34 session of the user ends.</para>34 session of the user ends. For such users, it also provides authentication (when per-user disk encryption
35 is used, the disk encryption key is derived from the authentication credential supplied at login time),
36 account management (the <ulink url="https://systemd.io/USER_RECORD/">JSON user record</ulink> embedded in
37 the home store contains account details), and implements the updating of the encryption password (which
38 is also used for user authentication).</para>
35 </refsect1>39 </refsect1>
3640
37 <refsect1>41 <refsect1>
@@ -93,8 +97,13 @@
93 <refsect1>97 <refsect1>
94 <title>Module Types Provided</title>98 <title>Module Types Provided</title>
9599
96 <para>The module provides all four management operations: <option>auth</option>, <option>account</option>,100 <para>The module implements all four PAM operations: <option>auth</option> (reason: to allow
97 <option>session</option>, <option>password</option>.</para>101 authentication using the encrypted data), <option>account</option> (reason: users with
102 <filename>systemd-homed.service</filename> user accounts are described in a <ulink
103 url="https://systemd.io/USER_RECORD/">JSON user record</ulink> and may be configured in more detail than
104 in the traditional Linux user database), <option>session</option> (user sessions must be tracked in order
105 to implement automatic release when the last session of the user is gone), <option>password</option> (to
106 change the encryption password — also used for user authentication — through PAM).</para>
98 </refsect1>107 </refsect1>
99108
100 <refsect1>109 <refsect1>
diff --git a/man/sd_notify.xml b/man/sd_notify.xml
index 4a0a7b3..31388b9 100644
--- a/man/sd_notify.xml
+++ b/man/sd_notify.xml
@@ -272,13 +272,14 @@
272 <varlistentry>272 <varlistentry>
273 <term>BARRIER=1</term>273 <term>BARRIER=1</term>
274274
275 <listitem><para>Tells the service manager that the client is explicitly requesting synchronization by means of275 <listitem><para>Tells the service manager that the client is explicitly requesting synchronization by
276 closing the file descriptor sent with this command. The service manager guarantees that the processing of a <varname>276 means of closing the file descriptor sent with this command. The service manager guarantees that the
277 BARRIER=1</varname> command will only happen after all previous notification messages sent before this command277 processing of a <varname>BARRIER=1</varname> command will only happen after all previous notification
278 have been processed. Hence, this command accompanied with a single file descriptor can be used to synchronize278 messages sent before this command have been processed. Hence, this command accompanied with a single
279 against reception of all previous status messages. Note that this command cannot be mixed with other notifications,279 file descriptor can be used to synchronize against reception of all previous status messages. Note
280 and has to be sent in a separate message to the service manager, otherwise all assignments will be ignored. Note that280 that this command cannot be mixed with other notifications, and has to be sent in a separate message
281 sending 0 or more than 1 file descriptor with this command is a violation of the protocol.</para></listitem>281 to the service manager, otherwise all assignments will be ignored. Note that sending 0 or more than 1
282 file descriptor with this command is a violation of the protocol.</para></listitem>
282 </varlistentry>283 </varlistentry>
283 </variablelist>284 </variablelist>
284285
@@ -341,7 +342,7 @@
341342
342 <para><function>sd_notify_barrier()</function> allows the caller to343 <para><function>sd_notify_barrier()</function> allows the caller to
343 synchronize against reception of previously sent notification messages344 synchronize against reception of previously sent notification messages
344 and uses the <literal>BARRIER=1</literal> command. It takes a relative345 and uses the <varname>BARRIER=1</varname> command. It takes a relative
345 <varname>timeout</varname> value in microseconds which is passed to346 <varname>timeout</varname> value in microseconds which is passed to
346 <citerefentry><refentrytitle>ppoll</refentrytitle><manvolnum>2</manvolnum>347 <citerefentry><refentrytitle>ppoll</refentrytitle><manvolnum>2</manvolnum>
347 </citerefentry>. A value of UINT64_MAX is interpreted as infinite timeout.348 </citerefentry>. A value of UINT64_MAX is interpreted as infinite timeout.
diff --git a/man/system-or-user-ns.xml b/man/system-or-user-ns.xml
index 01d1dd0..7a302d5 100644
--- a/man/system-or-user-ns.xml
+++ b/man/system-or-user-ns.xml
@@ -8,9 +8,9 @@
8<refsect1>8<refsect1>
99
10<para id="singular">This option is only available for system services, or for services running in per-user10<para id="singular">This option is only available for system services, or for services running in per-user
11 instances of the service manager when unprivileged user namespaces are available.</para>11 instances of the service manager when <varname>PrivateUsers=</varname> is enabled.</para>
1212
13<para id="plural">These options are only available for system services, or for services running in per-user13<para id="plural">These options are only available for system services, or for services running in per-user
14 instances of the service manager when unprivileged user namespaces are available.</para>14 instances of the service manager when <varname>PrivateUsers=</varname> is enabled.</para>
1515
16</refsect1>16</refsect1>
diff --git a/man/systemctl.xml b/man/systemctl.xml
index 963eb9e..64af099 100644
--- a/man/systemctl.xml
+++ b/man/systemctl.xml
@@ -196,32 +196,31 @@ Sun 2017-02-26 20:57:49 EST 2h 3min left Sun 2017-02-26 11:56:36 EST 6h ago
196 <option>-t</option>). If a PID is passed, show information196 <option>-t</option>). If a PID is passed, show information
197 about the unit the process belongs to.</para>197 about the unit the process belongs to.</para>
198198
199 <para>This function is intended to generate human-readable199 <para>This function is intended to generate human-readable output. If you are looking for
200 output. If you are looking for computer-parsable output,200 computer-parsable output, use <command>show</command> instead. By default, this function only
201 use <command>show</command> instead. By default, this201 shows 10 lines of output and ellipsizes lines to fit in the terminal window. This can be changed
202 function only shows 10 lines of output and ellipsizes202 with <option>--lines</option> and <option>--full</option>, see above. In addition,
203 lines to fit in the terminal window. This can be changed203 <command>journalctl --unit=<replaceable>NAME</replaceable></command> or <command>journalctl
204 with <option>--lines</option> and <option>--full</option>,204 --user-unit=<replaceable>NAME</replaceable></command> use a similar filter for messages and might
205 see above. In addition, <command>journalctl205 be more convenient.</para>
206 --unit=<replaceable>NAME</replaceable></command> or206
207 <command>journalctl207 <para>Note that this operation only displays <emphasis>runtime</emphasis> status, i.e. information about
208 --user-unit=<replaceable>NAME</replaceable></command> use208 the current invocation of the unit (if it is running) or the most recent invocation (if it is not
209 a similar filter for messages and might be more209 running anymore, and has not been released from memory). Information about earlier invocations,
210 convenient.210 invocations from previous system boots, or prior invocations that have already been released from
211 </para>211 memory may be retrieved via <command>journalctl --unit=</command>.</para>
212212
213 <para>systemd implicitly loads units as necessary, so just running the <command>status</command> will213 <para>systemd implicitly loads units as necessary, so just running the <command>status</command>
214 attempt to load a file. The command is thus not useful for determining if something was already loaded or214 will attempt to load a file. The command is thus not useful for determining if something was
215 not. The units may possibly also be quickly unloaded after the operation is completed if there's no reason215 already loaded or not. The units may possibly also be quickly unloaded after the operation is
216 to keep it in memory thereafter.216 completed if there's no reason to keep it in memory thereafter.</para>
217 </para>
218217
219 <example>218 <example>
220 <title>Example output from systemctl status </title>219 <title>Example output from systemctl status </title>
221220
222 <programlisting>$ systemctl status bluetooth221 <programlisting>$ systemctl status bluetooth
223● bluetooth.service - Bluetooth service222● bluetooth.service - Bluetooth service
224 Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)223 Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
225 Active: active (running) since Wed 2017-01-04 13:54:04 EST; 1 weeks 0 days ago224 Active: active (running) since Wed 2017-01-04 13:54:04 EST; 1 weeks 0 days ago
226 Docs: man:bluetoothd(8)225 Docs: man:bluetoothd(8)
227 Main PID: 930 (bluetoothd)226 Main PID: 930 (bluetoothd)
@@ -237,29 +236,31 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: Current Time Service could not be
237Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output error (5)236Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output error (5)
238</programlisting>237</programlisting>
239238
240 <para>The dot ("●") uses color on supported terminals to summarize the unit state at a glance. Along with239 <para>The dot ("●") uses color on supported terminals to summarize the unit state at a
241 its color, its shape varies according to its state: <literal>inactive</literal> or240 glance. Along with its color, its shape varies according to its state:
242 <literal>maintenance</literal> is a white circle ("○"), <literal>active</literal> is a green dot ("●"),241 <literal>inactive</literal> or <literal>maintenance</literal> is a white circle ("○"),
243 <literal>deactivating</literal> is a white dot, <literal>failed</literal> or <literal>error</literal> is242 <literal>active</literal> is a green dot ("●"), <literal>deactivating</literal> is a white dot,
244 a red cross ("×"), and <literal>reloading</literal> is a green clockwise circle arrow ("↻").243 <literal>failed</literal> or <literal>error</literal> is a red cross ("×"), and
245 </para>244 <literal>reloading</literal> is a green clockwise circle arrow ("↻").</para>
246245
247 <para>The "Loaded:" line in the output will show <literal>loaded</literal> if the unit has been loaded into246 <para>The "Loaded:" line in the output will show <literal>loaded</literal> if the unit has been
248 memory. Other possible values for "Loaded:" include: <literal>error</literal> if there was a problem247 loaded into memory. Other possible values for "Loaded:" include: <literal>error</literal> if
249 loading it, <literal>not-found</literal> if no unit file was found for this unit,248 there was a problem loading it, <literal>not-found</literal> if no unit file was found for this
250 <literal>bad-setting</literal> if an essential unit file setting could not be parsed and249 unit, <literal>bad-setting</literal> if an essential unit file setting could not be parsed and
251 <literal>masked</literal> if the unit file has been masked. Along with showing the path to the unit file,250 <literal>masked</literal> if the unit file has been masked. Along with showing the path to the
252 this line will also show the enablement state. Enabled commands start at boot. See the full table of251 unit file, this line will also show the enablement state. Enabled units are included in the
253 possible enablement states — including the definition of <literal>masked</literal> — in the documentation252 dependency network between units, and thus are started at boot or via some other form of
254 for the <command>is-enabled</command> command.253 activation. See the full table of possible enablement states — including the definition of
254 <literal>masked</literal> — in the documentation for the <command>is-enabled</command> command.
255 </para>255 </para>
256256
257 <para>The "Active:" line shows active state. The value is usually <literal>active</literal> or257 <para>The "Active:" line shows active state. The value is usually <literal>active</literal> or
258 <literal>inactive</literal>. Active could mean started, bound, plugged in, etc depending on the unit type.258 <literal>inactive</literal>. Active could mean started, bound, plugged in, etc depending on the
259 The unit could also be in process of changing states, reporting a state of <literal>activating</literal> or259 unit type. The unit could also be in process of changing states, reporting a state of
260 <literal>deactivating</literal>. A special <literal>failed</literal> state is entered when the service260 <literal>activating</literal> or <literal>deactivating</literal>. A special
261 failed in some way, such as a crash, exiting with an error code or timing out. If the failed state is261 <literal>failed</literal> state is entered when the service failed in some way, such as a crash,
262 entered the cause will be logged for later reference.</para>262 exiting with an error code or timing out. If the failed state is entered the cause will be logged
263 for later reference.</para>
263 </example>264 </example>
264265
265 </listitem>266 </listitem>
diff --git a/man/systemd-creds.xml b/man/systemd-creds.xml
index d803b5c..7592961 100644
--- a/man/systemd-creds.xml
+++ b/man/systemd-creds.xml
@@ -172,7 +172,7 @@
172 <term><command>has-tpm2</command></term>172 <term><command>has-tpm2</command></term>
173173
174 <listitem><para>Reports whether the system is equipped with a TPM2 device usable for protecting174 <listitem><para>Reports whether the system is equipped with a TPM2 device usable for protecting
175 credentials. If the a TPM2 device has been discovered, is supported, and is being used by firmware,175 credentials. If a TPM2 device has been discovered, is supported, and is being used by firmware,
176 by the OS kernel drivers and by userspace (i.e. systemd) this prints <literal>yes</literal> and exits176 by the OS kernel drivers and by userspace (i.e. systemd) this prints <literal>yes</literal> and exits
177 with exit status zero. If no such device is discovered/supported/used, prints177 with exit status zero. If no such device is discovered/supported/used, prints
178 <literal>no</literal>. Otherwise prints <literal>partial</literal>. In either of these two cases178 <literal>no</literal>. Otherwise prints <literal>partial</literal>. In either of these two cases
diff --git a/man/systemd-integritysetup-generator.xml b/man/systemd-integritysetup-generator.xml
index 23eab01..44248b2 100644
--- a/man/systemd-integritysetup-generator.xml
+++ b/man/systemd-integritysetup-generator.xml
@@ -41,7 +41,7 @@
41 <para>41 <para>
42 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,42 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
43 <citerefentry><refentrytitle>systemd-integritysetup@.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,43 <citerefentry><refentrytitle>systemd-integritysetup@.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
44 <citerefentry project='die-net'><refentrytitle>integritysetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>,44 <citerefentry project='die-net'><refentrytitle>integritysetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
45 </para>45 </para>
46 </refsect1>46 </refsect1>
4747
diff --git a/man/systemd-sysctl.service.xml b/man/systemd-sysctl.service.xml
index 751aa2b..ea81084 100644
--- a/man/systemd-sysctl.service.xml
+++ b/man/systemd-sysctl.service.xml
@@ -122,7 +122,7 @@ kernel.core_pattern = |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t %P %I
122 <para>122 <para>
123 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,123 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
124 <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>,124 <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
125 <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,125 <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
126 </para>126 </para>
127 </refsect1>127 </refsect1>
128128
diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
index 50c5c89..daa2249 100644
--- a/man/systemd.exec.xml
+++ b/man/systemd.exec.xml
@@ -819,13 +819,13 @@ CapabilityBoundingSet=~CAP_B CAP_C</programlisting>
819819
820 <listitem><para>Set soft and hard limits on various resources for executed processes. See820 <listitem><para>Set soft and hard limits on various resources for executed processes. See
821 <citerefentry><refentrytitle>setrlimit</refentrytitle><manvolnum>2</manvolnum></citerefentry> for821 <citerefentry><refentrytitle>setrlimit</refentrytitle><manvolnum>2</manvolnum></citerefentry> for
822 details on the resource limit concept. Resource limits may be specified in two formats: either as822 details on the process resource limit concept. Process resource limits may be specified in two formats:
823 single value to set a specific soft and hard limit to the same value, or as colon-separated pair823 either as single value to set a specific soft and hard limit to the same value, or as colon-separated
824 <option>soft:hard</option> to set both limits individually (e.g. <literal>LimitAS=4G:16G</literal>).824 pair <option>soft:hard</option> to set both limits individually
825 Use the string <option>infinity</option> to configure no limit on a specific resource. The825 (e.g. <literal>LimitAS=4G:16G</literal>). Use the string <option>infinity</option> to configure no
826 multiplicative suffixes K, M, G, T, P and E (to the base 1024) may be used for resource limits826 limit on a specific resource. The multiplicative suffixes K, M, G, T, P and E (to the base 1024) may
827 measured in bytes (e.g. <literal>LimitAS=16G</literal>). For the limits referring to time values, the827 be used for resource limits measured in bytes (e.g. <literal>LimitAS=16G</literal>). For the limits
828 usual time units ms, s, min, h and so on may be used (see828 referring to time values, the usual time units ms, s, min, h and so on may be used (see
829 <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry> for829 <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry> for
830 details). Note that if no time unit is specified for <varname>LimitCPU=</varname> the default unit of830 details). Note that if no time unit is specified for <varname>LimitCPU=</varname> the default unit of
831 seconds is implied, while for <varname>LimitRTTIME=</varname> the default unit of microseconds is831 seconds is implied, while for <varname>LimitRTTIME=</varname> the default unit of microseconds is
@@ -875,15 +875,17 @@ CapabilityBoundingSet=~CAP_B CAP_C</programlisting>
875 <table>875 <table>
876 <title>Resource limit directives, their equivalent <command>ulimit</command> shell commands and the unit used</title>876 <title>Resource limit directives, their equivalent <command>ulimit</command> shell commands and the unit used</title>
877877
878 <tgroup cols='3'>878 <tgroup cols='4'>
879 <colspec colname='directive' />879 <colspec colname='directive' />
880 <colspec colname='equivalent' />880 <colspec colname='equivalent' />
881 <colspec colname='unit' />881 <colspec colname='unit' />
882 <colspec colname='notes' />
882 <thead>883 <thead>
883 <row>884 <row>
884 <entry>Directive</entry>885 <entry>Directive</entry>
885 <entry><command>ulimit</command> equivalent</entry>886 <entry><command>ulimit</command> equivalent</entry>
886 <entry>Unit</entry>887 <entry>Unit</entry>
888 <entry>Notes</entry>
887 </row>889 </row>
888 </thead>890 </thead>
889 <tbody>891 <tbody>
@@ -891,81 +893,97 @@ CapabilityBoundingSet=~CAP_B CAP_C</programlisting>
891 <entry>LimitCPU=</entry>893 <entry>LimitCPU=</entry>
892 <entry>ulimit -t</entry>894 <entry>ulimit -t</entry>
893 <entry>Seconds</entry>895 <entry>Seconds</entry>
896 <entry>-</entry>
894 </row>897 </row>
895 <row>898 <row>
896 <entry>LimitFSIZE=</entry>899 <entry>LimitFSIZE=</entry>
897 <entry>ulimit -f</entry>900 <entry>ulimit -f</entry>
898 <entry>Bytes</entry>901 <entry>Bytes</entry>
902 <entry>-</entry>
899 </row>903 </row>
900 <row>904 <row>
901 <entry>LimitDATA=</entry>905 <entry>LimitDATA=</entry>
902 <entry>ulimit -d</entry>906 <entry>ulimit -d</entry>
903 <entry>Bytes</entry>907 <entry>Bytes</entry>
908 <entry>Don't use. This limits the allowed address range, not memory use! Defaults to unlimited and should not be lowered. To limit memory use, see <varname>MemoryMax=</varname> in <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</entry>
904 </row>909 </row>
905 <row>910 <row>
906 <entry>LimitSTACK=</entry>911 <entry>LimitSTACK=</entry>
907 <entry>ulimit -s</entry>912 <entry>ulimit -s</entry>
908 <entry>Bytes</entry>913 <entry>Bytes</entry>
914 <entry>-</entry>
909 </row>915 </row>
910 <row>916 <row>
911 <entry>LimitCORE=</entry>917 <entry>LimitCORE=</entry>
912 <entry>ulimit -c</entry>918 <entry>ulimit -c</entry>
913 <entry>Bytes</entry>919 <entry>Bytes</entry>
920 <entry>-</entry>
914 </row>921 </row>
915 <row>922 <row>
916 <entry>LimitRSS=</entry>923 <entry>LimitRSS=</entry>
917 <entry>ulimit -m</entry>924 <entry>ulimit -m</entry>
918 <entry>Bytes</entry>925 <entry>Bytes</entry>
926 <entry>Don't use. No effect on Linux.</entry>
919 </row>927 </row>
920 <row>928 <row>
921 <entry>LimitNOFILE=</entry>929 <entry>LimitNOFILE=</entry>
922 <entry>ulimit -n</entry>930 <entry>ulimit -n</entry>
923 <entry>Number of File Descriptors</entry>931 <entry>Number of File Descriptors</entry>
932 <entry>Don't use. Be careful when raising the soft limit above 1024, since <function>select()</function> cannot function with file descriptors above 1023 on Linux. Nowadays, the hard limit defaults to 524288, a very high value compared to historical defaults. Typically applications should increase their soft limit to the hard limit on their own, if they are OK with working with file descriptors above 1023, i.e. do not use <function>select()</function>. Note that file descriptors are nowadays accounted like any other form of memory, thus there should not be any need to lower the hard limit. Use <varname>MemoryMax=</varname> to control overall service memory use, including file descriptor memory.</entry>
924 </row>933 </row>
925 <row>934 <row>
926 <entry>LimitAS=</entry>935 <entry>LimitAS=</entry>
927 <entry>ulimit -v</entry>936 <entry>ulimit -v</entry>
928 <entry>Bytes</entry>937 <entry>Bytes</entry>
938 <entry>Don't use. This limits the allowed address range, not memory use! Defaults to unlimited and should not be lowered. To limit memory use, see <varname>MemoryMax=</varname> in <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</entry>
929 </row>939 </row>
930 <row>940 <row>
931 <entry>LimitNPROC=</entry>941 <entry>LimitNPROC=</entry>
932 <entry>ulimit -u</entry>942 <entry>ulimit -u</entry>
933 <entry>Number of Processes</entry>943 <entry>Number of Processes</entry>
944 <entry>This limit is enforced based on the number of processes belonging to the user. Typically it's better to track processes per service, i.e. use <varname>TasksMax=</varname>, see <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</entry>
934 </row>945 </row>
935 <row>946 <row>
936 <entry>LimitMEMLOCK=</entry>947 <entry>LimitMEMLOCK=</entry>
937 <entry>ulimit -l</entry>948 <entry>ulimit -l</entry>
938 <entry>Bytes</entry>949 <entry>Bytes</entry>
950 <entry>-</entry>
939 </row>951 </row>
940 <row>952 <row>
941 <entry>LimitLOCKS=</entry>953 <entry>LimitLOCKS=</entry>
942 <entry>ulimit -x</entry>954 <entry>ulimit -x</entry>
943 <entry>Number of Locks</entry>955 <entry>Number of Locks</entry>
956 <entry>-</entry>
944 </row>957 </row>
945 <row>958 <row>
946 <entry>LimitSIGPENDING=</entry>959 <entry>LimitSIGPENDING=</entry>
947 <entry>ulimit -i</entry>960 <entry>ulimit -i</entry>
948 <entry>Number of Queued Signals</entry>961 <entry>Number of Queued Signals</entry>
962 <entry>-</entry>
949 </row>963 </row>
950 <row>964 <row>
951 <entry>LimitMSGQUEUE=</entry>965 <entry>LimitMSGQUEUE=</entry>
952 <entry>ulimit -q</entry>966 <entry>ulimit -q</entry>
953 <entry>Bytes</entry>967 <entry>Bytes</entry>
968 <entry>-</entry>
954 </row>969 </row>
955 <row>970 <row>
956 <entry>LimitNICE=</entry>971 <entry>LimitNICE=</entry>
957 <entry>ulimit -e</entry>972 <entry>ulimit -e</entry>
958 <entry>Nice Level</entry>973 <entry>Nice Level</entry>
974 <entry>-</entry>
959 </row>975 </row>
960 <row>976 <row>
961 <entry>LimitRTPRIO=</entry>977 <entry>LimitRTPRIO=</entry>
962 <entry>ulimit -r</entry>978 <entry>ulimit -r</entry>
963 <entry>Realtime Priority</entry>979 <entry>Realtime Priority</entry>
980 <entry>-</entry>
964 </row>981 </row>
965 <row>982 <row>
966 <entry>LimitRTTIME=</entry>983 <entry>LimitRTTIME=</entry>
967 <entry>No equivalent</entry>984 <entry>ulimit -R</entry>
968 <entry>Microseconds</entry>985 <entry>Microseconds</entry>
986 <entry>-</entry>
969 </row>987 </row>
970 </tbody>988 </tbody>
971 </tgroup>989 </tgroup>
@@ -2774,7 +2792,11 @@ SystemCallErrorNumber=EPERM</programlisting>
2774 writing text to stderr will not work. To mitigate this use the construct <command>echo "hello"2792 writing text to stderr will not work. To mitigate this use the construct <command>echo "hello"
2775 >&amp;2</command> instead, which is mostly equivalent and avoids this pitfall.</para>2793 >&amp;2</command> instead, which is mostly equivalent and avoids this pitfall.</para>
27762794
2777 <para>This setting defaults to the value set with <varname>DefaultStandardOutput=</varname> in2795 <para>If <varname>StandardInput=</varname> is set to one of <option>tty</option>, <option>tty-force</option>,
2796 <option>tty-fail</option>, <option>socket</option>, or <option>fd:<replaceable>name</replaceable></option>, this
2797 setting defaults to <option>inherit</option>.</para>
2798
2799 <para>In other cases, this setting defaults to the value set with <varname>DefaultStandardOutput=</varname> in
2778 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, which2800 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, which
2779 defaults to <option>journal</option>. Note that setting this parameter might result in additional dependencies2801 defaults to <option>journal</option>. Note that setting this parameter might result in additional dependencies
2780 to be added to the unit (see above).</para></listitem>2802 to be added to the unit (see above).</para></listitem>
@@ -3635,7 +3657,7 @@ StandardInputData=V2XigLJyZSBubyBzdHJhbmdlcnMgdG8gbG92ZQpZb3Uga25vdyB0aGUgcnVsZX
3635 <term><varname>$MONITOR_INVOCATION_ID</varname></term>3657 <term><varname>$MONITOR_INVOCATION_ID</varname></term>
3636 <term><varname>$MONITOR_UNIT</varname></term>3658 <term><varname>$MONITOR_UNIT</varname></term>
36373659
3638 <listitem><para>Only defined for the service unit type. Those environment variable are passed to3660 <listitem><para>Only defined for the service unit type. Those environment variables are passed to
3639 all <varname>ExecStart=</varname> and <varname>ExecStartPre=</varname> processes which run in3661 all <varname>ExecStart=</varname> and <varname>ExecStartPre=</varname> processes which run in
3640 services triggered by <varname>OnFailure=</varname> or <varname>OnSuccess=</varname> dependencies.3662 services triggered by <varname>OnFailure=</varname> or <varname>OnSuccess=</varname> dependencies.
3641 </para>3663 </para>
@@ -3644,7 +3666,7 @@ StandardInputData=V2XigLJyZSBubyBzdHJhbmdlcnMgdG8gbG92ZQpZb3Uga25vdyB0aGUgcnVsZX
3644 and <varname>$MONITOR_EXIT_STATUS</varname> take the same values as for3666 and <varname>$MONITOR_EXIT_STATUS</varname> take the same values as for
3645 <varname>ExecStop=</varname> and <varname>ExecStopPost=</varname> processes. Variables3667 <varname>ExecStop=</varname> and <varname>ExecStopPost=</varname> processes. Variables
3646 <varname>$MONITOR_INVOCATION_ID</varname> and <varname>$MONITOR_UNIT</varname> are set to the3668 <varname>$MONITOR_INVOCATION_ID</varname> and <varname>$MONITOR_UNIT</varname> are set to the
3647 invocaton id and unit name of the service which triggered the dependency.</para>3669 invocation id and unit name of the service which triggered the dependency.</para>
36483670
3649 <para>Note that when multiple services trigger the same unit, those variables will be3671 <para>Note that when multiple services trigger the same unit, those variables will be
3650 <emphasis>not</emphasis> be passed. Consider using a template handler unit for that case instead:3672 <emphasis>not</emphasis> be passed. Consider using a template handler unit for that case instead:
diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
index 6d21d32..0b247c1 100644
--- a/man/systemd.mount.xml
+++ b/man/systemd.mount.xml
@@ -155,16 +155,14 @@
155 <refsect1>155 <refsect1>
156 <title><filename>fstab</filename></title>156 <title><filename>fstab</filename></title>
157157
158 <para>Mount units may either be configured via unit files, or via158 <para>Mount units may either be configured via unit files, or via <filename>/etc/fstab</filename> (see
159 <filename>/etc/fstab</filename> (see
160 <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>159 <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
161 for details). Mounts listed in <filename>/etc/fstab</filename>160 for details). Mounts listed in <filename>/etc/fstab</filename> will be converted into native units
162 will be converted into native units dynamically at boot and when161 dynamically at boot and when the configuration of the system manager is reloaded. In general, configuring
163 the configuration of the system manager is reloaded. In general,162 mount points through <filename>/etc/fstab</filename> is the preferred approach to manage mounts for
164 configuring mount points through <filename>/etc/fstab</filename>163 humans. For tooling, writing mount units should be preferred over editing <filename>/etc/fstab</filename>.
165 is the preferred approach. See164 See <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
166 <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>165 for details about the conversion from <filename>/etc/fstab</filename> to mount units.</para>
167 for details about the conversion.</para>
168166
169 <para>The NFS mount option <option>bg</option> for NFS background mounts167 <para>The NFS mount option <option>bg</option> for NFS background mounts
170 as documented in <citerefentry project='man-pages'><refentrytitle>nfs</refentrytitle><manvolnum>5</manvolnum></citerefentry>168 as documented in <citerefentry project='man-pages'><refentrytitle>nfs</refentrytitle><manvolnum>5</manvolnum></citerefentry>
diff --git a/man/systemd.netdev.xml b/man/systemd.netdev.xml
index 3a776b3..b197f33 100644
--- a/man/systemd.netdev.xml
+++ b/man/systemd.netdev.xml
@@ -2199,7 +2199,7 @@
2199 <term><varname>PhysicalDevice=</varname></term>2199 <term><varname>PhysicalDevice=</varname></term>
2200 <listitem>2200 <listitem>
2201 <para>Specifies the name or index of the physical WLAN device (e.g. <literal>0</literal> or2201 <para>Specifies the name or index of the physical WLAN device (e.g. <literal>0</literal> or
2202 <literal>phy0</literal>). The list of the physical WLAN devices that exist os the host can be2202 <literal>phy0</literal>). The list of the physical WLAN devices that exist on the host can be
2203 obtained by <command>iw phy</command> command. This option is mandatory.</para>2203 obtained by <command>iw phy</command> command. This option is mandatory.</para>
2204 </listitem>2204 </listitem>
2205 </varlistentry>2205 </varlistentry>
diff --git a/man/systemd.network.xml b/man/systemd.network.xml
index c2ce1b1..3b29905 100644
--- a/man/systemd.network.xml
+++ b/man/systemd.network.xml
@@ -1103,9 +1103,9 @@ Table=1234</programlisting></para>
1103 IGMP snooping since the switch would not replicate multicast packets on ports that did not1103 IGMP snooping since the switch would not replicate multicast packets on ports that did not
1104 have IGMP reports for the multicast addresses. Linux vxlan interfaces created via1104 have IGMP reports for the multicast addresses. Linux vxlan interfaces created via
1105 <command>ip link add vxlan</command> or networkd's netdev kind vxlan have the group option1105 <command>ip link add vxlan</command> or networkd's netdev kind vxlan have the group option
1106 that enables then to do the required join. By extending ip address command with option1106 that enables them to do the required join. By extending <command>ip address</command> command
1107 <literal>autojoin</literal> we can get similar functionality for openvswitch (OVS) vxlan1107 with option <literal>autojoin</literal> we can get similar functionality for openvswitch (OVS)
1108 interfaces as well as other tunneling mechanisms that need to receive multicast traffic.1108 vxlan interfaces as well as other tunneling mechanisms that need to receive multicast traffic.
1109 Defaults to <literal>no</literal>.</para>1109 Defaults to <literal>no</literal>.</para>
1110 </listitem>1110 </listitem>
1111 </varlistentry>1111 </varlistentry>
@@ -1487,7 +1487,7 @@ Table=1234</programlisting></para>
1487 <para>For IPv4 route, defaults to <literal>host</literal> if <varname>Type=</varname> is1487 <para>For IPv4 route, defaults to <literal>host</literal> if <varname>Type=</varname> is
1488 <literal>local</literal> or <literal>nat</literal>, and <literal>link</literal> if1488 <literal>local</literal> or <literal>nat</literal>, and <literal>link</literal> if
1489 <varname>Type=</varname> is <literal>broadcast</literal>, <literal>multicast</literal>,1489 <varname>Type=</varname> is <literal>broadcast</literal>, <literal>multicast</literal>,
1490 <literal>anycast</literal>, or direct <literal>unicast</literal> routes. In other cases,1490 <literal>anycast</literal>, or <literal>unicast</literal>. In other cases,
1491 defaults to <literal>global</literal>. The value is not used for IPv6.</para>1491 defaults to <literal>global</literal>. The value is not used for IPv6.</para>
1492 </listitem>1492 </listitem>
1493 </varlistentry>1493 </varlistentry>
@@ -2534,7 +2534,7 @@ Token=prefixstable:2002:da8:1::</programlisting></para>
2534 <varlistentry>2534 <varlistentry>
2535 <term><varname>ServerAddress=</varname></term>2535 <term><varname>ServerAddress=</varname></term>
2536 <listitem><para>Specifies server address for the DHCP server. Takes an IPv4 address with prefix2536 <listitem><para>Specifies server address for the DHCP server. Takes an IPv4 address with prefix
2537 length, for example <literal>192.168.0.1/24</literal>. This setting may be useful when the link on2537 length, for example 192.168.0.1/24. This setting may be useful when the link on
2538 which the DHCP server is running has multiple static addresses. When unset, one of static addresses2538 which the DHCP server is running has multiple static addresses. When unset, one of static addresses
2539 in the link will be automatically selected. Defaults to unset.</para></listitem>2539 in the link will be automatically selected. Defaults to unset.</para></listitem>
2540 </varlistentry>2540 </varlistentry>
@@ -2956,7 +2956,7 @@ Token=prefixstable:2002:da8:1::</programlisting></para>
29562956
2957 <listitem><para>The IPv6 route that is to be distributed to hosts. Similarly to configuring static2957 <listitem><para>The IPv6 route that is to be distributed to hosts. Similarly to configuring static
2958 IPv6 routes, the setting is configured as an IPv6 prefix routes and its prefix route length,2958 IPv6 routes, the setting is configured as an IPv6 prefix routes and its prefix route length,
2959 separated by a <literal>/</literal> character. Use multiple [IPv6PrefixRoutes] sections to configure2959 separated by a <literal>/</literal> character. Use multiple [IPv6RoutePrefix] sections to configure
2960 multiple IPv6 prefix routes.</para></listitem>2960 multiple IPv6 prefix routes.</para></listitem>
2961 </varlistentry>2961 </varlistentry>
29622962
diff --git a/man/sysupdate.d.xml b/man/sysupdate.d.xml
index 03d27b9..d57fbf0 100644
--- a/man/sysupdate.d.xml
+++ b/man/sysupdate.d.xml
@@ -76,7 +76,7 @@
7676
77 <listitem><para>Similarly, a file <literal>https://download.example.com/foobarOS_47.verity.xz</literal>77 <listitem><para>Similarly, a file <literal>https://download.example.com/foobarOS_47.verity.xz</literal>
78 should be downloaded, decompressed and written to a previously empty partition with GPT partition type78 should be downloaded, decompressed and written to a previously empty partition with GPT partition type
79 UUID of 2c7357ed-ebd2-46d9-aec1-23d437ec2bf5 (i.e the partition type for Verity integrity information79 UUID of 2c7357ed-ebd2-46d9-aec1-23d437ec2bf5 (i.e. the partition type for Verity integrity information
80 for x86-64 root file systems).</para></listitem>80 for x86-64 root file systems).</para></listitem>
8181
82 <listitem><para>Finally, a file <literal>https://download.example.com/foobarOS_47.efi.xz</literal> (a82 <listitem><para>Finally, a file <literal>https://download.example.com/foobarOS_47.efi.xz</literal> (a
@@ -117,7 +117,7 @@
117 <itemizedlist>117 <itemizedlist>
118 <listitem><para>For partitions: the surrounding GPT partition table contains a list of defined118 <listitem><para>For partitions: the surrounding GPT partition table contains a list of defined
119 partitions, including a partition type UUID and a partition label (in this scheme the partition label119 partitions, including a partition type UUID and a partition label (in this scheme the partition label
120 plays a role for the partition similar to the filename for a regular file)</para></listitem>120 plays a role for the partition similar to the filename for a regular file).</para></listitem>
121121
122 <listitem><para>For regular files: the directory listing of the directory the files are contained in122 <listitem><para>For regular files: the directory listing of the directory the files are contained in
123 provides a list of existing files in a straightforward way.</para></listitem>123 provides a list of existing files in a straightforward way.</para></listitem>
@@ -369,7 +369,7 @@
369 <entry><literal>@r</literal></entry>369 <entry><literal>@r</literal></entry>
370 <entry>Read-only flag</entry>370 <entry>Read-only flag</entry>
371 <entry>Either <literal>0</literal> or <literal>1</literal></entry>371 <entry>Either <literal>0</literal> or <literal>1</literal></entry>
372 <entry>Controls ReadOnly bit of the GPT partition flags, as per <ulink url="https://systemd.io/DISCOVERABLE_PARTITIONS">Discoverable Partitions Specification</ulink> and other output read-only flags, see <varname>ReadOnly=</varname> below.</entry>372 <entry>Controls ReadOnly bit of the GPT partition flags, as per <ulink url="https://systemd.io/DISCOVERABLE_PARTITIONS">Discoverable Partitions Specification</ulink> and other output read-only flags, see <varname>ReadOnly=</varname> below</entry>
373 </row>373 </row>
374374
375 <row>375 <row>
@@ -404,14 +404,14 @@
404 <entry><literal>@l</literal></entry>404 <entry><literal>@l</literal></entry>
405 <entry>Tries left</entry>405 <entry>Tries left</entry>
406 <entry>Formatted decimal integer</entry>406 <entry>Formatted decimal integer</entry>
407 <entry>Useful when operating with kernel images, as per <ulink url="https://systemd.io/AUTOMATIC_BOOT_ASSESSMENT">Automatic Boot Assessment</ulink></entry>407 <entry>Useful when operating with kernel image files, as per <ulink url="https://systemd.io/AUTOMATIC_BOOT_ASSESSMENT">Automatic Boot Assessment</ulink></entry>
408 </row>408 </row>
409409
410 <row>410 <row>
411 <entry><literal>@h</literal></entry>411 <entry><literal>@h</literal></entry>
412 <entry>SHA256 hash of compressed file</entry>412 <entry>SHA256 hash of compressed file</entry>
413 <entry>64 hexadecimal characters</entry>413 <entry>64 hexadecimal characters</entry>
414 <entry>The SHA256 hash of the compressed file; not useful for <constant>url-file</constant> or <constant>url-tar</constant> where the SHA256 hash is already included in the manifest file anyway.</entry>414 <entry>The SHA256 hash of the compressed file; not useful for <constant>url-file</constant> or <constant>url-tar</constant> where the SHA256 hash is already included in the manifest file anyway</entry>
415 </row>415 </row>
416 </tbody>416 </tbody>
417 </tgroup>417 </tgroup>
@@ -432,7 +432,7 @@
432 <refsect1>432 <refsect1>
433 <title>[Transfer] Section Options</title>433 <title>[Transfer] Section Options</title>
434434
435 <para>This section defines general properties of this transfer.</para>435 <para>This section defines general properties of this transfer:</para>
436436
437 <variablelist>437 <variablelist>
438 <varlistentry>438 <varlistentry>
@@ -555,8 +555,8 @@
555 <listitem><para>Specifies a file system path where to look for already installed versions or place555 <listitem><para>Specifies a file system path where to look for already installed versions or place
556 newly downloaded versions of this configured resource. If <varname>Type=</varname> is set to556 newly downloaded versions of this configured resource. If <varname>Type=</varname> is set to
557 <constant>partition</constant>, expects a path to a (whole) block device node, or the special string557 <constant>partition</constant>, expects a path to a (whole) block device node, or the special string
558 <literal>auto</literal> in which case the block device the root file system of the currently booted558 <literal>auto</literal> in which case the block device which contains the root file system of the
559 system is automatically determined and used. If <varname>Type=</varname> is set to559 currently booted system is automatically determined and used. If <varname>Type=</varname> is set to
560 <constant>regular-file</constant>, <constant>directory</constant> or <constant>subvolume</constant>,560 <constant>regular-file</constant>, <constant>directory</constant> or <constant>subvolume</constant>,
561 must refer to a path in the local file system referencing the directory to find or place the version561 must refer to a path in the local file system referencing the directory to find or place the version
562 files or directories under.</para>562 files or directories under.</para>
@@ -818,7 +818,7 @@ Path=https://download.example.com/
818MatchPattern=foobarOS_@v.efi.xz818MatchPattern=foobarOS_@v.efi.xz
819819
820[Target]820[Target]
821Type=file821Type=regular-file
822Path=/efi/EFI/Linux822Path=/efi/EFI/Linux
823MatchPattern=foobarOS_@v+@l-@d.efi \823MatchPattern=foobarOS_@v+@l-@d.efi \
824 foobarOS_@v+@l.efi \824 foobarOS_@v+@l.efi \
@@ -831,7 +831,7 @@ InstancesMax=2</programlisting></para>
831 <para>The above installs a unified kernel image into the ESP (which is mounted to831 <para>The above installs a unified kernel image into the ESP (which is mounted to
832 <filename>/efi/</filename>), as per <ulink url="https://systemd.io/BOOT_LOADER_SPECIFICATION">Boot832 <filename>/efi/</filename>), as per <ulink url="https://systemd.io/BOOT_LOADER_SPECIFICATION">Boot
833 Loader Specification</ulink> Type #2. This defines three possible patterns for the names of the833 Loader Specification</ulink> Type #2. This defines three possible patterns for the names of the
834 kernel images images, as per <ulink url="https://systemd.io/AUTOMATIC_BOOT_ASSESSMENT">Automatic Boot834 kernel images, as per <ulink url="https://systemd.io/AUTOMATIC_BOOT_ASSESSMENT">Automatic Boot
835 Assessment</ulink>, and ensures when installing new kernels, they are set up with 3 tries left. No835 Assessment</ulink>, and ensures when installing new kernels, they are set up with 3 tries left. No
836 more than two parallel kernels are kept.</para>836 more than two parallel kernels are kept.</para>
837837
diff --git a/man/udevadm.xml b/man/udevadm.xml
index 3a9b133..89ebfbd 100644
--- a/man/udevadm.xml
+++ b/man/udevadm.xml
@@ -802,7 +802,8 @@
802 <para><command>udevadm lock</command> takes an (advisory) exclusive lock(s) on a block device (or802 <para><command>udevadm lock</command> takes an (advisory) exclusive lock(s) on a block device (or
803 multiple thereof), as per <ulink url="https://systemd.io/BLOCK_DEVICE_LOCKING">Locking Block Device803 multiple thereof), as per <ulink url="https://systemd.io/BLOCK_DEVICE_LOCKING">Locking Block Device
804 Access</ulink> and invokes a program with the lock(s) taken. When the invoked program exits the lock(s)804 Access</ulink> and invokes a program with the lock(s) taken. When the invoked program exits the lock(s)
805 are automatically released.</para>805 are automatically released and its return value is propagated as exit code of <command>udevadm
806 lock</command>.</para>
806807
807 <para>This tool is in particular useful to ensure that808 <para>This tool is in particular useful to ensure that
808 <citerefentry><refentrytitle>systemd-udevd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>809 <citerefentry><refentrytitle>systemd-udevd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
diff --git a/meson.build b/meson.build
index 36cbfa4..dbba108 100644
--- a/meson.build
+++ b/meson.build
@@ -169,6 +169,7 @@ pkgsysconfdir = sysconfdir / 'systemd'
169userunitdir = prefixdir / 'lib/systemd/user'169userunitdir = prefixdir / 'lib/systemd/user'
170userpresetdir = prefixdir / 'lib/systemd/user-preset'170userpresetdir = prefixdir / 'lib/systemd/user-preset'
171tmpfilesdir = prefixdir / 'lib/tmpfiles.d'171tmpfilesdir = prefixdir / 'lib/tmpfiles.d'
172usertmpfilesdir = prefixdir / 'share/user-tmpfiles.d'
172sysusersdir = prefixdir / 'lib/sysusers.d'173sysusersdir = prefixdir / 'lib/sysusers.d'
173sysctldir = prefixdir / 'lib/sysctl.d'174sysctldir = prefixdir / 'lib/sysctl.d'
174binfmtdir = prefixdir / 'lib/binfmt.d'175binfmtdir = prefixdir / 'lib/binfmt.d'
@@ -278,6 +279,7 @@ conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
278conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)279conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
279conf.set_quoted('SYSUSERS_DIR', sysusersdir)280conf.set_quoted('SYSUSERS_DIR', sysusersdir)
280conf.set_quoted('TMPFILES_DIR', tmpfilesdir)281conf.set_quoted('TMPFILES_DIR', tmpfilesdir)
282conf.set_quoted('USER_TMPFILES_DIR', usertmpfilesdir)
281conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)283conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
282conf.set_quoted('UDEV_HWDB_DIR', udevhwdbdir)284conf.set_quoted('UDEV_HWDB_DIR', udevhwdbdir)
283conf.set_quoted('UDEV_RULES_DIR', udevrulesdir)285conf.set_quoted('UDEV_RULES_DIR', udevrulesdir)
@@ -479,7 +481,6 @@ decl_headers = '''
479#include <uchar.h>481#include <uchar.h>
480#include <sys/mount.h>482#include <sys/mount.h>
481#include <sys/stat.h>483#include <sys/stat.h>
482#include <linux/fs.h>
483'''484'''
484485
485foreach decl : ['char16_t',486foreach decl : ['char16_t',
@@ -491,6 +492,17 @@ foreach decl : ['char16_t',
491 # We get -1 if the size cannot be determined492 # We get -1 if the size cannot be determined
492 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0493 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
493494
495 if decl == 'struct mount_attr'
496 if have
497 want_linux_fs_h = false
498 else
499 have = cc.sizeof(decl,
500 prefix : decl_headers + '#include <linux/fs.h>',
501 args : '-D_GNU_SOURCE') > 0
502 want_linux_fs_h = have
503 endif
504 endif
505
494 if decl == 'struct statx'506 if decl == 'struct statx'
495 if have507 if have
496 want_linux_stat_h = false508 want_linux_stat_h = false
@@ -506,6 +518,7 @@ foreach decl : ['char16_t',
506endforeach518endforeach
507519
508conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)520conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
521conf.set10('WANT_LINUX_FS_H', want_linux_fs_h)
509522
510foreach ident : ['secure_getenv', '__secure_getenv']523foreach ident : ['secure_getenv', '__secure_getenv']
511 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))524 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
@@ -2171,7 +2184,7 @@ public_programs += executable(
2171 dependencies : [versiondep,2184 dependencies : [versiondep,
2172 libseccomp],2185 libseccomp],
2173 install_rpath : rootlibexecdir,2186 install_rpath : rootlibexecdir,
2174 install : conf.get('ENABLE_ANALYZE'))2187 install : conf.get('ENABLE_ANALYZE') == 1)
21752188
2176executable(2189executable(
2177 'systemd-journald',2190 'systemd-journald',
diff --git a/src/analyze/analyze-security.c b/src/analyze/analyze-security.c
index 5b4d4ca..9255f4c 100644
--- a/src/analyze/analyze-security.c
+++ b/src/analyze/analyze-security.c
@@ -105,7 +105,7 @@ typedef struct SecurityInfo {
105 Set *system_call_architectures;105 Set *system_call_architectures;
106106
107 bool system_call_filter_allow_list;107 bool system_call_filter_allow_list;
108 Hashmap *system_call_filter;108 Set *system_call_filter;
109109
110 mode_t _umask;110 mode_t _umask;
111} SecurityInfo;111} SecurityInfo;
@@ -172,8 +172,7 @@ static SecurityInfo *security_info_free(SecurityInfo *i) {
172172
173 strv_free(i->supplementary_groups);173 strv_free(i->supplementary_groups);
174 set_free(i->system_call_architectures);174 set_free(i->system_call_architectures);
175175 set_free(i->system_call_filter);
176 hashmap_free(i->system_call_filter);
177176
178 return mfree(i);177 return mfree(i);
179}178}
@@ -567,12 +566,10 @@ static int assess_system_call_architectures(
567 return 0;566 return 0;
568}567}
569568
570static bool syscall_names_in_filter(Hashmap *s, bool allow_list, const SyscallFilterSet *f, const char **ret_offending_syscall) {569static bool syscall_names_in_filter(Set *s, bool allow_list, const SyscallFilterSet *f, const char **ret_offending_syscall) {
571 const char *syscall;570 const char *syscall;
572571
573 NULSTR_FOREACH(syscall, f->value) {572 NULSTR_FOREACH(syscall, f->value) {
574 int id;
575
576 if (syscall[0] == '@') {573 if (syscall[0] == '@') {
577 const SyscallFilterSet *g;574 const SyscallFilterSet *g;
578575
@@ -584,11 +581,10 @@ static bool syscall_names_in_filter(Hashmap *s, bool allow_list, const SyscallFi
584 }581 }
585582
586 /* Let's see if the system call actually exists on this platform, before complaining */583 /* Let's see if the system call actually exists on this platform, before complaining */
587 id = seccomp_syscall_resolve_name(syscall);584 if (seccomp_syscall_resolve_name(syscall) < 0)
588 if (id < 0)
589 continue;585 continue;
590586
591 if (hashmap_contains(s, syscall) != allow_list) {587 if (set_contains(s, syscall) == allow_list) {
592 log_debug("Offending syscall filter item: %s", syscall);588 log_debug("Offending syscall filter item: %s", syscall);
593 if (ret_offending_syscall)589 if (ret_offending_syscall)
594 *ret_offending_syscall = syscall;590 *ret_offending_syscall = syscall;
@@ -619,7 +615,7 @@ static int assess_system_call_filter(
619 uint64_t b;615 uint64_t b;
620 int r;616 int r;
621617
622 if (!info->system_call_filter_allow_list && hashmap_isempty(info->system_call_filter)) {618 if (!info->system_call_filter_allow_list && set_isempty(info->system_call_filter)) {
623 r = free_and_strdup(&d, "Service does not filter system calls");619 r = free_and_strdup(&d, "Service does not filter system calls");
624 b = 10;620 b = 10;
625 } else {621 } else {
@@ -2139,9 +2135,8 @@ static int property_read_system_call_filter(
2139 if (r == 0)2135 if (r == 0)
2140 break;2136 break;
21412137
2142 /* The actual ExecContext stores the system call id as the map value, which we don't2138 /* ignore errno or action after colon */
2143 * need. So we assign NULL to all values here. */2139 r = set_put_strndup(&info->system_call_filter, name, strchrnul(name, ':') - name);
2144 r = hashmap_put_strdup(&info->system_call_filter, name, NULL);
2145 if (r < 0)2140 if (r < 0)
2146 return r;2141 return r;
2147 }2142 }
@@ -2589,14 +2584,24 @@ static int get_security_info(Unit *u, ExecContext *c, CGroupContext *g, Security
2589 if (set_put_strdup(&info->system_call_architectures, name) < 0)2584 if (set_put_strdup(&info->system_call_architectures, name) < 0)
2590 return log_oom();2585 return log_oom();
2591 }2586 }
2592#endif
25932587
2594 info->system_call_filter_allow_list = c->syscall_allow_list;2588 info->system_call_filter_allow_list = c->syscall_allow_list;
2595 if (c->syscall_filter) {2589
2596 info->system_call_filter = hashmap_copy(c->syscall_filter);2590 void *id, *num;
2597 if (!info->system_call_filter)2591 HASHMAP_FOREACH_KEY(num, id, c->syscall_filter) {
2592 _cleanup_free_ char *name = NULL;
2593
2594 if (info->system_call_filter_allow_list && PTR_TO_INT(num) >= 0)
2595 continue;
2596
2597 name = seccomp_syscall_resolve_num_arch(SCMP_ARCH_NATIVE, PTR_TO_INT(id) - 1);
2598 if (!name)
2599 continue;
2600
2601 if (set_ensure_consume(&info->system_call_filter, &string_hash_ops_free, TAKE_PTR(name)) < 0)
2598 return log_oom();2602 return log_oom();
2599 }2603 }
2604#endif
2600 }2605 }
26012606
2602 if (g) {2607 if (g) {
diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c
index 6c1de92..00591d6 100644
--- a/src/basic/fd-util.c
+++ b/src/basic/fd-util.c
@@ -3,7 +3,9 @@
3#include <errno.h>3#include <errno.h>
4#include <fcntl.h>4#include <fcntl.h>
5#include <linux/btrfs.h>5#include <linux/btrfs.h>
6#if WANT_LINUX_FS_H
6#include <linux/fs.h>7#include <linux/fs.h>
8#endif
7#include <linux/magic.h>9#include <linux/magic.h>
8#include <sys/ioctl.h>10#include <sys/ioctl.h>
9#include <sys/resource.h>11#include <sys/resource.h>
diff --git a/src/basic/gcrypt-util.c b/src/basic/gcrypt-util.c
index 64c63cd..41c9362 100644
--- a/src/basic/gcrypt-util.c
+++ b/src/basic/gcrypt-util.c
@@ -9,12 +9,14 @@ void initialize_libgcrypt(bool secmem) {
9 if (gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P))9 if (gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P))
10 return;10 return;
1111
12 gcry_control(GCRYCTL_SET_PREFERRED_RNG_TYPE, GCRY_RNG_TYPE_SYSTEM);
12 assert_se(gcry_check_version("1.4.5"));13 assert_se(gcry_check_version("1.4.5"));
1314
14 /* Turn off "secmem". Clients which wish to make use of this15 /* Turn off "secmem". Clients which wish to make use of this
15 * feature should initialize the library manually */16 * feature should initialize the library manually */
16 if (!secmem)17 if (!secmem)
17 gcry_control(GCRYCTL_DISABLE_SECMEM);18 gcry_control(GCRYCTL_DISABLE_SECMEM);
19
18 gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);20 gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
19}21}
2022
diff --git a/src/basic/hashmap.c b/src/basic/hashmap.c
index e33d6c3..62380b0 100644
--- a/src/basic/hashmap.c
+++ b/src/basic/hashmap.c
@@ -1842,7 +1842,7 @@ int _hashmap_put_strdup_full(Hashmap **h, const struct hash_ops *hash_ops, const
1842 return r;1842 return r;
1843}1843}
18441844
1845int _set_put_strdup_full(Set **s, const struct hash_ops *hash_ops, const char *p HASHMAP_DEBUG_PARAMS) {1845int _set_put_strndup_full(Set **s, const struct hash_ops *hash_ops, const char *p, size_t n HASHMAP_DEBUG_PARAMS) {
1846 char *c;1846 char *c;
1847 int r;1847 int r;
18481848
@@ -1853,10 +1853,13 @@ int _set_put_strdup_full(Set **s, const struct hash_ops *hash_ops, const char *p
1853 if (r < 0)1853 if (r < 0)
1854 return r;1854 return r;
18551855
1856 if (set_contains(*s, (char*) p))1856 if (n == SIZE_MAX) {
1857 return 0;1857 if (set_contains(*s, (char*) p))
1858 return 0;
18581859
1859 c = strdup(p);1860 c = strdup(p);
1861 } else
1862 c = strndup(p, n);
1860 if (!c)1863 if (!c)
1861 return -ENOMEM;1864 return -ENOMEM;
18621865
@@ -1869,7 +1872,7 @@ int _set_put_strdupv_full(Set **s, const struct hash_ops *hash_ops, char **l HA
1869 assert(s);1872 assert(s);
18701873
1871 STRV_FOREACH(i, l) {1874 STRV_FOREACH(i, l) {
1872 r = _set_put_strdup_full(s, hash_ops, *i HASHMAP_DEBUG_PASS_ARGS);1875 r = _set_put_strndup_full(s, hash_ops, *i, SIZE_MAX HASHMAP_DEBUG_PASS_ARGS);
1873 if (r < 0)1876 if (r < 0)
1874 return r;1877 return r;
18751878
diff --git a/src/basic/missing_fs.h b/src/basic/missing_fs.h
index 0cacd49..6638d76 100644
--- a/src/basic/missing_fs.h
+++ b/src/basic/missing_fs.h
@@ -64,3 +64,8 @@
64#ifndef FS_PROJINHERIT_FL64#ifndef FS_PROJINHERIT_FL
65#define FS_PROJINHERIT_FL 0x2000000065#define FS_PROJINHERIT_FL 0x20000000
66#endif66#endif
67
68/* linux/fscrypt.h */
69#ifndef FS_KEY_DESCRIPTOR_SIZE
70#define FS_KEY_DESCRIPTOR_SIZE 8
71#endif
diff --git a/src/basic/set.h b/src/basic/set.h
index 243a747..52cf63e 100644
--- a/src/basic/set.h
+++ b/src/basic/set.h
@@ -127,9 +127,12 @@ int _set_ensure_consume(Set **s, const struct hash_ops *hash_ops, void *key HAS
127127
128int set_consume(Set *s, void *value);128int set_consume(Set *s, void *value);
129129
130int _set_put_strdup_full(Set **s, const struct hash_ops *hash_ops, const char *p HASHMAP_DEBUG_PARAMS);130int _set_put_strndup_full(Set **s, const struct hash_ops *hash_ops, const char *p, size_t n HASHMAP_DEBUG_PARAMS);
131#define set_put_strdup_full(s, hash_ops, p) _set_put_strdup_full(s, hash_ops, p HASHMAP_DEBUG_SRC_ARGS)131#define set_put_strndup_full(s, hash_ops, p, n) _set_put_strndup_full(s, hash_ops, p, n HASHMAP_DEBUG_SRC_ARGS)
132#define set_put_strdup(s, p) set_put_strdup_full(s, &string_hash_ops_free, p)132#define set_put_strdup_full(s, hash_ops, p) set_put_strndup_full(s, hash_ops, p, SIZE_MAX)
133#define set_put_strndup(s, p, n) set_put_strndup_full(s, &string_hash_ops_free, p, n)
134#define set_put_strdup(s, p) set_put_strndup(s, p, SIZE_MAX)
135
133int _set_put_strdupv_full(Set **s, const struct hash_ops *hash_ops, char **l HASHMAP_DEBUG_PARAMS);136int _set_put_strdupv_full(Set **s, const struct hash_ops *hash_ops, char **l HASHMAP_DEBUG_PARAMS);
134#define set_put_strdupv_full(s, hash_ops, l) _set_put_strdupv_full(s, hash_ops, l HASHMAP_DEBUG_SRC_ARGS)137#define set_put_strdupv_full(s, hash_ops, l) _set_put_strdupv_full(s, hash_ops, l HASHMAP_DEBUG_SRC_ARGS)
135#define set_put_strdupv(s, l) set_put_strdupv_full(s, &string_hash_ops_free, l)138#define set_put_strdupv(s, l) set_put_strdupv_full(s, &string_hash_ops_free, l)
diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c
index 64c2f80..c31b4d8 100644
--- a/src/basic/stat-util.c
+++ b/src/basic/stat-util.c
@@ -35,31 +35,23 @@ int is_symlink(const char *path) {
35 return !!S_ISLNK(info.st_mode);35 return !!S_ISLNK(info.st_mode);
36}36}
3737
38int is_dir(const char* path, bool follow) {38int is_dir_full(int atfd, const char* path, bool follow) {
39 struct stat st;39 struct stat st;
40 int r;40 int r;
4141
42 assert(path);42 assert(atfd >= 0 || atfd == AT_FDCWD);
43 assert(atfd >= 0 || path);
4344
44 if (follow)45 if (path)
45 r = stat(path, &st);46 r = fstatat(atfd, path, &st, follow ? 0 : AT_SYMLINK_NOFOLLOW);
46 else47 else
47 r = lstat(path, &st);48 r = fstat(atfd, &st);
48 if (r < 0)49 if (r < 0)
49 return -errno;50 return -errno;
5051
51 return !!S_ISDIR(st.st_mode);52 return !!S_ISDIR(st.st_mode);
52}53}
5354
54int is_dir_fd(int fd) {
55 struct stat st;
56
57 if (fstat(fd, &st) < 0)
58 return -errno;
59
60 return !!S_ISDIR(st.st_mode);
61}
62
63int is_device_node(const char *path) {55int is_device_node(const char *path) {
64 struct stat info;56 struct stat info;
6557
diff --git a/src/basic/stat-util.h b/src/basic/stat-util.h
index 7f0b3dc..56f1553 100644
--- a/src/basic/stat-util.h
+++ b/src/basic/stat-util.h
@@ -13,8 +13,13 @@
13#include "missing_stat.h"13#include "missing_stat.h"
1414
15int is_symlink(const char *path);15int is_symlink(const char *path);
16int is_dir(const char *path, bool follow);16int is_dir_full(int atfd, const char *fname, bool follow);
17int is_dir_fd(int fd);17static inline int is_dir(const char *path, bool follow) {
18 return is_dir_full(AT_FDCWD, path, follow);
19}
20static inline int is_dir_fd(int fd) {
21 return is_dir_full(fd, NULL, false);
22}
18int is_device_node(const char *path);23int is_device_node(const char *path);
1924
20int dir_is_empty_at(int dir_fd, const char *path, bool ignore_hidden_or_backup);25int dir_is_empty_at(int dir_fd, const char *path, bool ignore_hidden_or_backup);
diff --git a/src/basic/time-util.c b/src/basic/time-util.c
index c309369..0ad8de4 100644
--- a/src/basic/time-util.c
+++ b/src/basic/time-util.c
@@ -591,7 +591,7 @@ char *format_timespan(char *buf, size_t l, usec_t t, usec_t accuracy) {
591 t = b;591 t = b;
592 }592 }
593593
594 n = MIN((size_t) k, l);594 n = MIN((size_t) k, l-1);
595595
596 l -= n;596 l -= n;
597 p += n;597 p += n;
diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c
index 83c29bb..bfe8c02 100644
--- a/src/basic/unit-file.c
+++ b/src/basic/unit-file.c
@@ -695,12 +695,9 @@ static int add_names(
695 continue;695 continue;
696 }696 }
697697
698 r = set_consume(*names, TAKE_PTR(inst));698 r = add_name(unit_name, names, inst);
699 if (r > 0)
700 log_debug("Unit %s has alias %s.", unit_name, inst);
701 } else699 } else
702 r = add_name(unit_name, names, *alias);700 r = add_name(unit_name, names, *alias);
703
704 if (r < 0)701 if (r < 0)
705 return r;702 return r;
706 }703 }
diff --git a/src/basic/virt.c b/src/basic/virt.c
index c7ae2af..74e4ea8 100644
--- a/src/basic/virt.c
+++ b/src/basic/virt.c
@@ -158,6 +158,7 @@ static Virtualization detect_vm_dmi_vendor(void) {
158 } dmi_vendor_table[] = {158 } dmi_vendor_table[] = {
159 { "KVM", VIRTUALIZATION_KVM },159 { "KVM", VIRTUALIZATION_KVM },
160 { "OpenStack", VIRTUALIZATION_KVM }, /* Detect OpenStack instance as KVM in non x86 architecture */160 { "OpenStack", VIRTUALIZATION_KVM }, /* Detect OpenStack instance as KVM in non x86 architecture */
161 { "KubeVirt", VIRTUALIZATION_KVM }, /* Detect KubeVirt instance as KVM in non x86 architecture */
161 { "Amazon EC2", VIRTUALIZATION_AMAZON },162 { "Amazon EC2", VIRTUALIZATION_AMAZON },
162 { "QEMU", VIRTUALIZATION_QEMU },163 { "QEMU", VIRTUALIZATION_QEMU },
163 { "VMware", VIRTUALIZATION_VMWARE }, /* https://kb.vmware.com/s/article/1009458 */164 { "VMware", VIRTUALIZATION_VMWARE }, /* https://kb.vmware.com/s/article/1009458 */
@@ -436,18 +437,22 @@ Virtualization detect_vm(void) {
436437
437 /* We have to use the correct order here:438 /* We have to use the correct order here:
438 *439 *
439 * → First, try to detect Oracle Virtualbox and Amazon EC2 Nitro, even if they use KVM, as well as Xen even if440 * → First, try to detect Oracle Virtualbox, Amazon EC2 Nitro, and Parallels, even if they use KVM,
440 * it cloaks as Microsoft Hyper-V. Attempt to detect uml at this stage also since it runs as a user-process441 * as well as Xen even if it cloaks as Microsoft Hyper-V. Attempt to detect uml at this stage also
441 * nested inside other VMs. Also check for Xen now, because Xen PV mode does not override CPUID when nested442 * since it runs as a user-process nested inside other VMs. Also check for Xen now, because Xen PV
442 * inside another hypervisor.443 * mode does not override CPUID when nested inside another hypervisor.
443 *444 *
444 * → Second, try to detect from CPUID, this will report KVM for whatever software is used even if info in DMI is445 * → Second, try to detect from CPUID, this will report KVM for whatever software is used even if
445 * overwritten.446 * info in DMI is overwritten.
446 *447 *
447 * → Third, try to detect from DMI. */448 * → Third, try to detect from DMI. */
448449
449 dmi = detect_vm_dmi();450 dmi = detect_vm_dmi();
450 if (IN_SET(dmi, VIRTUALIZATION_ORACLE, VIRTUALIZATION_XEN, VIRTUALIZATION_AMAZON)) {451 if (IN_SET(dmi,
452 VIRTUALIZATION_ORACLE,
453 VIRTUALIZATION_XEN,
454 VIRTUALIZATION_AMAZON,
455 VIRTUALIZATION_PARALLELS)) {
451 v = dmi;456 v = dmi;
452 goto finish;457 goto finish;
453 }458 }
diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
index 299a01b..370ae97 100644
--- a/src/boot/efi/meson.build
+++ b/src/boot/efi/meson.build
@@ -200,6 +200,12 @@ efi_cflags = cc.get_supported_arguments(
200 '-include', version_h,200 '-include', version_h,
201]201]
202202
203# On some distros, sd-boot/-stub may trigger some bug somewhere that will cause
204# kernel execution to fail. The cause seems to be purely based on code size and
205# always compiling with at least -O1 will work around that.
206# https://github.com/systemd/systemd/issues/24202
207efi_cflags += '-O1'
208
203efi_cflags += cc.get_supported_arguments({209efi_cflags += cc.get_supported_arguments({
204 'ia32': ['-mno-sse', '-mno-mmx'],210 'ia32': ['-mno-sse', '-mno-mmx'],
205 'x86_64': ['-mno-red-zone', '-mno-sse', '-mno-mmx'],211 'x86_64': ['-mno-red-zone', '-mno-sse', '-mno-mmx'],
@@ -260,6 +266,13 @@ efi_ldflags = [
260 '-z', 'nocombreloc',266 '-z', 'nocombreloc',
261 efi_crt0,267 efi_crt0,
262]268]
269
270possible_link_flags = [
271 '-Wl,--no-warn-execstack',
272 '-Wl,--no-warn-rwx-segments',
273]
274efi_ldflags += cc.get_supported_link_arguments(possible_link_flags)
275
263if efi_arch[1] in ['aarch64', 'arm', 'riscv64']276if efi_arch[1] in ['aarch64', 'arm', 'riscv64']
264 efi_ldflags += ['-shared']277 efi_ldflags += ['-shared']
265 # Aarch64, ARM32 and 64bit RISC-V don't have an EFI capable objcopy.278 # Aarch64, ARM32 and 64bit RISC-V don't have an EFI capable objcopy.
diff --git a/src/boot/efi/xbootldr.c b/src/boot/efi/xbootldr.c
index 793e394..f73b5ee 100644
--- a/src/boot/efi/xbootldr.c
+++ b/src/boot/efi/xbootldr.c
@@ -35,7 +35,7 @@ static BOOLEAN verify_gpt(union GptHeaderBuffer *gpt_header_buffer, EFI_LBA lba_
35 h = &gpt_header_buffer->gpt_header;35 h = &gpt_header_buffer->gpt_header;
3636
37 /* Some superficial validation of the GPT header */37 /* Some superficial validation of the GPT header */
38 if (CompareMem(&h->Header.Signature, "EFI PART", sizeof(h->Header.Signature) != 0))38 if (CompareMem(&h->Header.Signature, "EFI PART", sizeof(h->Header.Signature)) != 0)
39 return FALSE;39 return FALSE;
4040
41 if (h->Header.HeaderSize < 92 || h->Header.HeaderSize > 512)41 if (h->Header.HeaderSize < 92 || h->Header.HeaderSize > 512)
diff --git a/src/cgroups-agent/cgroups-agent.c b/src/cgroups-agent/cgroups-agent.c
index 071cba3..9126736 100644
--- a/src/cgroups-agent/cgroups-agent.c
+++ b/src/cgroups-agent/cgroups-agent.c
@@ -16,6 +16,13 @@ int main(int argc, char *argv[]) {
16 _cleanup_close_ int fd = -1;16 _cleanup_close_ int fd = -1;
17 ssize_t n;17 ssize_t n;
18 size_t l;18 size_t l;
19 int r;
20
21 r = rearrange_stdio(-1, -1, -1);
22 if (r < 0) {
23 log_error_errno(r, "Failed to connect stdin/stdout/stderr with /dev/null: %m");
24 return EXIT_FAILURE;
25 }
1926
20 if (argc != 2) {27 if (argc != 2) {
21 log_error("Incorrect number of arguments.");28 log_error("Incorrect number of arguments.");
diff --git a/src/core/bpf/restrict_ifaces/restrict-ifaces.bpf.c b/src/core/bpf/restrict_ifaces/restrict-ifaces.bpf.c
index 347a3a8..6c960b8 100644
--- a/src/core/bpf/restrict_ifaces/restrict-ifaces.bpf.c
+++ b/src/core/bpf/restrict_ifaces/restrict-ifaces.bpf.c
@@ -6,7 +6,7 @@
6#include <linux/bpf.h>6#include <linux/bpf.h>
7#include <bpf/bpf_helpers.h>7#include <bpf/bpf_helpers.h>
88
9const volatile __u8 is_allow_list = 0;9const volatile __u8 is_allow_list SEC(".rodata") = 0;
1010
11/* Map containing the network interfaces indexes.11/* Map containing the network interfaces indexes.
12 * The interpretation of the map depends on the value of is_allow_list.12 * The interpretation of the map depends on the value of is_allow_list.
diff --git a/src/core/dbus.c b/src/core/dbus.c
index 073675c..ad2230d 100644
--- a/src/core/dbus.c
+++ b/src/core/dbus.c
@@ -42,6 +42,7 @@
42#include "string-util.h"42#include "string-util.h"
43#include "strv.h"43#include "strv.h"
44#include "strxcpyx.h"44#include "strxcpyx.h"
45#include "umask-util.h"
45#include "user-util.h"46#include "user-util.h"
4647
47#define CONNECTIONS_MAX 409648#define CONNECTIONS_MAX 4096
@@ -950,7 +951,8 @@ int bus_init_private(Manager *m) {
950 if (fd < 0)951 if (fd < 0)
951 return log_error_errno(errno, "Failed to allocate private socket: %m");952 return log_error_errno(errno, "Failed to allocate private socket: %m");
952953
953 r = bind(fd, &sa.sa, sa_len);954 RUN_WITH_UMASK(0077)
955 r = bind(fd, &sa.sa, sa_len);
954 if (r < 0)956 if (r < 0)
955 return log_error_errno(errno, "Failed to bind private socket: %m");957 return log_error_errno(errno, "Failed to bind private socket: %m");
956958
diff --git a/src/core/import-creds.c b/src/core/import-creds.c
index 8b87434..5379648 100644
--- a/src/core/import-creds.c
+++ b/src/core/import-creds.c
@@ -226,7 +226,7 @@ static int import_credentials_boot(void) {
226 if (nfd == -EEXIST)226 if (nfd == -EEXIST)
227 continue;227 continue;
228 if (nfd < 0)228 if (nfd < 0)
229 return r;229 return nfd;
230230
231 r = copy_bytes(cfd, nfd, st.st_size, 0);231 r = copy_bytes(cfd, nfd, st.st_size, 0);
232 if (r < 0) {232 if (r < 0) {
@@ -325,7 +325,7 @@ static int proc_cmdline_callback(const char *key, const char *value, void *data)
325 if (nfd == -EEXIST)325 if (nfd == -EEXIST)
326 return 0;326 return 0;
327 if (nfd < 0)327 if (nfd < 0)
328 return r;328 return nfd;
329329
330 r = loop_write(nfd, colon, l, /* do_poll= */ false);330 r = loop_write(nfd, colon, l, /* do_poll= */ false);
331 if (r < 0) {331 if (r < 0) {
@@ -417,7 +417,7 @@ static int import_credentials_qemu(ImportCredentialContext *c) {
417417
418 rfd = openat(vfd, "raw", O_RDONLY|O_CLOEXEC);418 rfd = openat(vfd, "raw", O_RDONLY|O_CLOEXEC);
419 if (rfd < 0) {419 if (rfd < 0) {
420 log_warning_errno(r, "Failed to open '" QEMU_FWCFG_PATH "'/%s/raw, ignoring: %m", d->d_name);420 log_warning_errno(errno, "Failed to open '" QEMU_FWCFG_PATH "'/%s/raw, ignoring: %m", d->d_name);
421 continue;421 continue;
422 }422 }
423423
@@ -429,7 +429,7 @@ static int import_credentials_qemu(ImportCredentialContext *c) {
429 if (nfd == -EEXIST)429 if (nfd == -EEXIST)
430 continue;430 continue;
431 if (nfd < 0)431 if (nfd < 0)
432 return r;432 return nfd;
433433
434 r = copy_bytes(rfd, nfd, sz, 0);434 r = copy_bytes(rfd, nfd, sz, 0);
435 if (r < 0) {435 if (r < 0) {
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
index 3ff6eae..11991ec 100644
--- a/src/core/load-fragment.c
+++ b/src/core/load-fragment.c
@@ -4211,11 +4211,16 @@ int config_parse_io_device_weight(
4211 r = extract_first_word(&p, &path, NULL, EXTRACT_UNQUOTE);4211 r = extract_first_word(&p, &path, NULL, EXTRACT_UNQUOTE);
4212 if (r == -ENOMEM)4212 if (r == -ENOMEM)
4213 return log_oom();4213 return log_oom();
4214 if (r <= 0 || isempty(p)) {4214 if (r < 0) {
4215 log_syntax(unit, LOG_WARNING, filename, line, r,4215 log_syntax(unit, LOG_WARNING, filename, line, r,
4216 "Failed to extract device path and weight from '%s', ignoring.", rvalue);4216 "Failed to extract device path and weight from '%s', ignoring.", rvalue);
4217 return 0;4217 return 0;
4218 }4218 }
4219 if (r == 0 || isempty(p)) {
4220 log_syntax(unit, LOG_WARNING, filename, line, 0,
4221 "Invalid device path or weight specified in '%s', ignoring.", rvalue);
4222 return 0;
4223 }
42194224
4220 r = unit_path_printf(userdata, path, &resolved);4225 r = unit_path_printf(userdata, path, &resolved);
4221 if (r < 0) {4226 if (r < 0) {
@@ -4280,11 +4285,16 @@ int config_parse_io_device_latency(
4280 r = extract_first_word(&p, &path, NULL, EXTRACT_UNQUOTE);4285 r = extract_first_word(&p, &path, NULL, EXTRACT_UNQUOTE);
4281 if (r == -ENOMEM)4286 if (r == -ENOMEM)
4282 return log_oom();4287 return log_oom();
4283 if (r <= 0 || isempty(p)) {4288 if (r < 0) {
4284 log_syntax(unit, LOG_WARNING, filename, line, r,4289 log_syntax(unit, LOG_WARNING, filename, line, r,
4285 "Failed to extract device path and latency from '%s', ignoring.", rvalue);4290 "Failed to extract device path and latency from '%s', ignoring.", rvalue);
4286 return 0;4291 return 0;
4287 }4292 }
4293 if (r == 0 || isempty(p)) {
4294 log_syntax(unit, LOG_WARNING, filename, line, 0,
4295 "Invalid device path or latency specified in '%s', ignoring.", rvalue);
4296 return 0;
4297 }
42884298
4289 r = unit_path_printf(userdata, path, &resolved);4299 r = unit_path_printf(userdata, path, &resolved);
4290 if (r < 0) {4300 if (r < 0) {
@@ -4350,11 +4360,16 @@ int config_parse_io_limit(
4350 r = extract_first_word(&p, &path, NULL, EXTRACT_UNQUOTE);4360 r = extract_first_word(&p, &path, NULL, EXTRACT_UNQUOTE);
4351 if (r == -ENOMEM)4361 if (r == -ENOMEM)
4352 return log_oom();4362 return log_oom();
4353 if (r <= 0 || isempty(p)) {4363 if (r < 0) {
4354 log_syntax(unit, LOG_WARNING, filename, line, r,4364 log_syntax(unit, LOG_WARNING, filename, line, r,
4355 "Failed to extract device node and bandwidth from '%s', ignoring.", rvalue);4365 "Failed to extract device node and bandwidth from '%s', ignoring.", rvalue);
4356 return 0;4366 return 0;
4357 }4367 }
4368 if (r == 0 || isempty(p)) {
4369 log_syntax(unit, LOG_WARNING, filename, line, 0,
4370 "Invalid device node or bandwidth specified in '%s', ignoring.", rvalue);
4371 return 0;
4372 }
43584373
4359 r = unit_path_printf(userdata, path, &resolved);4374 r = unit_path_printf(userdata, path, &resolved);
4360 if (r < 0) {4375 if (r < 0) {
@@ -4435,11 +4450,16 @@ int config_parse_blockio_device_weight(
4435 r = extract_first_word(&p, &path, NULL, EXTRACT_UNQUOTE);4450 r = extract_first_word(&p, &path, NULL, EXTRACT_UNQUOTE);
4436 if (r == -ENOMEM)4451 if (r == -ENOMEM)
4437 return log_oom();4452 return log_oom();
4438 if (r <= 0 || isempty(p)) {4453 if (r < 0) {
4439 log_syntax(unit, LOG_WARNING, filename, line, r,4454 log_syntax(unit, LOG_WARNING, filename, line, r,
4440 "Failed to extract device node and weight from '%s', ignoring.", rvalue);4455 "Failed to extract device node and weight from '%s', ignoring.", rvalue);
4441 return 0;4456 return 0;
4442 }4457 }
4458 if (r == 0 || isempty(p)) {
4459 log_syntax(unit, LOG_WARNING, filename, line, 0,
4460 "Invalid device node or weight specified in '%s', ignoring.", rvalue);
4461 return 0;
4462 }
44434463
4444 r = unit_path_printf(userdata, path, &resolved);4464 r = unit_path_printf(userdata, path, &resolved);
4445 if (r < 0) {4465 if (r < 0) {
@@ -4508,11 +4528,16 @@ int config_parse_blockio_bandwidth(
4508 r = extract_first_word(&p, &path, NULL, EXTRACT_UNQUOTE);4528 r = extract_first_word(&p, &path, NULL, EXTRACT_UNQUOTE);
4509 if (r == -ENOMEM)4529 if (r == -ENOMEM)
4510 return log_oom();4530 return log_oom();
4511 if (r <= 0 || isempty(p)) {4531 if (r < 0) {
4512 log_syntax(unit, LOG_WARNING, filename, line, r,4532 log_syntax(unit, LOG_WARNING, filename, line, r,
4513 "Failed to extract device node and bandwidth from '%s', ignoring.", rvalue);4533 "Failed to extract device node and bandwidth from '%s', ignoring.", rvalue);
4514 return 0;4534 return 0;
4515 }4535 }
4536 if (r == 0 || isempty(p)) {
4537 log_syntax(unit, LOG_WARNING, filename, line, 0,
4538 "Invalid device node or bandwidth specified in '%s', ignoring.", rvalue);
4539 return 0;
4540 }
45164541
4517 r = unit_path_printf(userdata, path, &resolved);4542 r = unit_path_printf(userdata, path, &resolved);
4518 if (r < 0) {4543 if (r < 0) {
@@ -4728,8 +4753,12 @@ int config_parse_set_credential(
4728 r = extract_first_word(&p, &word, ":", EXTRACT_DONT_COALESCE_SEPARATORS);4753 r = extract_first_word(&p, &word, ":", EXTRACT_DONT_COALESCE_SEPARATORS);
4729 if (r == -ENOMEM)4754 if (r == -ENOMEM)
4730 return log_oom();4755 return log_oom();
4731 if (r <= 0 || !p) {4756 if (r < 0) {
4732 log_syntax(unit, LOG_WARNING, filename, line, r, "Invalid syntax, ignoring: %s", rvalue);4757 log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to extract credential name, ignoring: %s", rvalue);
4758 return 0;
4759 }
4760 if (r == 0 || isempty(p)) {
4761 log_syntax(unit, LOG_WARNING, filename, line, 0, "Invalid syntax, ignoring: %s", rvalue);
4733 return 0;4762 return 0;
4734 }4763 }
47354764
@@ -5208,7 +5237,7 @@ int config_parse_bind_paths(
5208 if (r == -ENOMEM)5237 if (r == -ENOMEM)
5209 return log_oom();5238 return log_oom();
5210 if (r < 0) {5239 if (r < 0) {
5211 log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to parse %s: %s", lvalue, rvalue);5240 log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to parse %s=, ignoring: %s", lvalue, rvalue);
5212 return 0;5241 return 0;
5213 }5242 }
52145243
@@ -5858,6 +5887,7 @@ int config_parse_bpf_foreign_program(
5858 void *userdata) {5887 void *userdata) {
5859 _cleanup_free_ char *resolved = NULL, *word = NULL;5888 _cleanup_free_ char *resolved = NULL, *word = NULL;
5860 CGroupContext *c = data;5889 CGroupContext *c = data;
5890 const char *p = rvalue;
5861 Unit *u = userdata;5891 Unit *u = userdata;
5862 int attach_type, r;5892 int attach_type, r;
58635893
@@ -5872,13 +5902,17 @@ int config_parse_bpf_foreign_program(
5872 return 0;5902 return 0;
5873 }5903 }
58745904
5875 r = extract_first_word(&rvalue, &word, ":", 0);5905 r = extract_first_word(&p, &word, ":", 0);
5876 if (r == -ENOMEM)5906 if (r == -ENOMEM)
5877 return log_oom();5907 return log_oom();
5878 if (r <= 0 || isempty(rvalue)) {5908 if (r < 0) {
5879 log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to parse foreign BPF program, ignoring: %s", rvalue);5909 log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to parse foreign BPF program, ignoring: %s", rvalue);
5880 return 0;5910 return 0;
5881 }5911 }
5912 if (r == 0 || isempty(p)) {
5913 log_syntax(unit, LOG_WARNING, filename, line, 0, "Invalid syntax in %s=, ignoring: %s", lvalue, rvalue);
5914 return 0;
5915 }
58825916
5883 attach_type = bpf_cgroup_attach_type_from_string(word);5917 attach_type = bpf_cgroup_attach_type_from_string(word);
5884 if (attach_type < 0) {5918 if (attach_type < 0) {
@@ -5886,9 +5920,9 @@ int config_parse_bpf_foreign_program(
5886 return 0;5920 return 0;
5887 }5921 }
58885922
5889 r = unit_path_printf(u, rvalue, &resolved);5923 r = unit_path_printf(u, p, &resolved);
5890 if (r < 0) {5924 if (r < 0) {
5891 log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", rvalue);5925 log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %s", p, rvalue);
5892 return 0;5926 return 0;
5893 }5927 }
58945928
diff --git a/src/core/main.c b/src/core/main.c
index 409b84a..69d450a 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -2118,11 +2118,9 @@ static int initialize_runtime(
2118 write_container_id();2118 write_container_id();
2119 }2119 }
21202120
2121 if (arg_watchdog_device) {2121 r = watchdog_set_device(arg_watchdog_device);
2122 r = watchdog_set_device(arg_watchdog_device);2122 if (r < 0)
2123 if (r < 0)2123 log_warning_errno(r, "Failed to set watchdog device to %s, ignoring: %m", arg_watchdog_device);
2124 log_warning_errno(r, "Failed to set watchdog device to %s, ignoring: %m", arg_watchdog_device);
2125 }
2126 } else {2124 } else {
2127 _cleanup_free_ char *p = NULL;2125 _cleanup_free_ char *p = NULL;
21282126
@@ -2377,8 +2375,8 @@ static void reset_arguments(void) {
2377 arg_reboot_watchdog = 10 * USEC_PER_MINUTE;2375 arg_reboot_watchdog = 10 * USEC_PER_MINUTE;
2378 arg_kexec_watchdog = 0;2376 arg_kexec_watchdog = 0;
2379 arg_pretimeout_watchdog = 0;2377 arg_pretimeout_watchdog = 0;
2380 arg_early_core_pattern = NULL;2378 arg_early_core_pattern = mfree(arg_early_core_pattern);
2381 arg_watchdog_device = NULL;2379 arg_watchdog_device = mfree(arg_watchdog_device);
2382 arg_watchdog_pretimeout_governor = mfree(arg_watchdog_pretimeout_governor);2380 arg_watchdog_pretimeout_governor = mfree(arg_watchdog_pretimeout_governor);
23832381
2384 arg_default_environment = strv_free(arg_default_environment);2382 arg_default_environment = strv_free(arg_default_environment);
@@ -2808,6 +2806,11 @@ int main(int argc, char *argv[]) {
2808 /* clear the kernel timestamp, because we are not PID 1 */2806 /* clear the kernel timestamp, because we are not PID 1 */
2809 kernel_timestamp = DUAL_TIMESTAMP_NULL;2807 kernel_timestamp = DUAL_TIMESTAMP_NULL;
28102808
2809 /* Clear ambient capabilities, so services do not inherit them implicitly. Dropping them does
2810 * not affect the permitted and effective sets which are important for the manager itself to
2811 * operate. */
2812 capability_ambient_set_apply(0, /* also_inherit= */ false);
2813
2811 if (mac_selinux_init() < 0) {2814 if (mac_selinux_init() < 0) {
2812 error_message = "Failed to initialize SELinux support";2815 error_message = "Failed to initialize SELinux support";
2813 goto finish;2816 goto finish;
diff --git a/src/core/mount.c b/src/core/mount.c
index 20b4bb6..029f132 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -1029,11 +1029,13 @@ static void mount_enter_mounting(Mount *m) {
1029 if (p && mount_is_bind(p)) {1029 if (p && mount_is_bind(p)) {
1030 r = mkdir_p_label(p->what, m->directory_mode);1030 r = mkdir_p_label(p->what, m->directory_mode);
1031 /* mkdir_p_label() can return -EEXIST if the target path exists and is not a directory - which is1031 /* mkdir_p_label() can return -EEXIST if the target path exists and is not a directory - which is
1032 * totally OK, in case the user wants us to overmount a non-directory inode. */1032 * totally OK, in case the user wants us to overmount a non-directory inode. Also -EROFS can be
1033 if (r < 0 && r != -EEXIST) {1033 * returned on read-only filesystem. Moreover, -EACCES (and also maybe -EPERM?) may be returned
1034 log_unit_error_errno(UNIT(m), r, "Failed to make bind mount source '%s': %m", p->what);1034 * when the path is on NFS. See issue #24120. All such errors will be logged in the debug level. */
1035 goto fail;1035 if (r < 0 && r != -EEXIST)
1036 }1036 log_unit_full_errno(UNIT(m),
1037 (r == -EROFS || ERRNO_IS_PRIVILEGE(r)) ? LOG_DEBUG : LOG_WARNING,
1038 r, "Failed to make bind mount source '%s', ignoring: %m", p->what);
1037 }1039 }
10381040
1039 if (p) {1041 if (p) {
diff --git a/src/core/namespace.c b/src/core/namespace.c
index 926aa96..2eafe43 100644
--- a/src/core/namespace.c
+++ b/src/core/namespace.c
@@ -4,9 +4,12 @@
4#include <linux/loop.h>4#include <linux/loop.h>
5#include <sched.h>5#include <sched.h>
6#include <stdio.h>6#include <stdio.h>
7#include <sys/file.h>
7#include <sys/mount.h>8#include <sys/mount.h>
8#include <unistd.h>9#include <unistd.h>
10#if WANT_LINUX_FS_H
9#include <linux/fs.h>11#include <linux/fs.h>
12#endif
1013
11#include "alloc-util.h"14#include "alloc-util.h"
12#include "base-filesystem.h"15#include "base-filesystem.h"
@@ -928,7 +931,7 @@ static int mount_private_dev(MountEntry *m) {
928931
929 r = label_fix_container(dev, "/dev", 0);932 r = label_fix_container(dev, "/dev", 0);
930 if (r < 0) {933 if (r < 0) {
931 log_debug_errno(errno, "Failed to fix label of '%s' as /dev: %m", dev);934 log_debug_errno(r, "Failed to fix label of '%s' as /dev: %m", dev);
932 goto fail;935 goto fail;
933 }936 }
934937
diff --git a/src/core/scope.c b/src/core/scope.c
index 63d3288..080bb71 100644
--- a/src/core/scope.c
+++ b/src/core/scope.c
@@ -392,7 +392,7 @@ static int scope_start(Unit *u) {
392 return r;392 return r;
393 }393 }
394 if (r == 0) {394 if (r == 0) {
395 log_unit_warning(u, "No PIDs left to attach to the scope's control group, refusing: %m");395 log_unit_warning(u, "No PIDs left to attach to the scope's control group, refusing.");
396 scope_enter_dead(s, SCOPE_FAILURE_RESOURCES);396 scope_enter_dead(s, SCOPE_FAILURE_RESOURCES);
397 return -ECHILD;397 return -ECHILD;
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches