diff --git a/meson.build b/meson.build index ad9ecba74f..580f4312f9 100644 --- a/meson.build +++ b/meson.build @@ -321,6 +321,7 @@ meson_build_sh = find_program('tools/meson-build.sh') want_tests = get_option('tests') slow_tests = want_tests != 'false' and get_option('slow-tests') fuzz_tests = want_tests != 'false' and get_option('fuzz-tests') +integration_tests = want_tests != 'false' and get_option('integration-tests') install_tests = want_tests != 'false' and get_option('install-tests') if add_languages('cpp', native : false, required : fuzzer_build) @@ -2574,6 +2575,18 @@ endif ##################################################################### mkosi = find_program('mkosi', required : false) +if integration_tests and not mkosi.found() + error('Could not find mkosi which is required to run the integration tests') +endif + +mkosi_depends = public_programs + +foreach executable : ['systemd-journal-remote', 'systemd-measure'] + if executable in executables_by_name + mkosi_depends += [executables_by_name[executable]] + endif +endforeach + if mkosi.found() custom_target('mkosi', build_always_stale : true, @@ -2588,13 +2601,9 @@ if mkosi.found() '--build-dir', meson.current_build_dir() / 'mkosi.builddir', '--force', '--debug', - 'build' - ], - depends : public_programs + [ - executables_by_name['systemd-journal-remote'], - executables_by_name['systemd-measure'], - ukify, + 'build', ], + depends : mkosi_depends, ) endif diff --git a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf index 3007510b0d..5b08224ebb 100644 --- a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf @@ -40,6 +40,7 @@ Packages= quota-tools sbsigntools shadow + squashfs-tools tpm2-tss vim diff --git a/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.conf index 294e4cdf28..79622c83f7 100644 --- a/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.conf @@ -52,6 +52,7 @@ Packages= selinux-policy selinux-policy-targeted setools-console + squashfs-tools util-linux vim-common diff --git a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf index 7446da0914..7d58cf676b 100644 --- a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf @@ -61,6 +61,7 @@ Packages= psmisc quota sbsigntool + squashfs-tools tzdata xxd diff --git a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf index d3801f419e..a1a4778350 100644 --- a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf @@ -61,6 +61,7 @@ Packages= sbsigntools sed shadow + squashfs timezone user(bin) user(daemon) diff --git a/mkosi.images/system/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset b/mkosi.images/system/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset index 070af4c67a..fb82f3608f 100644 --- a/mkosi.images/system/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset +++ b/mkosi.images/system/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset @@ -19,6 +19,9 @@ enable dbus-broker.service enable systemd-networkd.service enable systemd-networkd-wait-online.service +# systemd-resolved is disable by default on CentOS so make sure it is enabled. +enable systemd-resolved.service + # We install dnf in some images but it's only going to be used rarely, # so let's not have dnf create its cache. disable dnf-makecache.* diff --git a/src/ac-power/ac-power.c b/src/ac-power/ac-power.c index fadf1dacaf..af76b81de6 100644 --- a/src/ac-power/ac-power.c +++ b/src/ac-power/ac-power.c @@ -83,8 +83,7 @@ static int run(int argc, char *argv[]) { /* This is mostly intended to be used for scripts which want * to detect whether AC power is plugged in or not. */ - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/ask-password/ask-password.c b/src/ask-password/ask-password.c index 20285a7227..b2c8ef7003 100644 --- a/src/ask-password/ask-password.c +++ b/src/ask-password/ask-password.c @@ -226,9 +226,7 @@ static int run(int argc, char *argv[]) { usec_t timeout; int r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/boot/bless-boot.c b/src/boot/bless-boot.c index 07e4e306a3..efe1002e31 100644 --- a/src/boot/bless-boot.c +++ b/src/boot/bless-boot.c @@ -499,8 +499,7 @@ static int run(int argc, char *argv[]) { int r; - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/boot/boot-check-no-failures.c b/src/boot/boot-check-no-failures.c index 4ff91cb906..56c63b71a9 100644 --- a/src/boot/boot-check-no-failures.c +++ b/src/boot/boot-check-no-failures.c @@ -79,8 +79,7 @@ static int run(int argc, char *argv[]) { uint32_t n; int r; - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/boot/measure.c b/src/boot/measure.c index 41fcd5a91a..8c98ae1af1 100644 --- a/src/boot/measure.c +++ b/src/boot/measure.c @@ -1160,9 +1160,7 @@ static int measure_main(int argc, char *argv[]) { static int run(int argc, char *argv[]) { int r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/cryptenroll/cryptenroll.c b/src/cryptenroll/cryptenroll.c index 3b16f95eb9..2083641897 100644 --- a/src/cryptenroll/cryptenroll.c +++ b/src/cryptenroll/cryptenroll.c @@ -797,9 +797,7 @@ static int run(int argc, char *argv[]) { size_t vks; int slot, slot_to_wipe, r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/environment-d-generator/environment-d-generator.c b/src/environment-d-generator/environment-d-generator.c index 236cf38597..fa751cbd9c 100644 --- a/src/environment-d-generator/environment-d-generator.c +++ b/src/environment-d-generator/environment-d-generator.c @@ -84,8 +84,7 @@ static int load_and_print(void) { static int run(int argc, char *argv[]) { int r; - log_parse_environment(); - log_open(); + log_setup(); if (argc > 1) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "This program takes no arguments."); diff --git a/src/fuzz/fuzz.h b/src/fuzz/fuzz.h index 7afe38ed1f..123e88e8e9 100644 --- a/src/fuzz/fuzz.h +++ b/src/fuzz/fuzz.h @@ -33,8 +33,7 @@ static inline void fuzz_setup_logging(void) { * in a fuzzing mode, so disable most of the logging. */ log_set_assert_return_is_critical(true); log_set_max_level(LOG_CRIT); - log_parse_environment(); - log_open(); + log_setup(); } /* Force value to not be optimized away. */ diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c index 861dac0fd1..2ce8b2dd42 100644 --- a/src/hwdb/hwdb.c +++ b/src/hwdb/hwdb.c @@ -120,8 +120,7 @@ static int hwdb_main(int argc, char *argv[]) { static int run(int argc, char *argv[]) { int r; - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c index 545a1c6240..64f8125df3 100644 --- a/src/journal-remote/journal-remote-main.c +++ b/src/journal-remote/journal-remote-main.c @@ -1070,8 +1070,7 @@ static int run(int argc, char **argv) { _cleanup_free_ char *cert = NULL, *trust = NULL; int r; - log_show_color(true); - log_parse_environment(); + log_setup(); /* The journal merging logic potentially needs a lot of fds. */ (void) rlimit_nofile_bump(HIGH_RLIMIT_NOFILE); diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c index 657e574d2d..f6b9351907 100644 --- a/src/journal-remote/journal-upload.c +++ b/src/journal-remote/journal-upload.c @@ -764,8 +764,7 @@ static int run(int argc, char **argv) { bool use_journal; int r; - log_show_color(true); - log_parse_environment(); + log_setup(); /* The journal merging logic potentially needs a lot of fds. */ (void) rlimit_nofile_bump(HIGH_RLIMIT_NOFILE); diff --git a/src/journal/bsod.c b/src/journal/bsod.c index 0da0df9ee7..b2889f02ed 100644 --- a/src/journal/bsod.c +++ b/src/journal/bsod.c @@ -305,8 +305,7 @@ static int run(int argc, char *argv[]) { _cleanup_free_ char *message = NULL; int r; - log_open(); - log_parse_environment(); + log_setup(); sigbus_install(); diff --git a/src/login/inhibit.c b/src/login/inhibit.c index 8c65e1582a..4682830d19 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -257,9 +257,7 @@ static int run(int argc, char *argv[]) { _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; int r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/login/user-runtime-dir.c b/src/login/user-runtime-dir.c index 5f527d8c43..575f8ebfa0 100644 --- a/src/login/user-runtime-dir.c +++ b/src/login/user-runtime-dir.c @@ -190,8 +190,7 @@ static int do_umount(const char *user) { static int run(int argc, char *argv[]) { int r; - log_parse_environment(); - log_open(); + log_setup(); if (argc != 3) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), diff --git a/src/machine-id-setup/machine-id-setup-main.c b/src/machine-id-setup/machine-id-setup-main.c index bbc58945bd..6f98f74a41 100644 --- a/src/machine-id-setup/machine-id-setup-main.c +++ b/src/machine-id-setup/machine-id-setup-main.c @@ -139,8 +139,7 @@ static int run(int argc, char *argv[]) { _cleanup_(umount_and_freep) char *mounted_dir = NULL; int r; - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c index d8c37534d9..fcebdcaf18 100644 --- a/src/mount/mount-tool.c +++ b/src/mount/mount-tool.c @@ -1492,9 +1492,7 @@ static int run(int argc, char* argv[]) { _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; int r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 8902df157f..4fee8a693c 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -5777,8 +5777,7 @@ static int run(int argc, char *argv[]) { _cleanup_(fw_ctx_freep) FirewallContext *fw_ctx = NULL; pid_t pid = 0; - log_parse_environment(); - log_open(); + log_setup(); arg_privileged = getuid() == 0; diff --git a/src/nsresourced/test-userns-restrict.c b/src/nsresourced/test-userns-restrict.c index 7ef1d7b423..f509321ba8 100644 --- a/src/nsresourced/test-userns-restrict.c +++ b/src/nsresourced/test-userns-restrict.c @@ -56,7 +56,7 @@ static int run(int argc, char *argv[]) { int r; log_set_max_level(LOG_DEBUG); - log_open(); + log_setup(); r = userns_restrict_install(/* pin= */ false, &obj); if (ERRNO_IS_NOT_SUPPORTED(r)) { diff --git a/src/oom/oomctl.c b/src/oom/oomctl.c index eb15f508de..00914f35df 100644 --- a/src/oom/oomctl.c +++ b/src/oom/oomctl.c @@ -119,9 +119,7 @@ static int run(int argc, char* argv[]) { int r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/partition/repart.c b/src/partition/repart.c index 51ae8592fd..ddacdce5b5 100644 --- a/src/partition/repart.c +++ b/src/partition/repart.c @@ -8005,9 +8005,7 @@ static int run(int argc, char *argv[]) { bool node_is_our_loop = false; int r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/path/path.c b/src/path/path.c index 1e69c6a355..3ab09344b4 100644 --- a/src/path/path.c +++ b/src/path/path.c @@ -218,9 +218,7 @@ static int parse_argv(int argc, char *argv[]) { static int run(int argc, char* argv[]) { int r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/portable/profile/default/service.conf b/src/portable/profile/default/service.conf index 230aa60781..5c447d6641 100644 --- a/src/portable/profile/default/service.conf +++ b/src/portable/profile/default/service.conf @@ -4,7 +4,7 @@ MountAPIVFS=yes BindReadOnlyPaths=/dev/log /run/systemd/journal/socket /run/systemd/journal/stdout BindReadOnlyPaths=/etc/machine-id -BindReadOnlyPaths=/etc/resolv.conf +BindReadOnlyPaths=-/etc/resolv.conf BindReadOnlyPaths=/run/dbus/system_bus_socket DynamicUser=yes RemoveIPC=yes diff --git a/src/portable/profile/trusted/service.conf b/src/portable/profile/trusted/service.conf index 04deeb2262..144d4f6c23 100644 --- a/src/portable/profile/trusted/service.conf +++ b/src/portable/profile/trusted/service.conf @@ -5,4 +5,4 @@ MountAPIVFS=yes PrivateTmp=yes BindPaths=/run BindReadOnlyPaths=/etc/machine-id -BindReadOnlyPaths=/etc/resolv.conf +BindReadOnlyPaths=-/etc/resolv.conf diff --git a/src/run/run.c b/src/run/run.c index 1a3b125c6f..1f720c6442 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -2320,9 +2320,7 @@ static int run(int argc, char* argv[]) { _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; int r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); if (invoked_as(argv, "run0")) r = parse_argv_sudo_mode(argc, argv); diff --git a/src/shared/generator.c b/src/shared/generator.c index e03ed4b29f..1b3304a7df 100644 --- a/src/shared/generator.c +++ b/src/shared/generator.c @@ -970,6 +970,5 @@ void log_setup_generator(void) { log_set_target(LOG_TARGET_JOURNAL_OR_KMSG); } - log_parse_environment(); - (void) log_open(); + log_setup(); } diff --git a/src/socket-activate/socket-activate.c b/src/socket-activate/socket-activate.c index 78ecb29e60..9234bb33cd 100644 --- a/src/socket-activate/socket-activate.c +++ b/src/socket-activate/socket-activate.c @@ -446,9 +446,7 @@ static int run(int argc, char **argv) { _cleanup_strv_free_ char **exec_argv = NULL; int r, n; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c index 287fd6c181..dd9fa07153 100644 --- a/src/socket-proxy/socket-proxyd.c +++ b/src/socket-proxy/socket-proxyd.c @@ -676,8 +676,7 @@ static int run(int argc, char *argv[]) { _unused_ _cleanup_(notify_on_cleanup) const char *notify_stop = NULL; int r, n, fd; - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/stdio-bridge/stdio-bridge.c b/src/stdio-bridge/stdio-bridge.c index fe551cfaea..d3629f5fb0 100644 --- a/src/stdio-bridge/stdio-bridge.c +++ b/src/stdio-bridge/stdio-bridge.c @@ -105,9 +105,7 @@ static int run(int argc, char *argv[]) { bool is_unix; int r, in_fd, out_fd; - log_set_target(LOG_TARGET_JOURNAL_OR_KMSG); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/storagetm/storagetm.c b/src/storagetm/storagetm.c index e060998829..1bb8eec316 100644 --- a/src/storagetm/storagetm.c +++ b/src/storagetm/storagetm.c @@ -1111,9 +1111,7 @@ static int run(int argc, char* argv[]) { _cleanup_(context_done) Context context = {}; int r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/test/meson.build b/src/test/meson.build index 69b2b1e587..a452021f62 100644 --- a/src/test/meson.build +++ b/src/test/meson.build @@ -15,6 +15,7 @@ test_env.set('SYSTEMD_LANGUAGE_FALLBACK_MAP', language_fallback_map) test_env.set('PATH', project_build_root + ':' + path) test_env.set('PROJECT_BUILD_ROOT', project_build_root) test_env.set('SYSTEMD_SLOW_TESTS', slow_tests ? '1' : '0') +test_env.set('SYSTEMD_INTEGRATION_TESTS', integration_tests ? '1' : '0') if efi_addon != '' test_env.set('EFI_ADDON', efi_addon) diff --git a/src/test/test-fd-util.c b/src/test/test-fd-util.c index 2796fe8882..f2b65d492a 100644 --- a/src/test/test-fd-util.c +++ b/src/test/test-fd-util.c @@ -148,7 +148,7 @@ TEST(rearrange_stdio) { assert_se(rearrange_stdio(-EBADF, -EBADF, -EBADF) >= 0); /* Reconfigure logging after rearranging stdout/stderr, so we still log to somewhere if the * following tests fail, making it slightly less annoying to debug */ - log_set_target(LOG_TARGET_KMSG); + log_set_target(LOG_TARGET_JOURNAL_OR_KMSG); log_open(); assert_se(fd_get_path(STDIN_FILENO, &path) >= 0); diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c index 4dd7e54973..2255eed7c4 100644 --- a/src/udev/ata_id/ata_id.c +++ b/src/udev/ata_id/ata_id.c @@ -413,10 +413,8 @@ static int run(int argc, char *argv[]) { uint16_t word; int r, peripheral_device_type = -1; - log_set_target(LOG_TARGET_AUTO); - udev_parse_config(); - log_parse_environment(); - log_open(); + (void) udev_parse_config(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c index 9285dd81f0..195fadc569 100644 --- a/src/udev/cdrom_id/cdrom_id.c +++ b/src/udev/cdrom_id/cdrom_id.c @@ -959,10 +959,8 @@ static int run(int argc, char *argv[]) { _cleanup_(context_clear) Context c = CONTEXT_EMPTY; int r; - log_set_target(LOG_TARGET_AUTO); - udev_parse_config(); - log_parse_environment(); - log_open(); + (void) udev_parse_config(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/udev/dmi_memory_id/dmi_memory_id.c b/src/udev/dmi_memory_id/dmi_memory_id.c index 0393d29a73..9823df01c7 100644 --- a/src/udev/dmi_memory_id/dmi_memory_id.c +++ b/src/udev/dmi_memory_id/dmi_memory_id.c @@ -685,10 +685,8 @@ static int run(int argc, char* const* argv) { size_t size; int r; - log_set_target(LOG_TARGET_AUTO); - udev_parse_config(); - log_parse_environment(); - log_open(); + (void) udev_parse_config(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/udev/fido_id/fido_id.c b/src/udev/fido_id/fido_id.c index e01f37d04c..6c4b099568 100644 --- a/src/udev/fido_id/fido_id.c +++ b/src/udev/fido_id/fido_id.c @@ -70,10 +70,8 @@ static int run(int argc, char **argv) { ssize_t desc_len; int r; - log_set_target(LOG_TARGET_AUTO); - udev_parse_config(); - log_parse_environment(); - log_open(); + (void) udev_parse_config(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c index 0f7119cd70..b63a46a730 100644 --- a/src/udev/scsi_id/scsi_id.c +++ b/src/udev/scsi_id/scsi_id.c @@ -480,10 +480,8 @@ int main(int argc, char **argv) { char maj_min_dev[MAX_PATH_LEN]; int newargc; - log_set_target(LOG_TARGET_AUTO); - udev_parse_config(); - log_parse_environment(); - log_open(); + (void) udev_parse_config(); + log_setup(); /* * Get config file options. diff --git a/src/udev/udevadm-test-builtin.c b/src/udev/udevadm-test-builtin.c index 8831949717..322f62793f 100644 --- a/src/udev/udevadm-test-builtin.c +++ b/src/udev/udevadm-test-builtin.c @@ -79,8 +79,7 @@ int builtin_main(int argc, char *argv[], void *userdata) { UdevBuiltinCommand cmd; int r; - log_set_max_level(LOG_DEBUG); - log_parse_environment(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c index b0d2f9b20c..c8c23e811a 100644 --- a/src/udev/udevadm-test.c +++ b/src/udev/udevadm-test.c @@ -96,8 +96,7 @@ int test_main(int argc, char *argv[], void *userdata) { sigset_t mask, sigmask_orig; int r; - log_set_max_level(LOG_DEBUG); - log_parse_environment(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c index 687b927f72..899d4e6f7f 100644 --- a/src/udev/udevadm.c +++ b/src/udev/udevadm.c @@ -123,7 +123,7 @@ static int run(int argc, char *argv[]) { if (invoked_as(argv, "udevd")) return run_udevd(argc, argv); - udev_parse_config(); + (void) udev_parse_config(); log_setup(); r = parse_argv(argc, argv); diff --git a/src/udev/udevd.c b/src/udev/udevd.c index e408768887..5018541661 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -289,8 +289,7 @@ int run_udevd(int argc, char *argv[]) { int fd_ctrl = -EBADF, fd_uevent = -EBADF; int r; - log_set_target(LOG_TARGET_AUTO); - log_open(); + log_setup(); manager = manager_new(); if (!manager) @@ -298,9 +297,6 @@ int run_udevd(int argc, char *argv[]) { manager_parse_udev_config(manager); - log_parse_environment(); - log_open(); /* Done again to update after reading configuration. */ - r = parse_argv(argc, argv, manager); if (r <= 0) return r; diff --git a/src/vpick/vpick-tool.c b/src/vpick/vpick-tool.c index 0504b7733b..c5ae8c510a 100644 --- a/src/vpick/vpick-tool.c +++ b/src/vpick/vpick-tool.c @@ -216,9 +216,7 @@ static int parse_argv(int argc, char *argv[]) { static int run(int argc, char *argv[]) { int r; - log_show_color(true); - log_parse_environment(); - log_open(); + log_setup(); r = parse_argv(argc, argv); if (r <= 0) diff --git a/test/README.testsuite b/test/README.testsuite index 7dcb602e84..91cafeb58e 100644 --- a/test/README.testsuite +++ b/test/README.testsuite @@ -31,7 +31,7 @@ $ sudo make -C test/TEST-01-BASIC clean setup run To run the meson-based integration test config enable integration tests and options for required commands with the following: -$ meson configure build -Dintegration-tests=true -Dremote=enabled -Dopenssl=enabled -Dblkid=enabled -Dtpm2=enabled +$ meson configure build -Dremote=enabled -Dopenssl=enabled -Dblkid=enabled -Dtpm2=enabled Once enabled, first build the integration test image: @@ -39,18 +39,18 @@ $ meson compile -C build mkosi After the image has been built, the integration tests can be run with: -$ meson test -C build/ --suite integration-tests --num-processes "$(($(nproc) / 2))" +$ SYSTEMD_INTEGRATION_TESTS=1 meson test -C build/ --suite integration-tests --num-processes "$(($(nproc) / 2))" As usual, specific tests can be run in meson by appending the name of the test which is usually the name of the directory e.g. -$ meson test -C build/ -v TEST-01-BASIC +$ SYSTEMD_INTEGRATION_TESTS=1 meson test -C build/ -v TEST-01-BASIC Due to limitations in meson, the integration tests do not yet depend on the mkosi target, which means the mkosi target has to be manually rebuilt before running the integration tests. To rebuild the image and rerun a test, the following command can be used: -$ meson compile -C build mkosi && meson test -C build -v TEST-01-BASIC +$ meson compile -C build mkosi && SYSTEMD_INTEGRATION_TESTS=1 meson test -C build -v TEST-01-BASIC See `meson introspect build --tests` for a list of tests. diff --git a/test/integration-test-wrapper.py b/test/integration-test-wrapper.py index f3c7fe5b85..4465576c5b 100755 --- a/test/integration-test-wrapper.py +++ b/test/integration-test-wrapper.py @@ -38,6 +38,10 @@ ExecStart=false def main(): + if not bool(int(os.getenv("SYSTEMD_INTEGRATION_TESTS", "0"))): + print("SYSTEMD_INTEGRATION_TESTS=1 not found in environment, skipping", file=sys.stderr) + exit(77) + parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('--meson-source-dir', required=True, type=Path) parser.add_argument('--meson-build-dir', required=True, type=Path) diff --git a/test/meson.build b/test/meson.build index 8e0d11682e..bd25e94276 100644 --- a/test/meson.build +++ b/test/meson.build @@ -334,45 +334,39 @@ endif ############################################################ -if get_option('integration-tests') - if not mkosi.found() - error('Could not find mkosi which is required to run the integration tests') +integration_test_wrapper = find_program('integration-test-wrapper.py') +integration_tests = { + '01': 'TEST-01-BASIC', + '02': 'TEST-02-UNITTESTS', +} +foreach test_number, dirname : integration_tests + test_params = { + 'mkosi_args' : [], + 'timeout' : 600, + } + + # TODO: This fs.exists call isn't included in rebuild logic + # so if you add a new meson.build in a subdir + # you need to touch another build file to get it to reparse. + if fs.exists(dirname / 'meson.build') + subdir(dirname) endif - integration_test_wrapper = find_program('integration-test-wrapper.py') - integration_tests = { - '01': 'TEST-01-BASIC', - '02': 'TEST-02-UNITTESTS', - } - foreach test_number, dirname : integration_tests - test_params = { - 'mkosi_args' : [], - 'timeout' : 600, - } + args = [ + '--meson-source-dir', meson.project_source_root(), + '--meson-build-dir', meson.project_build_root(), + '--test-name', dirname, + '--test-number', test_number, + '--', + ] + test_params['mkosi_args'] - # TODO: This fs.exists call isn't included in rebuild logic - # so if you add a new meson.build in a subdir - # you need to touch another build file to get it to reparse. - if fs.exists(dirname / 'meson.build') - subdir(dirname) - endif - - args = [ - '--meson-source-dir', meson.project_source_root(), - '--meson-build-dir', meson.project_build_root(), - '--test-name', dirname, - '--test-number', test_number, - '--', - ] + test_params['mkosi_args'] - - # We don't explicitly depend on the "mkosi" target because that means the image is rebuilt - # on every "ninja -C build". Instead, the mkosi target has to be rebuilt manually before - # running the integration tests with mkosi. - test(dirname, - integration_test_wrapper, - env: test_env, - args : args, - timeout : test_params['timeout'], - suite : 'integration-tests') - endforeach -endif + # We don't explicitly depend on the "mkosi" target because that means the image is rebuilt + # on every "ninja -C build". Instead, the mkosi target has to be rebuilt manually before + # running the integration tests with mkosi. + test(dirname, + integration_test_wrapper, + env: test_env, + args : args, + timeout : test_params['timeout'], + suite : 'integration-tests') +endforeach