summaryrefslogtreecommitdiff
path: root/meson.build
Commit message (Collapse)AuthorAgeFilesLines
* shutdown: Add Xen kexec supportSamuel Thibault2022-11-021-0/+13
| | | | | | In the Xen case, it's the hypervisor which manages kexec. We thus have to ask it whether a kernel is loaded, instead of relying on /sys/kernel/kexec_loaded.
* namespace: Add hidepid/subset support checkDaan De Meyer2022-11-011-0/+2
| | | | | | Using fsopen()/fsconfig(), we can check if hidepid/subset are supported to avoid the noisy logs from the kernel if they aren't supported. This works on centos/redhat 8 as well since they've backported fsopen()/fsconfig().
* meson: systemd-repart.standaloneZbigniew Jędrzejewski-Szmek2022-10-311-0/+19
| | | | | | | | Repart is growing into an important tool on its own, and users might want to install newer versions on systems that have older systemd. Let's make this easier by providing a standalone binary. Related to https://github.com/systemd/mkosi/issues/1228.
* Merge pull request #24958 from Werkov/meson-generated-directivesLuca Boccassi2022-10-311-53/+37
|\ | | | | Generate dirrectives for fuzzer tests
| * meson: Generate fuzzer inputs with directivesMichal Koutný2022-10-201-18/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The lists of directives for fuzzer tests are maintained manually in the repo. There is a tools/check-directives.sh script that runs during test phase and reports stale directive lists. Let's rework the script into a generator so that these directive files are created on-the-flight and needn't be updated whenever a unit file directives change. The scripts is rewritten in Python to get rid of gawk dependency and each generated file is a separate meson target so that incremental builds refresh what is just necessary (and parallelize (negligible)). Note: test/fuzz/fuzz-unit-file/directives-all.slice is kept since there is not automated way to generate it (it is not covered by the check script neither).
| * meson: Store fuzz tests in structured wayMichal Koutný2022-10-111-40/+29
| | | | | | | | | | | | Put fuzzer tests into dictionary that maps `fuzzer->list of inputs` instead of the flat list. This is just refactoring with no intentional .
* | meson: always use libatomic if foundZbigniew Jędrzejewski-Szmek2022-10-211-10/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Semi-quoting https://github.com/systemd/systemd/issues/25057: clang-16 has made the choice to turn on -Werror=implicit-function-declaration,implicit-int. (See Gentoo's tracker bug https://bugs.gentoo.org/870412). Added in commit 132c73b57ad1d363e97e1f4720f0e920826f34e1, systemd now does a check to see if libatomic is needed with some compile/link tests with e.g. __atomic_exchange_1, but the tests don't provide a prototype for __atomic_exchange_1 so with clang-16 the test fails, breaking the build. Let's simplify things by linking to libatomic unconditionally if it is found and seems to work. If actually unneeded, it might be dropped via --as-needed. This seems to work with gcc and clang. declare_dependency() is used instead of cc.find_library(), because the latter picks up a symlink in gcc private directory (e.g. /usr/lib/gcc/x86_64-redhat-linux/12/libatomic.so), and we don't want that. Fixes #25057.
* | qrcode-util: Add support for libqrencode 3.0Daan De Meyer2022-10-171-1/+1
|/ | | | | | They didn't actually change API between major versions, so let's support the previous version as well so we can add CentOS 8 Stream back to CI.
* Revert "journal: Add --convert= command to journalctl"Daan De Meyer2022-10-081-4/+2
| | | | | | This reverts commit 721620e8a32907ffe546a582c5ac7136b6367510. This commit was accidentally merged as part of #22998
* meson: bump numbers for v252-rc1Luca Boccassi2022-10-071-3/+3
|
* journal: Add --convert= command to journalctlDaan De Meyer2022-10-071-2/+4
| | | | | | | | --convert writes the journal files read by journalctl to the given location. The location should be specified as a full journal file path (e.g. /a/b/c/converted.journal). The directory specifies where the converted journal files will be stored. The filename specifies the naming convention the converted journal files will follow.
* Merge pull request #24511 from martinetd/bpf1Zbigniew Jędrzejewski-Szmek2022-10-061-1/+1
|\ | | | | libbpf: Add libbpf 1.0.0 compat
| * libbpf: add compat helpers for libbpf down to 0.1.0Dominique Martinet2022-10-061-1/+1
| | | | | | | | | | | | | | | | | | - new symbols are available from libbpf 0.6.0 so could be used with libbpf.so.0, but we're sure the old symbols will be there and this simplifies code - detection at runtime should always work, regardless of whether systemd has been compiled with older or newer libbpf and runs with older or newer libbpf
| * Bump libbpf version to 0.7Daan De Meyer2022-10-061-1/+1
| | | | | | | | | | | | | | | | We already depend on the skeleton APIs introduced in libbpf 0.7 so let's bump our minimum version to reflect that. We don't enforce bpf compilation on mkosi anymore since not all distros have sufficiently up-to-date libbpf available.
* | meson: Require TPM2 for measuring utilitiesMichal Koutný2022-10-061-1/+1
|/ | | | | | | | | | | | | | | | | | | | | | | I happened to run build with openssl but no tpm2 and ran into issues like: [313/1382] Compiling C object systemd-measure.p/src_boot_measure.c.o FAILED: systemd-measure.p/src_boot_measure.c.o cc -Isystemd-measure.p -I. -I.. -Isrc/basic -I../src/basic -Isrc/fundamental -I../src/fundamental -Isrc/systemd -I../src/systemd -I../src/libsystemd/sd-bus -I../src/libsystemd/sd-device -I../src/libsystemd/sd-event -I../src/libsystemd/sd-hwdb -I../src/libsystemd/sd-id128 -I../src/libsystemd/sd-journal -I../src/libsystemd/sd-netlink -I../src/libsystemd/sd-network -I../src/libsystemd/sd-resolve -Isrc/shared -I../src/shared -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O0 -g -Wno-missing-field-initializers -Wno-unused-parameter -Wdate-time -Wendif-labels -Werror=format=2 -Werror=format-signedness -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 -Werror=missing-declarations -Werror=missing-prototypes -fdiagnostics-show-option -fno-common -fno-strict-aliasing -fstack-protector -fstack-protector-strong -fvisibility=hidden --param=ssp-buffer-size=4 -fno-omit-frame-pointer -Werror=shadow -include config.h -DOPENSSL_LOAD_CONF -MD -MQ systemd-measure.p/src_boot_measure.c.o -MF systemd-measure.p/src_boot_measure.c.o.d -o systemd-measure.p/src_boot_measure.c.o -c ../src/boot/measure.c ../src/boot/measure.c: In function ‘verb_sign’: ../src/boot/measure.c:710:48: error: variable ‘c’ has initializer but incomplete type 710 | _cleanup_(tpm2_context_destroy) struct tpm2_context c = {}; [308/1382] Compiling C object systemd-pcrphase.p/src_boot_pcrphase.c.o FAILED: systemd-pcrphase.p/src_boot_pcrphase.c.o cc -Isystemd-pcrphase.p -I. -I.. -Isrc/basic -I../src/basic -Isrc/fundamental -I../src/fundamental -Isrc/systemd -I../src/systemd -I../src/libsystemd/sd-bus -I../src/libsystemd/sd-device -I../src/libsystemd/sd-event -I../src/libsystemd/sd-hwdb -I../src/libsystemd/sd-id128 -I../src/libsystemd/sd-journal -I../src/libsystemd/sd-netlink -I../src/libsystemd/sd-network -I../src/libsystemd/sd-resolve -Isrc/shared -I../src/shared -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O0 -g -Wno-missing-field-initializers -Wno-unused-parameter -Wdate-time -Wendif-labels -Werror=format=2 -Werror=format-signedness -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 -Werror=missing-declarations -Werror=missing-prototypes -fdiagnostics-show-option -fno-common -fno-strict-aliasing -fstack-protector -fstack-protector-strong -fvisibility=hidden --param=ssp-buffer-size=4 -fno-omit-frame-pointer -Werror=shadow -include config.h -DOPENSSL_LOAD_CONF -MD -MQ systemd-pcrphase.p/src_boot_pcrphase.c.o -MF systemd-pcrphase.p/src_boot_pcrphase.c.o.d -o systemd-pcrphase.p/src_boot_pcrphase.c.o -c ../src/boot/pcrphase.c ../src/boot/pcrphase.c: In function ‘determine_banks’: ../src/boot/pcrphase.c:117:24: error: unknown type name ‘TPMI_ALG_HASH’ 117 | _cleanup_free_ TPMI_ALG_HASH *algs = NULL; Guarding the utilites with HAVE_TPM2 fixes the issue for me. This complements #24811.
* meson: set minimum libbpf/bpftool versions for bpf-gccJames Hilliard2022-10-011-6/+16
| | | | | | | | We need the following libbpf commits for bpf-gcc compatibility: - https://github.com/libbpf/libbpf/commit/3d484ca47339b23afb2ec7c508ed9a3a5cf1d287 - https://github.com/libbpf/libbpf/commit/b31ca3fa0e62fde6aa66f855136e29e088ad9dde These are first present in libbpf 1.0.0 and bpftool 7.0.0.
* meson: libfido2 requires opensslYu Watanabe2022-09-251-3/+10
| | | | | | | | | | | | | | | | | | | | | | Fixes compile error with -Dopenssl=false. ``` In file included from ../../home/watanabe/git/systemd/src/shared/pkcs11-util.h:12, from ../../home/watanabe/git/systemd/src/cryptenroll/cryptenroll.c:24: ../../home/watanabe/git/systemd/src/shared/openssl-util.h:56:21: error: conflicting types for ‘X509’; have ‘struct X509’ 56 | typedef struct X509 X509; | ^~~~ In file included from /usr/include/openssl/crypto.h:25, from /usr/include/openssl/bio.h:20, from /usr/include/openssl/asn1.h:16, from /usr/include/openssl/ec.h:17, from /usr/include/fido.h:10, from ../../home/watanabe/git/systemd/src/shared/libfido2-util.h:18, from ../../home/watanabe/git/systemd/src/cryptenroll/cryptenroll-fido2.h:7, from ../../home/watanabe/git/systemd/src/cryptenroll/cryptenroll.c:6: /usr/include/openssl/ossl_typ.h:123:24: note: previous declaration of ‘X509’ with type ‘X509’ {aka ‘struct x509_st’} 123 | typedef struct x509_st X509; | ^~~~ ```
* repart: Add support for generating verity sig partitionsDaan De Meyer2022-09-231-1/+2
|
* boot: add new pcrphase tool to measure barrier strings into PCR 11Lennart Poettering2022-09-221-0/+9
|
* meson: make several tests run sequentiallyYu Watanabe2022-09-201-1/+2
| | | | Follow-up for f93ba375301e43900f1fe5a93a2b33b1efcc73e0.
* meson: add libatomic dependencyHeinrich Schuchardt2022-09-151-1/+11
| | | | | | | | | | | | | | | Building with GCC 12.2 and binutils 2.39 fails on riscv64 Ubuntu Kinetic with: FAILED: systemd-oomd /usr/bin/ld: systemd-oomd.p/src_oom_oomd-util.c.o: in function `oomd_cgroup_context_acquire': build/../src/oom/oomd-util.c:415: undefined reference to `__atomic_exchange_1' We have to link with -latomic. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
* meson: Compile with -Werror=format-signednessJan Janssen2022-08-301-1/+1
|
* test: merge test-repart.sh and TEST-58-REPARTYu Watanabe2022-08-221-6/+0
|
* Merge pull request #24054 from keszybz/initrd-no-reloadFrantisek Sumsal2022-08-181-0/+4
|\ | | | | Don't do daemon-reload in the initrd
| * fstab-generator: add mode to check /sysroot/etc/fstab and maybe do daemon-reloadZbigniew Jędrzejewski-Szmek2022-07-231-0/+4
| | | | | | | | | | | | | | | | | | | | | | The idea is that we can peek into /sysroot/etc/fstab and figure out if there's anything interesting there. We could use a separate binary for this, but we'd need to duplicate most of the logic that in systemd-fstab-generator. Thus I think it's nicer to make systemd-fstab-generator work as a multi-call binary. If called as systemd-sysroot-fstab-check, we look for units that we'd mount and call daemon-reload and initrd-fs.target/restart, similarly to what we did before, but in the process itself.
* | meson: use 'not in'Yu Watanabe2022-08-091-1/+1
| | | | | | | | | | Follow-ups for 60f97fee2d2f948c8e8963ea8ff767008cb93cae and 32963344736004e01ff4dd9dca079faabaf58cf2.
* | measure: add new tool to precalculate PCR values for a kernel imageLennart Poettering2022-08-021-0/+12
| | | | | | | | | | | | | | | | | | For now, this simply outputs the PCR hash values expected for a kernel image, if it's measured like sd-stub would do it. (Later on, we can extend the tool, to optionally sign these pre-calculated measurements, in order to implement signed PCR policies for disk encryption.)
* | boot: move unified kernel PE section definitions into 'fundamental' codeLennart Poettering2022-08-021-0/+2
| | | | | | | | | | Le's share this code between userspace and uefispace. This is useful later when pre-measuring expected PCRs from userspace.
* | meson: fix broken boolean kwargEli Schwartz2022-07-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Everywhere else that `conf.get('ENABLE_*')` is used as a boolean key for something (for example in if statements) it always checks if == 1, but in this one case it neglects to do so. This is important because conf.get yields the same int that was stored, but if statements require booleans. So does executable's "install" kwarg, at least according to the documentation. In actuality, it accepts all types without sanity checking, then uses python "if bool(var)", so you can actually do `install: 'do not'` and that's treated identical to `true`. This is a type-checking bug which Meson will eventually fix. muon fails on the same code, today.
* | meson: strip various strings before converting them to integersEli Schwartz2022-07-301-3/+3
| | | | | | | | | | | | "9\n" is not intrinsically a number, although some tools might auto-strip strings before checking if they are a number. It's not guaranteed, anyway.
* | meson: use 0 for default uids, gids, and time epochYu Watanabe2022-07-301-4/+4
| | | | | | | | | | | | | | | | 0 UID and GID are special, and should not be acceptable for the settings. Hence, we can handle 0 as unset. Strictly speaking, time epoch with 0 is valid, but I guess no one use 0 as a valid value.
* | journalctl: allow statically linked buildJames Hilliard2022-07-291-19/+28
| | | | | | | | | | | | | | | | The journalctl tool may be needed on cross compilation hosts in order to run --update-catalog against a target rootfs. To avoid reliability issues caused by shared linking allow journalctl to be linked statically.
* | meson: fix math flags checkasavah2022-07-271-1/+1
| |
* | glibc: Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr ↵Rudi Heitbaum2022-07-241-1/+12
| | | | | | | | conflict with glibc 2.36
* | meson: refuse -ffinite-math-onlyYu Watanabe2022-07-211-0/+5
|/ | | | Closes #23610.
* Merge pull request #23881 from keszybz/kernel-install-strikes-yet-againYu Watanabe2022-07-131-1/+8
|\ | | | | kernel-install: fix invocation as installkernel, add tests, tweak documentation
| * test-kernel-install: add a simple test that kernel-install copies the filesZbigniew Jędrzejewski-Szmek2022-07-121-1/+8
| | | | | | | | | | | | | | | | | | | | I opted to tweaking kernel-install to allow overriding config (with $KERNEL_INSTALL_CONF_ROOT, $KERNEL_INSTALL_PLUGINS). An alternative would be to build a test environment in test/. We can still do that, but I think it's nice to have a simple test that is very quick and easy to debug. Invocation as installkernel is for #23681.
* | smack: Add DefaultSmackProcessLabel to user.conf and system.confŁukasz Stelmach2022-07-121-0/+5
| | | | | | | | | | | | | | | | | | | | | | DefaultSmackProcessLabel tells systemd what label to assign to its child process in case SmackProcessLabel is not set in the service file. By default, when DefaultSmackProcessLabel is not set child processes inherit label from systemd. If DefaultSmackProcessLabel is set to "/" (which is an invalid character for a SMACK label) the DEFAULT_SMACK_PROCESS_LABEL set during compilation is ignored and systemd act as if the option was unset.
* | Merge pull request #15205 from jlebon/pr/preset-all-firstbootZbigniew Jędrzejewski-Szmek2022-07-061-0/+3
|\ \ | | | | | | manager: optionally, do a full preset on first boot
| * | manager: optionally, do a full preset on first bootJonathan Lebon2022-05-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A compile time option is added to select behaviour: by default UNIT_FILE_PRESET_ENABLE_ONLY is still used, but the intent is to change to UNIT_FILE_PRESET_FULL at some point in the future. Distros that want to opt-in can use the config option to change the behaviour. (The option is just a boolean: it would be possible to make it multi-valued, and allow full, enable-only, disable-only, none. But so far nobody has asked for this, and it's better not to complicate things needlessly.) With the configuration option flipped, instead of only doing enablements, perform a full preset on first boot. The reason is that although `/etc/machine-id` might be missing, there may be other files provisioned in `/etc` (in fact, this use case is mentioned in `log_execution_mode`). Some of those possible files include enablement symlinks even if presets dictate it should be disabled. Such a seemingly contradictory situation occurs in {RHEL,Fedora} CoreOS, where we ship `/etc` as if `preset-all` were called. However, we want to allow users to disable default-enabled services via Ignition, which does this by creating preset dropins before switchroot. (For why we do `preset-all` at compose time, see: https://github.com/coreos/fedora-coreos-config/pull/77). For example, the composed FCOS image has a `enable zincati.service` preset and an enablement for that in `/etc`, while at boot time when we switch root, there may be a `disable zincati.service` preset with higher precedence. In that case, we want systemd to disable the service. This is essentially a revert of 304b3079a203. It seems like systemd *used* to do this, but it was changed to try to make the container workflow a bit faster. Resolves: https://github.com/coreos/fedora-coreos-tracker/issues/392 Co-authored-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
* | | meson: Assign tests a suite based on their directoryDaan De Meyer2022-07-041-1/+6
| | | | | | | | | | | | | | | | | | This can be used to run only a subset of tests, e.g. "meson test -C build --suite journal" to run only the journal unit tests.
* | | Turn mempool_enabled() into a weak symbolZbigniew Jędrzejewski-Szmek2022-06-291-6/+0
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | Before we had the following scheme: mempool_enabled() would check mempool_use_allowed, and libsystemd-shared would be linked with a .c file that provides mempool_use_allowed=true, while other things would linked with a different .c file with mempool_use_allowed=false. In the new scheme, mempool_enabled() itself is a weak symbol. If it's not found, we assume false. So it only needs to be provided for libsystemd-shared, where it can return false or true. test-set-disable-mempool is libshared, so it gets the symbol. But then we actually disable the mempool via envvar. mempool_enable() is called to check its return value directly.
* | meson: show default nspawn locale in summaryYu Watanabe2022-06-271-0/+1
| | | | | | | | Follow-up for a22f5186761a437d8845397bbbfeaf9a7d590ec2.
* | pkgconfig,rpm: expose vars for user-tmpfiles.d locationZbigniew Jędrzejewski-Szmek2022-06-211-0/+2
| | | | | | | | Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2098553.
* | meson: add build targets for libudev, libsystemd and pkg-configLuca Boccassi2022-06-121-0/+6
| | | | | | | | Mirror install tags with the same names and content
* | Merge pull request #23683 from keszybz/status-formatZbigniew Jędrzejewski-Szmek2022-06-101-0/+4
|\ \ | | | | | | Default to default-status-unit-format=name in developer mode
| * | meson: use status-unit-format-default=name in developer modeZbigniew Jędrzejewski-Szmek2022-06-101-0/+3
| | | | | | | | | | | | | | | | | | I think developers are particularly unlikely to find the descriptions useful, and would benefit from being able to copy&paste unit names. Let's make this choice automatically.
| * | meson: add status unit format to summaryZbigniew Jędrzejewski-Szmek2022-06-101-0/+1
| | |
* | | meson: add experimental bpf-gcc compiler supportJames Hilliard2022-06-101-42/+58
| | | | | | | | | | | | | | | Not fully working but should make it easier to clean up remaining issues.
* | | meson: Build with frame pointers in developer modeDaan De Meyer2022-06-091-0/+4
|/ / | | | | | | | | | | Profiling tools tend to work better when binaries and libraries are compiled with frame pointers as without them there's no easy and fast way to get the current stacktrace.