summaryrefslogtreecommitdiffstats
path: root/meson_options.txt (follow)
Commit message (Collapse)AuthorAgeFilesLines
* meson: Remove efi-cc optionJan Janssen2022-01-021-2/+0
| | | | | | | | | | | | | Changing the efi compiler this way doesn't really work. The gnu-efi header checks as well as supported compiler flag checks use the regular cc that meson detects. Changing the compiler this way will end up with bad compiler flags. For the very same reason, this does not work with a cross-compiler without going through proper meson cross-compilation steps either. The proper way to build systemd-boot with a different compiler is to use a different build folder and then just use the proper ninja build target to only build the bootloader/stub.
* meson: move dbus-interfaces-dirYu Watanabe2021-12-281-3/+2
|
* meson: allow specifying a custom "tag" for the private shared libariesZbigniew Jędrzejewski-Szmek2021-12-251-0/+2
| | | | | | | | | | | | | | We have /usr/lib/systemd/libsystemd-{shared,core}-nnn.so. With this path the 'nnn' part can be changed to something different. The idea is that during a package build this will be set to the package version. This way during in-place upgrades with the same major version both the new and old libraries can cooexit. This should fix the issue when systemd programs are called during package upgrades and fail to exec because the expect different symbols in the library they are linked to. This should fix https://bugzilla.redhat.com/show_bug.cgi?id=1906010.
* boot, meson: allow statically linked buildRobert Scheck2021-12-141-0/+3
| | | | | | | | | | Build option "link-boot-shared" to build a statically linked bootctl and systemd-bless-boot by using -Dlink-boot-shared=false on systems with full systemd stack except bootctl and systemd-bless-boot, such as CentOS/RHEL 9.
* meson: Auto detect efi-ldJan Janssen2021-12-111-1/+1
|
* Export D-Bus interfaces to /usr/share/dbus-1/interfacesigo958622021-12-101-0/+3
| | | | | | | | | | | | | | | | | | Pass -Ddbus-interfaces-dir=no to meson to disable export Interfaces from: org.freedesktop.home1 org.freedesktop.hostname1 org.freedesktop.import1 org.freedesktop.locale1 org.freedesktop.LogControl1 org.freedesktop.login1 org.freedesktop.machine1 org.freedesktop.oom1 org.freedesktop.portable1 org.freedesktop.resolve1 org.freedesktop.systemd1 org.freedesktop.timedate1
* Merge pull request #21264 from medhefgo/boot-ltoZbigniew Jędrzejewski-Szmek2021-12-071-1/+3
|\ | | | | sd-boot: LTO support
| * sd-boot: Let the compiler invoke the linker for usJan Janssen2021-11-291-1/+3
| | | | | | | | | | For LTO to work, the linker has to be called with some magic sauce arguments. And the easiest way to get those is to just let the compiler to the job for us.
* | meson: add config setting to select between openssl and gcryptZbigniew Jędrzejewski-Szmek2021-11-301-0/+2
|/ | | | This is not pretty, but it is supposed to be only a temporary measure.
* meson: Default to sbat-distro=autoJan Janssen2021-11-281-1/+1
| | | | | | | | | | Any recent shim will refuse starting an image that does not have an sbat section and will do so with a generic "Security Violation" message. And it is very easy to forget passing -Dsbat-distro=auto to meson when creating a fresh build dir. Adding sbat info when shim is not used or secure boot is disabled does not hurt anyone, so default to auto. This still ensures to not add auto-detected info in case we are cross building.
* meson: allow extra net naming schemes to be defined during configurationZbigniew Jędrzejewski-Szmek2021-09-281-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In upstream, we have a linearly-growing list of net-naming-scheme defines; we add a new one for every release where we make user-visible changes to the naming scheme. But the general idea was that downstream distributions could define their own combinations (or even just their own names for existing combinations), so provide stability for their users. So far this required patching of the netif-naming-scheme.c and .h files to add the new lines. With this patch, patching is not required: $ meson configure build \ -Dextra-net-naming-schemes=gargoyle=v238+npar_ari+allow_rerenames,gargoyle2=gargoyle+nspawn_long_hash \ -Ddefault-net-naming-scheme=gargoyle2 or even $ meson configure build \ -Dextra-net-naming-schemes=gargoyle=v238+npar_ari+allow_rerenames,gargoyle2=gargoyle+nspawn_long_hash,latest=v249 \ -Ddefault-net-naming-scheme=gargoyle2 The syntax is a comma-separated list of NAME=name+name+… This syntax is a bit scary, but any typos result in compilation errors, so I think it should be OK in practice. With this approach, we don't allow users to define arbitrary combinations: what is allowed is still defined at compilation time, so it's up to the distribution maintainers to provide reasonable combinations. In this regard, the only difference from status quo is that it's much easier to do (and harder to do incorrectly, for example by forgetting to add a name to one of the maps).
* meson: drop the list of valid net naming schemesZbigniew Jędrzejewski-Szmek2021-09-281-2/+1
| | | | | | | | | | We used 'combo' type for the scheme list. For a while we forgot to add new names, and recently aa0a23ec86 added v241, v243, v245, and v247. I want to allow defining new values during configuration, which means that we can't use meson to verify the list of options. So any value is allowed, but then two tests are added: one that will fail compilation if some invalid name is given (other than "latest"), and one that converts DEFAULT_NET_NAMING_SCHEME to a NamingScheme pointer.
* Add remaining supported schemes as options for default-net-naming-schemedann frazier2021-09-271-1/+1
|
* boot: stop making TPM PCR to measure kernel command line into configurableLennart Poettering2021-09-231-2/+0
| | | | | | | | | | | | | | | | Everyone appears to use PCR 8 for this, hence I think it's safe to hardcode that in systemd too. It's also documented, like here: https://www.gnu.org/software/grub/manual/grub/html_node/Measured-Boot.html or here: https://github.com/rhboot/shim/blob/main/README.tpm (And the previous name was a bit confusing, since we don't actually just measure one thing anymore, but mutliple things into multiple PCRs...)
* sd-boot: Draw custom edit cursorJan Janssen2021-08-171-1/+1
| | | | | | | | | | | | | Firmware likes to draw the EFI provided cursor in a weird way that makes it invisible sometimes. This is even more likely to happen if unusual colors are picked. It also fails to draw attention to the user by being very small and not blinking. Additionally, to make it more clear that we are in edit mode, we now default to inverting the general default color and use that for our line edit. Fixes: #19301
* sd-boot: Add compile-time color supportJan Janssen2021-08-171-0/+8
| | | | Fixes: #10139
* time-set: adjust system clock if rtc is far in futureEgor Ignatov2021-08-021-0/+2
|
* Add support for systemd-tpm2 libcryptsetup plugin.Ondrej Kozina2021-07-261-0/+4
| | | | | | | | | | | Add support for systemd-tpm2 based LUKS2 device activation via libcryptsetup plugin. This make the feature (tpm2 sealed LUKS2 keyslot passphrase) usable from both systemd utilities and cryptsetup cli. The feature is configured via -Dlibcryptsetup-plugins combo with default value set to 'auto'. It get's enabled automatically when cryptsetup 2.4.0 or later is installed in build system.
* rpm: restart user services at the end of the transactionZbigniew Jędrzejewski-Szmek2021-07-241-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This closes an important gap: so far we would reexecute the system manager and restart system services that were configured to do so, but we wouldn't do the same for user managers or user services. The scheme used for user managers is very similar to the system one, except that there can be multiple user managers running, so we query the system manager to get a list of them, and then tell each one to do the equivalent operations: daemon-reload, disable --now, set-property Markers=+needs-restart, reload-or-restart --marked. The total time that can be spend on this is bounded: we execute the commands in parallel over user managers and units, and additionally set SYSTEMD_BUS_TIMEOUT to a lower value (15 s by default). User managers should not have too many units running, and they should be able to do all those operations very quickly (<< 1s). The final restart operation may take longer, but it's done asynchronously, so we only wait for the queuing to happen. The advantage of doing this synchronously is that we can wait for each step to happen, and for example daemon-reloads can finish before we execute the service restarts, etc. We can also order various steps wrt. to the phases in the rpm transaction. When this was initially proposed, we discussed a more relaxed scheme with bus property notifications. Such an approach would be more complex because a bunch of infrastructure would have to be added to system manager to propagate appropriate notifications to the user managers, and then the user managers would have to wait for them. Instead, now there is no new code in the managers, all new functionality is contained in src/rpm/. The ability to call 'systemctl --user user@' makes this approach very easy. Also, it would be very hard to order the user manager steps and the rpm transaction steps. Note: 'systemctl --user disable' is only called for a user managers that are running. I don't see a nice way around this, and it shouldn't matter too much: we'll just leave a dangling symlink in the case where the user enabled the service manually. A follow-up for https://bugzilla.redhat.com/show_bug.cgi?id=1792468 and fa97d2fcf64e0558054bee673f734f523373b146.
* Add meson option to disable urlify.James Hilliard2021-07-191-0/+2
| | | | | Useful for systems that don't use a version of less with hyperlink support.
* core: add combined status unit formatPaweł Marciniak2021-06-281-1/+1
| | | | | [zjs: actual implementation is stripped out and will be added in subsequent commits.]
* meson: allow "soft-static" allocations for uids and gids in the initrdZbigniew Jędrzejewski-Szmek2021-06-171-4/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The general idea with users and groups created through sysusers is that an appropriate number is picked when the allocation is made. The number that is selected will be different on each system based on the order of creation of users, installed packages, etc. Since system users and groups are not shared between installations, this generally is not an issue. But it becomes a problem for initrd: some file systems are shared between the initrd and the host (/run and /dev are probably the only ones that matter). If the allocations are different in the host and the initrd, and files survive switch-root, they will have wrong ownership. This makes the gids build-time-configurable for all groups and users where state may survive the switch from initrd to the host. In particular, all "hardware access" groups are like this: files in /dev will be owned by them. Eventually the new udev would change ownership, but there would be a momemnt where the files were owned by the wrong group. The allocations are "soft-static" in the language of Fedora packaging guidelines: the uid/gid will be used if possible, but we'll fall back to a different one. TTY_GID is the exception, because the number is used directly. Similarly, the possibility to configure "soft-static" uids is added for daemons which may usefully run in the initramfs: systemd-network (lease information and interface state is serialized to /run), systemd-resolve (stub files and interface state), systemd-timesync (/run/systemd/timesync). Journal files are owned by the group systemd-journal, and acls are granted for wheel and adm. systemd-oom and systemd-coredump are excluded from this patch: I assume that oomd is not useful in the initrd, and coredump leaves no state (it only creates a pipe in /run?). The defaults are not changed: if nothing is configured, dynamic allocation will be used. I looked at a Debian system, and the numbers are all different than on Fedora. For Fedora, see the list of uids and gids at https://pagure.io/setup/blob/master/f/uidgid. In particular, systemd-network and systemd-resolve got soft-static numbers to make it easy to transition from a non-host-specific initrd to a host system already a few years back (https://bugzilla.redhat.com/show_bug.cgi?id=1102002). I also requested static allocations for sgx, input, render in https://pagure.io/packaging-committee/issue/1078, https://pagure.io/setup/pull-request/27.
* test: enable fuzz regression tests by defaultZbigniew Jędrzejewski-Szmek2021-05-201-1/+1
| | | | | | | | | | | | This ensures that the fuzz test code is also built by default. It also increases the test coverage a bit. Compiling the tests *with* sanitizers is painfully slow, so this is not enabled. But just compiling them sauté is hardly noticable. Running the tests increases the test count and runtime: 622 tests, 26 s to 922 tests, 35 s I think this is acceptable.
* boot: add optional EFI SBAT supportDimitri John Ledkov2021-05-071-0/+12
| | | | | | | | | | Add SBAT support, when -Dsbat-distro value is specified. One can use -Dsbat-distro=auto for autodetection of all sbat options. Many meson configure options added to customize SBAT CSV values, but sensible defaults are auto detected by default. SBAT support is required if shim v15+ is used to load systemd-boot binary or kernel.efi (Type II BootLoaderSpec). Fixes #19247
* meson, bpf: add HAVE_LIBBPF, BPF_FRAMEWORK optionsJulia Kartseva2021-04-271-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | * Add `bpf-framework` feature gate with 'auto', 'true' and 'false' choices * Add libbpf [0] dependency * Search for clang llvm-strip and bpftool binaries in compile time to generate bpf skeleton. For libbpf [0], make 0.2.0 [1] the minimum required version. If libbpf is satisfied, set HAVE_LIBBPF config option to 1. If `bpf-framework` feature gate is set to 'auto', means that whether bpf feature is enabled or now is defined by the presence of all of libbpf, clang, llvm and bpftool in build environment. With 'auto' all dependencies are optional. If the gate is set to `true`, make all of the libbpf, clang and llvm dependencies mandatory. If it's set to `false`, set `BPF_FRAMEWORK` to false and make libbpf dependency optional. libbpf dependency is dynamic followed by the common pattern in systemd. meson, bpf: add build rule for socket_bind program
* resolved.conf: Add hostnames for default DNS serversJan Janssen2021-03-311-1/+1
|
* meson: fix warning about comparison between different typesYu Watanabe2021-03-221-1/+1
| | | | Follow-up for e39288193fcdf3a36dbc49b78e6c9bf86a764e31.
* meson.build: make xinitrcdir configurableFranck Bui2021-03-161-0/+2
| | | | SUSE uses a different xinitrcdir ("/usr/etc/X11/xinit/xinitrc.d").
* meson: take oomd out of the doghouseZbigniew Jędrzejewski-Szmek2021-02-021-1/+1
| | | | | | It's on by default in Fedora 34 [1], so we can't say it's just a preview. [1] https://fedoraproject.org/wiki/Changes/EnableSystemdOomd
* sysext: new tool for managing "system extensions" for /usr/ + /opt/Lennart Poettering2021-01-191-0/+2
|
* Add install-sysconfdir=no-samples option for (non-)installation of sample ↵Josh Triplett2021-01-141-2/+2
| | | | | | | | | | | | | configs By default, systemd installs various sample configuration files containing commented-out defaults. Systems seeking to minimize the number of files in /etc may wish to install directories and configuration files that have semantic effects, but not install not commented-out sample configuration files. Turn install-sysconfdir into a multi-valued option, with a "no-samples" value to skip installing sample-only configuration files.
* localed: Run locale-gen if available to generate missing localeMatthias Klumpp2021-01-121-0/+2
| | | | | | | | | | | This change improves integration with distributions using locale-gen to generate missing locale on-demand, like Debian-based distributions (Debian/Ubuntu/PureOS/Tanglu/...) and Arch Linux. We only ever enable new locales for generation, and never disable them. Furthermore, we only generate UTF-8 locale. This feature is only used if explicitly enabled at compile-time, and will also be inert at runtime if the locale-gen binary is missing.
* meson: Add option to disable translationsDaan De Meyer2021-01-101-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This speeds up the meson install step by half a second which, given the trivial changes required to add this option, makes it worth the effort to support this. Before: ``` ‣ Running build script... [1/418] Generating version.h with a custom command Installing /root/build/po/be.gmo to /root/dest/usr/share/locale/be/LC_MESSAGES/systemd.mo Installing /root/build/po/be@latin.gmo to /root/dest/usr/share/locale/be@latin/LC_MESSAGES/systemd.mo Installing /root/build/po/bg.gmo to /root/dest/usr/share/locale/bg/LC_MESSAGES/systemd.mo Installing /root/build/po/ca.gmo to /root/dest/usr/share/locale/ca/LC_MESSAGES/systemd.mo Installing /root/build/po/cs.gmo to /root/dest/usr/share/locale/cs/LC_MESSAGES/systemd.mo Installing /root/build/po/da.gmo to /root/dest/usr/share/locale/da/LC_MESSAGES/systemd.mo Installing /root/build/po/de.gmo to /root/dest/usr/share/locale/de/LC_MESSAGES/systemd.mo Installing /root/build/po/el.gmo to /root/dest/usr/share/locale/el/LC_MESSAGES/systemd.mo Installing /root/build/po/es.gmo to /root/dest/usr/share/locale/es/LC_MESSAGES/systemd.mo Installing /root/build/po/fr.gmo to /root/dest/usr/share/locale/fr/LC_MESSAGES/systemd.mo Installing /root/build/po/gl.gmo to /root/dest/usr/share/locale/gl/LC_MESSAGES/systemd.mo Installing /root/build/po/hr.gmo to /root/dest/usr/share/locale/hr/LC_MESSAGES/systemd.mo Installing /root/build/po/hu.gmo to /root/dest/usr/share/locale/hu/LC_MESSAGES/systemd.mo Installing /root/build/po/id.gmo to /root/dest/usr/share/locale/id/LC_MESSAGES/systemd.mo Installing /root/build/po/it.gmo to /root/dest/usr/share/locale/it/LC_MESSAGES/systemd.mo Installing /root/build/po/ja.gmo to /root/dest/usr/share/locale/ja/LC_MESSAGES/systemd.mo Installing /root/build/po/ko.gmo to /root/dest/usr/share/locale/ko/LC_MESSAGES/systemd.mo Installing /root/build/po/lt.gmo to /root/dest/usr/share/locale/lt/LC_MESSAGES/systemd.mo Installing /root/build/po/pl.gmo to /root/dest/usr/share/locale/pl/LC_MESSAGES/systemd.mo Installing /root/build/po/pt_BR.gmo to /root/dest/usr/share/locale/pt_BR/LC_MESSAGES/systemd.mo Installing /root/build/po/ro.gmo to /root/dest/usr/share/locale/ro/LC_MESSAGES/systemd.mo Installing /root/build/po/ru.gmo to /root/dest/usr/share/locale/ru/LC_MESSAGES/systemd.mo Installing /root/build/po/sk.gmo to /root/dest/usr/share/locale/sk/LC_MESSAGES/systemd.mo Installing /root/build/po/sr.gmo to /root/dest/usr/share/locale/sr/LC_MESSAGES/systemd.mo Installing /root/build/po/sv.gmo to /root/dest/usr/share/locale/sv/LC_MESSAGES/systemd.mo Installing /root/build/po/tr.gmo to /root/dest/usr/share/locale/tr/LC_MESSAGES/systemd.mo Installing /root/build/po/uk.gmo to /root/dest/usr/share/locale/uk/LC_MESSAGES/systemd.mo Installing /root/build/po/zh_CN.gmo to /root/dest/usr/share/locale/zh_CN/LC_MESSAGES/systemd.mo Installing /root/build/po/zh_TW.gmo to /root/dest/usr/share/locale/zh_TW/LC_MESSAGES/systemd.mo Installing /root/build/po/pa.gmo to /root/dest/usr/share/locale/pa/LC_MESSAGES/systemd.mo real 0m1.467s user 0m1.064s sys 0m0.392s ``` After (with translations disabled): ``` ‣ Running build script... [1/418] Generating version.h with a custom command real 0m0.925s user 0m0.622s sys 0m0.301s ```
* cryptenroll: add support for TPM2 enrollingLennart Poettering2020-12-171-0/+2
|
* Drop compat "gateway" nameZbigniew Jędrzejewski-Szmek2020-12-101-2/+0
| | | | | | | Back in 5248e7e1f11aba6859de0b28f0dd3778b22842f2 (July 2017) we moved over to "_gateway", with the old name declared to be temporary measure. Since we're doing a bunch of changes to resolved now, it seems to be a good moment to make this simplification and not add support for the compat name in new code.
* Make support for nscd flushing optionalZbigniew Jędrzejewski-Szmek2020-12-071-0/+2
| | | | | | | | | Fedora will deprecate support for nscd in the upcoming release [1] and plans to drop it in the next one [2]. At that point we might as well build systemd without that support too, since there'll be nothing to talk too. [1] https://fedoraproject.org/wiki/Changes/DeprecateNSCD [2] https://fedoraproject.org/wiki/Changes/RemoveNSCD
* Merge pull request #17079 from keszybz/late-exec-resolutionLennart Poettering2020-12-031-1/+3
|\ | | | | Resolve executable paths before execution, use fexecve()
| * meson: add option for fexecve useZbigniew Jędrzejewski-Szmek2020-11-061-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are downsides to using fexecve: when fexecve is used (for normal executables), /proc/pid/status shows Name: 3, which means that ps -C foobar doesn't work. pidof works, because it checks /proc/self/cmdline. /proc/self/exe also shows the correct link, but requires privileges to read. /proc/self/comm also shows "3". I think this can be considered a kernel deficiency: when O_CLOEXEC is used, this "3" is completely meaningless. It could be any number. The kernel should use argv[0] instead, which at least has *some* meaning. I think the approach with fexecve/execveat is instersting, so let's provide it as opt-in.
* | meson: add option to skip installing to $sysconfdirJörg Thalheim2020-11-121-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is useful for development where overwriting files out side the configured prefix will affect the host as well as stateless systems such as NixOS that don't let packages install to /etc but handle configuration on their own. Alternative to https://github.com/systemd/systemd/pull/17501 tested with: $ mkdir inst build && cd build $ meson \ -Dcreate-log-dirs=false \ -Dsysvrcnd-path=$(realpath ../inst)/etc/rc.d \ -Dsysvinit-path=$(realpath ../inst)/etc/init.d \ -Drootprefix=$(realpath ../inst) \ -Dinstall-sysconfdir=false \ --prefix=$(realpath ../inst) .. $ ninja install
* | license: LGPL-2.1+ -> LGPL-2.1-or-laterYu Watanabe2020-11-091-1/+1
| |
* | meson: convert developer_mode boolean to an enumZbigniew Jędrzejewski-Szmek2020-10-221-1/+1
| | | | | | | | | | I initially changed this to add a third state. But even with two values having an explicit name instead of just 0/1 is mode descriptive.
* | meson: enable oomd by default in developer modeZbigniew Jędrzejewski-Szmek2020-10-151-1/+1
| | | | | | | | | | | | We want to compile the new code in CI without having to explicitly specify -Doomd=true everywhere. Let's enable it by default, and rely on distros setting -Dmode=release to not have it enabled by default.
* | meson: disable systemd-oomd by defaultAnita Zhang2020-10-151-1/+1
| | | | | | | | systemd-oomd can be enabled when in developer mode (-Dmode=developer)
* | systemd-oomd: unit testable helper functionsAnita Zhang2020-10-081-0/+2
|/ | | | | | | | Helpers used by the systemd-oomd daemon to read/fill in various contexts and make detection and kill decisions. i.e. a simplified/less configurable version of https://github.com/facebookincubator/oomd/tree/master/src/oomd.
* Also parse the minimum uid/gid valuesZbigniew Jędrzejewski-Szmek2020-10-011-0/+4
| | | | | | | We don't (and shouldn't I think) look at them when determining the type of the user, but they should be used during user/group allocation. (For example, an admin may specify SYS_UID_MIN==200 to allow statically numbered users that are shared with other systems in the range 1–199.)
* Look at /etc/login.defs for the system_max_[ug]id valuesZbigniew Jędrzejewski-Szmek2020-10-011-3/+5
| | | | | | | | | | | | | | | It makes little sense to make the boundary between systemd and user guids configurable. Nevertheless, a completely fixed compile-time define is not enough in two scenarios: - the systemd_uid_max boundary has moved over time. The default used to be 500 for a long time. Systems which are upgraded over time might have users in the wrong range, but changing existing systems is complicated and expensive (offline disks, backups, remote systems, read-only media, etc.) - systems are used in a heterogenous enviornment, where some vendors pick one value and others another. So let's make this boundary overridable using /etc/login.defs. Fixes #3855, #10184.
* meson: make "developer" mode the defaultZbigniew Jędrzejewski-Szmek2020-09-171-1/+1
| | | | | | | This means that the dbus doc consistency checks will be enabled by default, including in the CI. I think that will work better than current state where people do not enable them and them follow-up patches for the docs like the parent commit must be had.
* meson: add "develop mode" config switchZbigniew Jędrzejewski-Szmek2020-08-271-0/+3
|
* build-sys: add libfido2 as optional dependencyLennart Poettering2020-07-011-0/+2
|
* meson: add a new -Dstandalone-binaries=true optionFilipe Brandenburger2020-06-101-0/+2
| | | | | | | | | | | | | | | | | | | | | | | This adds an option to build standalone binaries that do not depend on the systemd-shared library. This option can be handy to build binaries that can be useful on a non-systemd system, binaries such as systemd-sysusers and systemd-tmpfiles have been previously requested, but installing them with all the required dependencies pulls in too much code that isn't really relevant for those use cases. The standalone use case is also relevant in containers, where minimizing the size of the container image is quite relevant. For now, only `systemd-sysusers` is also built as a standalone binary. The standalone binaries are installed as `/usr/bin/%{name}.standalone`, the packaging system is reponsible for renaming those into the correct names during the packaging step. RPM is able to do so with RemovePathPostfixes: The default behavior is to build shared binaries only, since this option is mainly intended for building distribution packages. Tested that a proper separate binary is built when using this option and that having it disabled (or using the default Meson configuration) does not produce a binary for this option.