diff --git a/.github/labeler.yml b/.github/labeler.yml index 121f4b734d..773d575004 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -36,4 +36,3 @@ timedate: - src/timedate/* timesync: - src/timesync/* - - src/time-wait-sync/* diff --git a/man/rules/meson.build b/man/rules/meson.build index 19238ec033..b8cb96ac22 100644 --- a/man/rules/meson.build +++ b/man/rules/meson.build @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + # Do not edit. Generated by update-man-rules.py. # Update with: # ninja -C build man/update-man-rules diff --git a/meson.build b/meson.build index 2caf069602..c12b399b5f 100644 --- a/meson.build +++ b/meson.build @@ -1553,9 +1553,6 @@ conf.set10('ENABLE_NSS', enable_nss) conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd')) -tests = [] -fuzzers = [] - conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests) ##################################################################### @@ -1589,44 +1586,8 @@ else endif conf.set10('ENABLE_EFI', have) -##################################################################### +############################################################ -config_h = configure_file( - output : 'config.h', - configuration : conf) - -meson_apply_m4 = find_program('tools/meson-apply-m4.sh') - -includes = include_directories('src/basic', - 'src/boot', - 'src/core', - 'src/home', - 'src/journal', - 'src/journal-remote', - 'src/libsystemd-network', - 'src/libsystemd/sd-bus', - 'src/libsystemd/sd-device', - 'src/libsystemd/sd-event', - 'src/libsystemd/sd-hwdb', - 'src/libsystemd/sd-id128', - 'src/libsystemd/sd-netlink', - 'src/libsystemd/sd-network', - 'src/libsystemd/sd-resolve', - 'src/login', - 'src/nspawn', - 'src/resolve', - 'src/shared', - 'src/shutdown', - 'src/systemd', - 'src/time-wait-sync', - 'src/timesync', - 'src/udev', - 'src/xdg-autostart-generator', - '.') - -add_project_arguments('-include', 'config.h', language : 'c') - -generate_gperfs = find_program('tools/generate-gperfs.py') autosuspend_update_sh = find_program('tools/autosuspend-update.sh') hwdb_update_sh = find_program('tools/hwdb-update.sh') make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py') @@ -1635,38 +1596,62 @@ make_man_index_py = find_program('tools/make-man-index.py') syscall_table_update_sh = find_program('tools/syscall-table-update.sh') xml_helper_py = find_program('tools/xml_helper.py') update_dbus_docs_py = find_program('tools/update-dbus-docs.py') +meson_apply_m4 = find_program('tools/meson-apply-m4.sh') +generate_gperfs = find_program('tools/generate-gperfs.py') + +##################################################################### + +config_h = configure_file( + output : 'config.h', + configuration : conf) + +add_project_arguments('-include', 'config.h', language : 'c') ############################################################ +# binaries that have --help and are intended for use by humans, +# usually, but not always, installed in /bin. +public_programs = [] + +tests = [] +fuzzers = [] + +basic_includes = include_directories( + 'src/basic', + 'src/systemd', + '.') + +libsystemd_includes = [basic_includes, include_directories( + 'src/libsystemd/sd-bus', + 'src/libsystemd/sd-device', + 'src/libsystemd/sd-event', + 'src/libsystemd/sd-hwdb', + 'src/libsystemd/sd-id128', + 'src/libsystemd/sd-journal', + 'src/libsystemd/sd-netlink', + 'src/libsystemd/sd-network', + 'src/libsystemd/sd-resolve')] + +includes = [libsystemd_includes, include_directories('src/shared')] + subdir('po') subdir('catalog') -subdir('src/libudev') -subdir('src/systemd') subdir('src/basic') subdir('src/libsystemd') -subdir('src/libsystemd-network') -subdir('src/journal') -subdir('src/login') +subdir('src/shared') +subdir('src/udev') +subdir('src/libudev') -libjournal_core = static_library( - 'journal-core', - libjournal_core_sources, - journald_gperf_c, - include_directories : includes, - install : false) - -libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym) libsystemd = shared_library( 'systemd', disable_mempool_c, version : libsystemd_version, - include_directories : includes, + include_directories : libsystemd_includes, link_args : ['-shared', '-Wl,--version-script=' + libsystemd_sym_path], link_with : [libbasic, libbasic_gcrypt], - link_whole : [libsystemd_static, - libjournal_client], + link_whole : [libsystemd_static], dependencies : [threads, librt, libxz, @@ -1676,21 +1661,17 @@ libsystemd = shared_library( install : true, install_dir : rootlibdir) -static_libsystemd = get_option('static-libsystemd') -static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic' - install_libsystemd_static = static_library( 'systemd', libsystemd_sources, - journal_client_sources, basic_sources, basic_gcrypt_sources, disable_mempool_c, - include_directories : includes, + include_directories : libsystemd_includes, build_by_default : static_libsystemd != 'false', install : static_libsystemd != 'false', install_dir : rootlibdir, - pic : static_libsystemd == 'true' or static_libsystemd == 'pic', + pic : static_libsystemd_pic, dependencies : [threads, librt, libxz, @@ -1703,39 +1684,76 @@ install_libsystemd_static = static_library( libgcrypt], c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC'])) +libudev = shared_library( + 'udev', + disable_mempool_c, + version : libudev_version, + include_directories : includes, + link_args : ['-shared', + '-Wl,--version-script=' + libudev_sym_path], + link_with : [libsystemd_static, libshared_static], + link_whole : libudev_basic, + dependencies : [threads], + link_depends : libudev_sym, + install : true, + install_dir : rootlibdir) + +install_libudev_static = static_library( + 'udev', + basic_sources, + shared_sources, + libsystemd_sources, + libudev_sources, + disable_mempool_c, + include_directories : includes, + build_by_default : static_libudev != 'false', + install : static_libudev != 'false', + install_dir : rootlibdir, + link_depends : libudev_sym, + dependencies : libshared_deps + [libmount], + c_args : static_libudev_pic ? [] : ['-fno-PIC'], + pic : static_libudev_pic) + ############################################################ -# binaries that have --help and are intended for use by humans, -# usually, but not always, installed in /bin. -public_programs = [] - -subdir('src/shared') +# systemd-analyze requires 'libcore' subdir('src/core') -subdir('src/shutdown') -subdir('src/udev') -subdir('src/network') +# systemd-journal-remote requires 'libjournal_core' +subdir('src/journal') +# systemd-networkd requires 'libsystemd_network' +subdir('src/libsystemd-network') subdir('src/analyze') -subdir('src/journal-remote') +subdir('src/boot/efi') +subdir('src/busctl') subdir('src/coredump') -subdir('src/pstore') -subdir('src/oom') +subdir('src/cryptenroll') +subdir('src/cryptsetup') +subdir('src/home') subdir('src/hostname') subdir('src/import') -subdir('src/partition') +subdir('src/journal-remote') subdir('src/kernel-install') subdir('src/locale') +subdir('src/login') subdir('src/machine') -subdir('src/portable') -subdir('src/userdb') -subdir('src/home') +subdir('src/network') subdir('src/nspawn') +subdir('src/oom') +subdir('src/partition') +subdir('src/portable') +subdir('src/pstore') subdir('src/resolve') +subdir('src/shutdown') +subdir('src/systemctl') subdir('src/timedate') subdir('src/timesync') subdir('src/tmpfiles') +subdir('src/userdb') subdir('src/vconsole') -subdir('src/boot/efi') +subdir('src/xdg-autostart-generator') + +subdir('src/systemd') subdir('src/test') subdir('src/fuzz') @@ -1756,9 +1774,9 @@ test_dlopen = executable( build_by_default : want_tests != 'false') foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'], - ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h src/nss-systemd/nss-systemd.h'], + ['systemd', 'ENABLE_NSS_SYSTEMD', ['nss-systemd.h', 'userdb-glue.c', 'userdb-glue.h']], ['mymachines', 'ENABLE_NSS_MYMACHINES'], - ['resolve', 'ENABLE_NSS_RESOLVE']] + ['resolve', 'ENABLE_NSS_RESOLVE', [], resolve_includes]] condition = tuple[1] == '' or conf.get(tuple[1]) == 1 if condition @@ -1769,15 +1787,19 @@ foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'], sources = ['src/nss-@0@/nss-@0@.c'.format(module)] if tuple.length() > 2 - sources += tuple[2].split() + foreach s : tuple[2] + sources += ['src/nss-@0@/@1@'.format(module, s)] + endforeach endif + incs = tuple.length() > 3 ? tuple[3] : includes + nss = shared_library( 'nss_' + module, sources, disable_mempool_c, version : '2', - include_directories : includes, + include_directories : incs, # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned link_args : ['-Wl,-z,nodelete', '-shared', @@ -1832,7 +1854,7 @@ meson.add_install_script(meson_make_symlink, public_programs += executable( 'systemd-analyze', systemd_analyze_sources, - include_directories : includes, + include_directories : core_includes, link_with : [libcore, libshared], dependencies : [versiondep, @@ -1916,8 +1938,7 @@ executable( 'systemd-fstab-generator', 'src/fstab-generator/fstab-generator.c', include_directories : includes, - link_with : [libcore_shared, - libshared], + link_with : [libshared], install_rpath : rootlibexecdir, install : true, install_dir : systemgeneratordir) @@ -1961,7 +1982,6 @@ if conf.get('HAVE_BLKID') == 1 executable( 'systemd-gpt-auto-generator', 'src/gpt-auto-generator/gpt-auto-generator.c', - 'src/shared/blkid-util.h', include_directories : includes, link_with : [libshared], dependencies : libblkid, @@ -1982,7 +2002,7 @@ if conf.get('ENABLE_RESOLVE') == 1 executable( 'systemd-resolved', systemd_resolved_sources, - include_directories : includes, + include_directories : resolve_includes, link_with : [libshared, libbasic_gcrypt, libsystemd_resolve_core], @@ -2145,90 +2165,9 @@ public_programs += executable( install_rpath : rootlibexecdir, install : true) -if get_option('link-systemctl-shared') - systemctl_link_with = [libshared] -else - systemctl_link_with = [libsystemd_static, - libshared_static, - libjournal_client, - libbasic_gcrypt] -endif - public_programs += executable( 'systemctl', - 'src/systemctl/systemctl-add-dependency.c', - 'src/systemctl/systemctl-add-dependency.h', - 'src/systemctl/systemctl-cancel-job.c', - 'src/systemctl/systemctl-cancel-job.h', - 'src/systemctl/systemctl-clean-or-freeze.c', - 'src/systemctl/systemctl-clean-or-freeze.h', - 'src/systemctl/systemctl-compat-halt.c', - 'src/systemctl/systemctl-compat-halt.h', - 'src/systemctl/systemctl-compat-runlevel.c', - 'src/systemctl/systemctl-compat-runlevel.h', - 'src/systemctl/systemctl-compat-shutdown.c', - 'src/systemctl/systemctl-compat-shutdown.h', - 'src/systemctl/systemctl-compat-telinit.c', - 'src/systemctl/systemctl-compat-telinit.h', - 'src/systemctl/systemctl-daemon-reload.c', - 'src/systemctl/systemctl-daemon-reload.h', - 'src/systemctl/systemctl-edit.c', - 'src/systemctl/systemctl-edit.h', - 'src/systemctl/systemctl-enable.c', - 'src/systemctl/systemctl-enable.h', - 'src/systemctl/systemctl-is-active.c', - 'src/systemctl/systemctl-is-active.h', - 'src/systemctl/systemctl-is-enabled.c', - 'src/systemctl/systemctl-is-enabled.h', - 'src/systemctl/systemctl-is-system-running.c', - 'src/systemctl/systemctl-is-system-running.h', - 'src/systemctl/systemctl-kill.c', - 'src/systemctl/systemctl-kill.h', - 'src/systemctl/systemctl-list-dependencies.c', - 'src/systemctl/systemctl-list-dependencies.h', - 'src/systemctl/systemctl-list-jobs.c', - 'src/systemctl/systemctl-list-jobs.h', - 'src/systemctl/systemctl-list-machines.c', - 'src/systemctl/systemctl-list-machines.h', - 'src/systemctl/systemctl-list-unit-files.c', - 'src/systemctl/systemctl-list-unit-files.h', - 'src/systemctl/systemctl-list-units.c', - 'src/systemctl/systemctl-list-units.h', - 'src/systemctl/systemctl-log-setting.c', - 'src/systemctl/systemctl-log-setting.h', - 'src/systemctl/systemctl-logind.c', - 'src/systemctl/systemctl-logind.h', - 'src/systemctl/systemctl-mount.c', - 'src/systemctl/systemctl-mount.h', - 'src/systemctl/systemctl-preset-all.c', - 'src/systemctl/systemctl-preset-all.h', - 'src/systemctl/systemctl-reset-failed.c', - 'src/systemctl/systemctl-reset-failed.h', - 'src/systemctl/systemctl-service-watchdogs.c', - 'src/systemctl/systemctl-service-watchdogs.h', - 'src/systemctl/systemctl-set-default.c', - 'src/systemctl/systemctl-set-default.h', - 'src/systemctl/systemctl-set-environment.c', - 'src/systemctl/systemctl-set-environment.h', - 'src/systemctl/systemctl-set-property.c', - 'src/systemctl/systemctl-set-property.h', - 'src/systemctl/systemctl-show.c', - 'src/systemctl/systemctl-show.h', - 'src/systemctl/systemctl-start-special.c', - 'src/systemctl/systemctl-start-special.h', - 'src/systemctl/systemctl-start-unit.c', - 'src/systemctl/systemctl-start-unit.h', - 'src/systemctl/systemctl-switch-root.c', - 'src/systemctl/systemctl-switch-root.h', - 'src/systemctl/systemctl-sysv-compat.c', - 'src/systemctl/systemctl-sysv-compat.h', - 'src/systemctl/systemctl-trivial-method.c', - 'src/systemctl/systemctl-trivial-method.h', - 'src/systemctl/systemctl-util.c', - 'src/systemctl/systemctl-util.c', - 'src/systemctl/systemctl-util.h', - 'src/systemctl/systemctl.c', - 'src/systemctl/systemctl.h', + systemctl_sources, include_directories : includes, link_with : systemctl_link_with, dependencies : [threads, @@ -2315,7 +2254,7 @@ if conf.get('ENABLE_HOMED') == 1 executable( 'systemd-homed', systemd_homed_sources, - include_directories : includes, + include_directories : home_includes, link_with : [libshared], dependencies : [threads, libcrypt, @@ -2402,27 +2341,6 @@ executable( install_dir : systemgeneratordir) if conf.get('HAVE_LIBCRYPTSETUP') == 1 - systemd_cryptsetup_sources = files(''' - src/cryptsetup/cryptsetup-fido2.h - src/cryptsetup/cryptsetup-keyfile.c - src/cryptsetup/cryptsetup-keyfile.h - src/cryptsetup/cryptsetup-pkcs11.h - src/cryptsetup/cryptsetup-tpm2.h - src/cryptsetup/cryptsetup.c -'''.split()) - - if conf.get('HAVE_P11KIT') == 1 - systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c') - endif - - if conf.get('HAVE_LIBFIDO2') == 1 - systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-fido2.c') - endif - - if conf.get('HAVE_TPM2') == 1 - systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-tpm2.c') - endif - executable( 'systemd-cryptsetup', systemd_cryptsetup_sources, @@ -2462,34 +2380,6 @@ if conf.get('HAVE_LIBCRYPTSETUP') == 1 install : true, install_dir : systemgeneratordir) - systemd_cryptenroll_sources = files(''' - src/cryptenroll/cryptenroll-fido2.h - src/cryptenroll/cryptenroll-list.c - src/cryptenroll/cryptenroll-list.h - src/cryptenroll/cryptenroll-password.c - src/cryptenroll/cryptenroll-password.h - src/cryptenroll/cryptenroll-pkcs11.h - src/cryptenroll/cryptenroll-recovery.c - src/cryptenroll/cryptenroll-recovery.h - src/cryptenroll/cryptenroll-tpm2.h - src/cryptenroll/cryptenroll-wipe.c - src/cryptenroll/cryptenroll-wipe.h - src/cryptenroll/cryptenroll.c - src/cryptenroll/cryptenroll.h -'''.split()) - - if conf.get('HAVE_P11KIT') == 1 and conf.get('HAVE_OPENSSL') == 1 - systemd_cryptenroll_sources += files('src/cryptenroll/cryptenroll-pkcs11.c') - endif - - if conf.get('HAVE_LIBFIDO2') == 1 - systemd_cryptenroll_sources += files('src/cryptenroll/cryptenroll-fido2.c') - endif - - if conf.get('HAVE_TPM2') == 1 - systemd_cryptenroll_sources += files('src/cryptenroll/cryptenroll-tpm2.c') - endif - executable( 'systemd-cryptenroll', systemd_cryptenroll_sources, @@ -2527,8 +2417,7 @@ endif if conf.get('ENABLE_XDG_AUTOSTART') == 1 executable( 'systemd-xdg-autostart-generator', - 'src/xdg-autostart-generator/xdg-autostart-generator.c', - 'src/xdg-autostart-generator/xdg-autostart-service.c', + systemd_xdg_autostart_generator_sources, include_directories : includes, link_with : [libshared], install_rpath : rootlibexecdir, @@ -2614,20 +2503,11 @@ if conf.get('ENABLE_TIMEDATECTL') == 1 endif if conf.get('ENABLE_TIMESYNCD') == 1 - if get_option('link-timesyncd-shared') - timesyncd_link_with = [libshared] - else - timesyncd_link_with = [libsystemd_static, - libshared_static, - libjournal_client, - libbasic_gcrypt] - endif - executable( 'systemd-timesyncd', systemd_timesyncd_sources, include_directories : includes, - link_with : [timesyncd_link_with], + link_with : [libtimesyncd_core], dependencies : [threads, libm], install_rpath : rootlibexecdir, @@ -2636,9 +2516,9 @@ if conf.get('ENABLE_TIMESYNCD') == 1 executable( 'systemd-time-wait-sync', - 'src/time-wait-sync/time-wait-sync.c', + 'src/timesync/wait-sync.c', include_directories : includes, - link_with : [timesyncd_link_with], + link_with : [libtimesyncd_core], install_rpath : rootlibexecdir, install : true, install_dir : rootlibexecdir) @@ -2929,8 +2809,7 @@ executable( 'systemd-remount-fs', 'src/remount-fs/remount-fs.c', include_directories : includes, - link_with : [libcore_shared, - libshared], + link_with : [libshared], install_rpath : rootlibexecdir, install : true, install_dir : rootlibexecdir) @@ -2939,8 +2818,7 @@ executable( 'systemd-machine-id-setup', 'src/machine-id-setup/machine-id-setup-main.c', include_directories : includes, - link_with : [libcore_shared, - libshared], + link_with : [libshared], install_rpath : rootlibexecdir, install : true, install_dir : rootbindir) @@ -3154,9 +3032,7 @@ public_programs += executable( public_programs += executable( 'busctl', - 'src/busctl/busctl.c', - 'src/busctl/busctl-introspect.c', - 'src/busctl/busctl-introspect.h', + busctl_sources, include_directories : includes, link_with : [libshared], install_rpath : rootlibexecdir, @@ -3189,8 +3065,7 @@ if enable_sysusers link_with : [libshared_static, libbasic, libbasic_gcrypt, - libsystemd_static, - libjournal_client], + libsystemd_static], install : true, install_dir : rootbindir) public_programs += exe @@ -3232,8 +3107,7 @@ if conf.get('ENABLE_TMPFILES') == 1 link_with : [libshared_static, libbasic, libbasic_gcrypt, - libsystemd_static, - libjournal_client], + libsystemd_static], dependencies : [libacl], install : true, install_dir : rootbindir) @@ -3244,7 +3118,6 @@ if conf.get('ENABLE_HWDB') == 1 public_programs += executable( 'systemd-hwdb', 'src/hwdb/hwdb.c', - 'src/libsystemd/sd-hwdb/hwdb-internal.h', include_directories : includes, link_with : udev_link_with, install_rpath : udev_rpath, @@ -3293,8 +3166,7 @@ executable( 'systemd-shutdown', systemd_shutdown_sources, include_directories : includes, - link_with : [libcore_shared, - libshared], + link_with : [libshared], dependencies : [libmount], install_rpath : rootlibexecdir, install : true, @@ -3342,8 +3214,7 @@ public_programs += executable( 'systemd-nspawn', systemd_nspawn_sources, include_directories : includes, - link_with : [libcore_shared, - libnspawn_core, + link_with : [libnspawn_core, libshared], dependencies : [libblkid, libseccomp], @@ -3354,7 +3225,7 @@ if conf.get('ENABLE_NETWORKD') == 1 executable( 'systemd-networkd', systemd_networkd_sources, - include_directories : network_include_dir, + include_directories : network_includes, link_with : [libnetworkd_core, libsystemd_network, networkd_link_with], @@ -3367,8 +3238,7 @@ if conf.get('ENABLE_NETWORKD') == 1 'systemd-networkd-wait-online', systemd_networkd_wait_online_sources, include_directories : includes, - link_with : [libnetworkd_core, - networkd_link_with], + link_with : [networkd_link_with], install_rpath : rootlibexecdir, install : true, install_dir : rootlibexecdir) @@ -3376,7 +3246,7 @@ if conf.get('ENABLE_NETWORKD') == 1 public_programs += executable( 'networkctl', networkctl_sources, - include_directories : includes, + include_directories : libsystemd_network_includes, link_with : [libsystemd_network, networkd_link_with], install_rpath : rootlibexecdir, @@ -3402,7 +3272,7 @@ endif executable( 'systemd-sulogin-shell', - ['src/sulogin-shell/sulogin-shell.c'], + 'src/sulogin-shell/sulogin-shell.c', include_directories : includes, link_with : [libshared], install_rpath : rootlibexecdir, @@ -3422,13 +3292,13 @@ custom_target( foreach tuple : tests sources = tuple[0] - link_with = tuple[1].length() > 0 ? tuple[1] : [libshared] - dependencies = tuple[2] - condition = tuple.length() >= 4 ? tuple[3] : '' - type = tuple.length() >= 5 ? tuple[4] : '' - defs = tuple.length() >= 6 ? tuple[5] : [] - incs = tuple.length() >= 7 ? tuple[6] : includes - parallel = tuple.length() >= 8 ? tuple[7] : true + link_with = tuple.length() > 1 and tuple[1].length() > 0 ? tuple[1] : [libshared] + dependencies = tuple.length() > 2 ? tuple[2] : [] + incs = tuple.length() > 3 and tuple[3].length() > 0 ? tuple[3] : includes + condition = tuple.length() > 4 ? tuple[4] : '' + type = tuple.length() > 5 ? tuple[5] : '' + defs = tuple.length() > 6 ? tuple[6] : [] + parallel = tuple.length() > 7 ? tuple[7] : true timeout = 30 name = sources[0].split('/')[-1].split('.')[0] @@ -3523,10 +3393,10 @@ fuzzer_exes = [] foreach tuple : fuzzers sources = tuple[0] - link_with = tuple[1].length() > 0 ? tuple[1] : [libshared] - dependencies = tuple[2] - defs = tuple.length() >= 4 ? tuple[3] : [] - incs = tuple.length() >= 5 ? tuple[4] : includes + link_with = tuple.length() > 1 and tuple[1].length() > 0 ? tuple[1] : [libshared] + dependencies = tuple.length() > 2 ? tuple[2] : [] + incs = tuple.length() > 3 and tuple[3].length() > 0 ? tuple[3] : includes + defs = tuple.length() > 4 ? tuple[4] : [] link_args = [] if want_ossfuzz @@ -3918,6 +3788,7 @@ foreach tuple : [ ['kernel-install', get_option('kernel-install')], ['systemd-analyze', conf.get('ENABLE_ANALYZE') == 1], ['fexecve'], + ['standalone-binaries', get_option('standalone-binaries')], ] if tuple.length() >= 2 diff --git a/src/analyze/meson.build b/src/analyze/meson.build index 9e4d95b036..f796629cc2 100644 --- a/src/analyze/meson.build +++ b/src/analyze/meson.build @@ -9,3 +9,13 @@ systemd_analyze_sources = files(''' analyze-security.c analyze-security.h '''.split()) + +tests += [ + [['src/analyze/test-verify.c', + 'src/analyze/analyze-verify.c', + 'src/analyze/analyze-verify.h'], + [libcore, + libshared], + [], + core_includes], +] diff --git a/src/basic/dns-def.h b/src/basic/dns-def.h new file mode 100644 index 0000000000..d70220bcc0 --- /dev/null +++ b/src/basic/dns-def.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +/* Length of a single label, with all escaping removed, excluding any trailing dot or NUL byte */ +#define DNS_LABEL_MAX 63 + +/* Worst case length of a single label, with all escaping applied and room for a trailing NUL byte. */ +#define DNS_LABEL_ESCAPED_MAX (DNS_LABEL_MAX*4+1) + +/* Maximum length of a full hostname, consisting of a series of unescaped labels, and no trailing dot or NUL byte */ +#define DNS_HOSTNAME_MAX 253 + +/* Maximum length of a full hostname, on the wire, including the final NUL byte */ +#define DNS_WIRE_FORMAT_HOSTNAME_MAX 255 + +/* Maximum number of labels per valid hostname */ +#define DNS_N_LABELS_MAX 127 diff --git a/src/basic/efivars.h b/src/basic/efivars.h index d310dde7d7..dcaf87eacd 100644 --- a/src/basic/efivars.h +++ b/src/basic/efivars.h @@ -10,7 +10,6 @@ #include "sd-id128.h" -#include "efi/loader-features.h" #include "time-util.h" #define EFI_VENDOR_LOADER SD_ID128_MAKE(4a,67,b0,82,0a,4c,41,cf,b6,c7,44,0b,29,bb,8c,4f) diff --git a/src/basic/meson.build b/src/basic/meson.build index d791f77c65..c801251e30 100644 --- a/src/basic/meson.build +++ b/src/basic/meson.build @@ -42,6 +42,7 @@ basic_sources = files(''' dirent-util.h dlfcn-util.c dlfcn-util.h + dns-def.h efivars.c efivars.h env-file.c @@ -244,6 +245,8 @@ basic_sources = files(''' unaligned.h unit-def.c unit-def.h + unit-file.c + unit-file.h unit-name.c unit-name.h user-util.c @@ -378,7 +381,7 @@ run_target( libbasic = static_library( 'basic', basic_sources, - include_directories : includes, + include_directories : basic_includes, dependencies : [versiondep, threads, libcap, @@ -400,6 +403,6 @@ basic_gcrypt_sources = files( libbasic_gcrypt = static_library( 'basic-gcrypt', basic_gcrypt_sources, - include_directories : includes, + include_directories : basic_includes, dependencies : [libgcrypt], c_args : ['-fvisibility=default']) diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c index 5d4dafe3a5..8ca8f251e1 100644 --- a/src/basic/parse-util.c +++ b/src/basic/parse-util.c @@ -16,9 +16,6 @@ #include "missing_network.h" #include "parse-util.h" #include "process-util.h" -#if HAVE_SECCOMP -#include "seccomp-util.h" -#endif #include "stat-util.h" #include "string-util.h" #include "strv.h" @@ -317,46 +314,6 @@ int parse_errno(const char *t) { return e; } -#if HAVE_SECCOMP -int parse_syscall_and_errno(const char *in, char **name, int *error) { - _cleanup_free_ char *n = NULL; - char *p; - int e = -1; - - assert(in); - assert(name); - assert(error); - - /* - * This parse "syscall:errno" like "uname:EILSEQ", "@sync:255". - * If errno is omitted, then error is set to -1. - * Empty syscall name is not allowed. - * Here, we do not check that the syscall name is valid or not. - */ - - p = strchr(in, ':'); - if (p) { - e = seccomp_parse_errno_or_action(p + 1); - if (e < 0) - return e; - - n = strndup(in, p - in); - } else - n = strdup(in); - - if (!n) - return -ENOMEM; - - if (isempty(n)) - return -EINVAL; - - *error = e; - *name = TAKE_PTR(n); - - return 0; -} -#endif - static const char *mangle_base(const char *s, unsigned *base) { const char *k; diff --git a/src/basic/parse-util.h b/src/basic/parse-util.h index 81478ed059..1ff76ded44 100644 --- a/src/basic/parse-util.h +++ b/src/basic/parse-util.h @@ -22,9 +22,6 @@ int parse_mtu(int family, const char *s, uint32_t *ret); int parse_size(const char *t, uint64_t base, uint64_t *size); int parse_range(const char *t, unsigned *lower, unsigned *upper); int parse_errno(const char *t); -#if HAVE_SECCOMP -int parse_syscall_and_errno(const char *in, char **name, int *error); -#endif #define SAFE_ATO_REFUSE_PLUS_MINUS (1U << 30) #define SAFE_ATO_REFUSE_LEADING_ZERO (1U << 29) diff --git a/src/shared/unit-file.c b/src/basic/unit-file.c similarity index 100% rename from src/shared/unit-file.c rename to src/basic/unit-file.c diff --git a/src/shared/unit-file.h b/src/basic/unit-file.h similarity index 100% rename from src/shared/unit-file.h rename to src/basic/unit-file.h diff --git a/src/busctl/meson.build b/src/busctl/meson.build new file mode 100644 index 0000000000..aacd0b270d --- /dev/null +++ b/src/busctl/meson.build @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +busctl_sources = files( + 'busctl-introspect.c', + 'busctl-introspect.h', + 'busctl.c') diff --git a/src/fuzz/fuzz-unit-file.c b/src/core/fuzz-unit-file.c similarity index 100% rename from src/fuzz/fuzz-unit-file.c rename to src/core/fuzz-unit-file.c diff --git a/src/fuzz/fuzz-unit-file.options b/src/core/fuzz-unit-file.options similarity index 100% rename from src/fuzz/fuzz-unit-file.options rename to src/core/fuzz-unit-file.options diff --git a/src/core/meson.build b/src/core/meson.build index 3482bd4472..edfc73e627 100644 --- a/src/core/meson.build +++ b/src/core/meson.build @@ -1,16 +1,5 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -libcore_shared_sources = ''' - killall.c - killall.h - loopback-setup.c - loopback-setup.h - machine-id-setup.c - machine-id-setup.h - mount-setup.c - mount-setup.h -'''.split() - libcore_sources = ''' apparmor-setup.c apparmor-setup.h @@ -151,22 +140,12 @@ load_fragment_gperf_nulstr_c = custom_target( command : [awk, '-f', '@INPUT0@', '@INPUT1@'], capture : true) -# A convenience library to share code with other binaries: -# systemd-shutdown, systemd-remount-fs, systemd-machine-id-setup, … -libcore_shared = static_library( - 'core-shared', - libcore_shared_sources, - include_directories : includes, - dependencies : [versiondep, - libmount]) - libcore = static_library( 'core', libcore_sources, load_fragment_gperf_c, load_fragment_gperf_nulstr_c, include_directories : includes, - link_whole : libcore_shared, dependencies : [versiondep, threads, librt, @@ -179,6 +158,8 @@ libcore = static_library( libmount, libacl]) +core_includes = [includes, include_directories('.')] + systemd_sources = files('main.c') in_files = [['macros.systemd', rpmmacrosdir], @@ -222,3 +203,12 @@ if install_sysconfdir meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'user'))) meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd'))) endif + +############################################################ + +fuzzers += [ + [['src/core/fuzz-unit-file.c'], + [libcore, + libshared], + [libmount]], +] diff --git a/src/coredump/meson.build b/src/coredump/meson.build index 2e44556245..5607a78cf5 100644 --- a/src/coredump/meson.build +++ b/src/coredump/meson.build @@ -7,8 +7,9 @@ systemd_coredump_sources = files(''' '''.split()) if conf.get('HAVE_ELFUTILS') == 1 - systemd_coredump_sources += files(['stacktrace.c', - 'stacktrace.h']) + systemd_coredump_sources += files( + 'stacktrace.c', + 'stacktrace.h') endif coredumpctl_sources = files('coredumpctl.c') @@ -22,7 +23,5 @@ tests += [ [['src/coredump/test-coredump-vacuum.c', 'src/coredump/coredump-vacuum.c', 'src/coredump/coredump-vacuum.h'], - [], - [], - 'ENABLE_COREDUMP', 'manual'], + [], [], [], '', 'manual'], ] diff --git a/src/cryptenroll/meson.build b/src/cryptenroll/meson.build new file mode 100644 index 0000000000..0a795934e2 --- /dev/null +++ b/src/cryptenroll/meson.build @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +systemd_cryptenroll_sources = files( + 'cryptenroll-fido2.h', + 'cryptenroll-list.c', + 'cryptenroll-list.h', + 'cryptenroll-password.c', + 'cryptenroll-password.h', + 'cryptenroll-pkcs11.h', + 'cryptenroll-recovery.c', + 'cryptenroll-recovery.h', + 'cryptenroll-tpm2.h', + 'cryptenroll-wipe.c', + 'cryptenroll-wipe.h', + 'cryptenroll.c', + 'cryptenroll.h') + +if conf.get('HAVE_P11KIT') == 1 and conf.get('HAVE_OPENSSL') == 1 + systemd_cryptenroll_sources += files('cryptenroll-pkcs11.c') +endif + +if conf.get('HAVE_LIBFIDO2') == 1 + systemd_cryptenroll_sources += files('cryptenroll-fido2.c') +endif + +if conf.get('HAVE_TPM2') == 1 + systemd_cryptenroll_sources += files('cryptenroll-tpm2.c') +endif diff --git a/src/cryptsetup/meson.build b/src/cryptsetup/meson.build new file mode 100644 index 0000000000..26267fba51 --- /dev/null +++ b/src/cryptsetup/meson.build @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +systemd_cryptsetup_sources = files( + 'cryptsetup-fido2.h', + 'cryptsetup-keyfile.c', + 'cryptsetup-keyfile.h', + 'cryptsetup-pkcs11.h', + 'cryptsetup-tpm2.h', + 'cryptsetup.c') + +if conf.get('HAVE_P11KIT') == 1 + systemd_cryptsetup_sources += files('cryptsetup-pkcs11.c') +endif + +if conf.get('HAVE_LIBFIDO2') == 1 + systemd_cryptsetup_sources += files('cryptsetup-fido2.c') +endif + +if conf.get('HAVE_TPM2') == 1 + systemd_cryptsetup_sources += files('cryptsetup-tpm2.c') +endif diff --git a/src/fuzz/meson.build b/src/fuzz/meson.build index 83527a68fb..96528a191d 100644 --- a/src/fuzz/meson.build +++ b/src/fuzz/meson.build @@ -1,157 +1,25 @@ # SPDX-License-Identifier: LGPL-2.1-or-later fuzzers += [ - [['src/fuzz/fuzz-bus-message.c'], - [libshared], - []], + [['src/fuzz/fuzz-bus-message.c']], - [['src/fuzz/fuzz-catalog.c'], - [libjournal_core, - libshared], - []], + [['src/fuzz/fuzz-catalog.c']], - [['src/fuzz/fuzz-dns-packet.c', - dns_type_headers], - [libsystemd_resolve_core, - libshared], - [libgcrypt, - libgpg_error, - libm]], + [['src/fuzz/fuzz-json.c']], - [['src/fuzz/fuzz-dhcp6-client.c', - 'src/libsystemd-network/dhcp-identifier.h', - 'src/libsystemd-network/dhcp-identifier.c', - 'src/libsystemd-network/dhcp6-internal.h', - 'src/systemd/sd-dhcp6-client.h'], - [libshared, - libsystemd_network], - []], + [['src/fuzz/fuzz-varlink.c']], - [['src/fuzz/fuzz-dhcp-server.c'], - [libsystemd_network, - libshared], - []], + [['src/fuzz/fuzz-udev-database.c']], - [['src/fuzz/fuzz-lldp.c'], - [libshared, - libsystemd_network], - []], + [['src/fuzz/fuzz-compress.c']], - [['src/fuzz/fuzz-ndisc-rs.c', - 'src/libsystemd-network/dhcp-identifier.h', - 'src/libsystemd-network/dhcp-identifier.c', - 'src/libsystemd-network/icmp6-util.h', - 'src/systemd/sd-dhcp6-client.h', - 'src/systemd/sd-ndisc.h'], - [libshared, - libsystemd_network], - []], + [['src/fuzz/fuzz-bus-label.c']], - [['src/fuzz/fuzz-json.c'], - [libshared], - []], + [['src/fuzz/fuzz-env-file.c']], - [['src/fuzz/fuzz-varlink.c'], - [libshared], - []], + [['src/fuzz/fuzz-hostname-setup.c']], - [['src/fuzz/fuzz-unit-file.c'], - [libcore, - libshared], - [libmount]], + [['src/fuzz/fuzz-calendarspec.c']], - [['src/fuzz/fuzz-journald-audit.c', - 'src/fuzz/fuzz-journald.c'], - [libjournal_core, - libshared], - [libselinux]], - - [['src/fuzz/fuzz-journald-kmsg.c', - 'src/fuzz/fuzz-journald.c'], - [libjournal_core, - libshared], - [libselinux]], - - [['src/fuzz/fuzz-journald-native.c', - 'src/fuzz/fuzz-journald.c'], - [libjournal_core, - libshared], - [libselinux]], - - [['src/fuzz/fuzz-journald-native-fd.c', - 'src/fuzz/fuzz-journald.c'], - [libjournal_core, - libshared], - [libselinux]], - - [['src/fuzz/fuzz-journald-stream.c', - 'src/fuzz/fuzz-journald.c'], - [libjournal_core, - libshared], - [libselinux]], - - [['src/fuzz/fuzz-journald-syslog.c', - 'src/fuzz/fuzz-journald.c'], - [libjournal_core, - libshared], - [libselinux]], - - [['src/fuzz/fuzz-journal-remote.c'], - [libsystemd_journal_remote, - libshared], - []], - - [['src/fuzz/fuzz-udev-database.c'], - [libshared], - []], - - [['src/fuzz/fuzz-udev-rules.c'], - [libudevd_core, - libshared], - [threads, - libacl]], - - [['src/fuzz/fuzz-compress.c'], - [libshared], - []], - - [['src/fuzz/fuzz-bus-label.c'], - [libshared], - []], - - [['src/fuzz/fuzz-env-file.c'], - [libshared], - []], - - [['src/fuzz/fuzz-hostname-setup.c'], - [libshared], - []], - - [['src/fuzz/fuzz-nspawn-settings.c'], - [libshared, - libnspawn_core], - [libseccomp]], - - [['src/fuzz/fuzz-nspawn-oci.c'], - [libshared, - libnspawn_core], - [libseccomp]], - - [['src/fuzz/fuzz-calendarspec.c'], - [libshared], - []], - - [['src/fuzz/fuzz-time-util.c'], - [libshared], - []], - - [['src/fuzz/fuzz-xdg-desktop.c', - 'src/xdg-autostart-generator/xdg-autostart-service.h', - 'src/xdg-autostart-generator/xdg-autostart-service.c'], - [], - []], - - [['src/fuzz/fuzz-udev-rule-parse-value.c'], - [libshared], - []], + [['src/fuzz/fuzz-time-util.c']], ] diff --git a/src/home/meson.build b/src/home/meson.build index 61f1e08a8a..53a387fd97 100644 --- a/src/home/meson.build +++ b/src/home/meson.build @@ -1,5 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later +home_includes = [includes, include_directories('.')] + systemd_homework_sources = files(''' home-util.c home-util.h diff --git a/src/import/meson.build b/src/import/meson.build index 2207b8620e..b3bc682b0b 100644 --- a/src/import/meson.build +++ b/src/import/meson.build @@ -73,7 +73,7 @@ tests += [ [['src/import/test-qcow2.c', 'src/import/qcow2-util.c', 'src/import/qcow2-util.h'], - [libshared], + [], [libz], - 'HAVE_ZLIB', 'manual'], + [], 'HAVE_ZLIB', 'manual'], ] diff --git a/src/fuzz/fuzz-journal-remote.c b/src/journal-remote/fuzz-journal-remote.c similarity index 100% rename from src/fuzz/fuzz-journal-remote.c rename to src/journal-remote/fuzz-journal-remote.c diff --git a/src/fuzz/fuzz-journal-remote.options b/src/journal-remote/fuzz-journal-remote.options similarity index 100% rename from src/fuzz/fuzz-journal-remote.options rename to src/journal-remote/fuzz-journal-remote.options diff --git a/src/journal-remote/meson.build b/src/journal-remote/meson.build index 940cef3040..c42d85bc4b 100644 --- a/src/journal-remote/meson.build +++ b/src/journal-remote/meson.build @@ -16,16 +16,15 @@ libsystemd_journal_remote_sources = files(''' '''.split()) if conf.get('HAVE_MICROHTTPD') == 1 - libsystemd_journal_remote_sources += files(''' - microhttpd-util.h - microhttpd-util.c -'''.split()) + libsystemd_journal_remote_sources += files( + 'microhttpd-util.h', + 'microhttpd-util.c') endif libsystemd_journal_remote = static_library( 'systemd-journal-remote', libsystemd_journal_remote_sources, - include_directories : includes, + include_directories : journal_includes, dependencies : [threads, libmicrohttpd, libgnutls, @@ -75,3 +74,11 @@ if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1 chmod 755 $DESTDIR/var/log/journal/remote || :''') endif endif + +############################################################ + +fuzzers += [ + [['src/journal-remote/fuzz-journal-remote.c'], + [libsystemd_journal_remote, + libshared]], +] diff --git a/src/fuzz/fuzz-journald-audit.c b/src/journal/fuzz-journald-audit.c similarity index 100% rename from src/fuzz/fuzz-journald-audit.c rename to src/journal/fuzz-journald-audit.c diff --git a/src/fuzz/fuzz-journald-kmsg.c b/src/journal/fuzz-journald-kmsg.c similarity index 100% rename from src/fuzz/fuzz-journald-kmsg.c rename to src/journal/fuzz-journald-kmsg.c diff --git a/src/fuzz/fuzz-journald-native-fd.c b/src/journal/fuzz-journald-native-fd.c similarity index 100% rename from src/fuzz/fuzz-journald-native-fd.c rename to src/journal/fuzz-journald-native-fd.c diff --git a/src/fuzz/fuzz-journald-native.c b/src/journal/fuzz-journald-native.c similarity index 100% rename from src/fuzz/fuzz-journald-native.c rename to src/journal/fuzz-journald-native.c diff --git a/src/fuzz/fuzz-journald-stream.c b/src/journal/fuzz-journald-stream.c similarity index 100% rename from src/fuzz/fuzz-journald-stream.c rename to src/journal/fuzz-journald-stream.c diff --git a/src/fuzz/fuzz-journald-stream.options b/src/journal/fuzz-journald-stream.options similarity index 100% rename from src/fuzz/fuzz-journald-stream.options rename to src/journal/fuzz-journald-stream.options diff --git a/src/fuzz/fuzz-journald-syslog.c b/src/journal/fuzz-journald-syslog.c similarity index 100% rename from src/fuzz/fuzz-journald-syslog.c rename to src/journal/fuzz-journald-syslog.c diff --git a/src/fuzz/fuzz-journald.c b/src/journal/fuzz-journald.c similarity index 100% rename from src/fuzz/fuzz-journald.c rename to src/journal/fuzz-journald.c diff --git a/src/fuzz/fuzz-journald.h b/src/journal/fuzz-journald.h similarity index 100% rename from src/fuzz/fuzz-journald.h rename to src/journal/fuzz-journald.h diff --git a/src/journal/meson.build b/src/journal/meson.build index dd0982a158..171e276736 100644 --- a/src/journal/meson.build +++ b/src/journal/meson.build @@ -1,70 +1,6 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -journal_client_sources = files(''' - audit-type.c - audit-type.h - catalog.c - catalog.h - compress.c - compress.h - journal-def.h - journal-file.c - journal-file.h - journal-send.c - journal-vacuum.c - journal-vacuum.h - journal-verify.c - journal-verify.h - lookup3.c - lookup3.h - mmap-cache.c - mmap-cache.h - sd-journal.c -'''.split()) - -if conf.get('HAVE_GCRYPT') == 1 - journal_client_sources += files(''' - journal-authenticate.c - journal-authenticate.h - fsprg.c - fsprg.h - '''.split()) -endif - -############################################################ - -audit_type_includes = [config_h, - missing_audit_h, - 'linux/audit.h'] -if conf.get('HAVE_AUDIT') == 1 - audit_type_includes += 'libaudit.h' -endif - -generate_audit_type_list = find_program('generate-audit_type-list.sh') -audit_type_list_txt = custom_target( - 'audit_type-list.txt', - output : 'audit_type-list.txt', - command : [generate_audit_type_list, cpp] + audit_type_includes, - capture : true) - -audit_type_to_name = custom_target( - 'audit_type-to-name.h', - input : ['audit_type-to-name.awk', audit_type_list_txt], - output : 'audit_type-to-name.h', - command : [awk, '-f', '@INPUT0@', '@INPUT1@'], - capture : true) - -journal_client_sources += [audit_type_to_name] - -libjournal_client = static_library( - 'journal-client', - journal_client_sources, - include_directories : includes, - c_args : ['-fvisibility=default']) - -############################################################ - -libjournal_core_sources = files(''' +sources = files(''' journald-audit.c journald-audit.h journald-console.c @@ -85,20 +21,27 @@ libjournal_core_sources = files(''' journald-syslog.h journald-wall.c journald-wall.h - journal-internal.h '''.split()) +sources += custom_target( + 'journald-gperf.c', + input : 'journald-gperf.gperf', + output : 'journald-gperf.c', + command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) + +libjournal_core = static_library( + 'journal-core', + sources, + include_directories : includes, + install : false) + +journal_includes = [includes, include_directories('.')] + systemd_journald_sources = files(''' journald.c journald-server.h '''.split()) -journald_gperf_c = custom_target( - 'journald-gperf.c', - input : 'journald-gperf.gperf', - output : 'journald-gperf.c', - command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) - systemd_cat_sources = files('cat.c') journalctl_sources = files(''' @@ -131,3 +74,60 @@ if get_option('create-log-dirs') 'setfacl -nm g:wheel:rx,d:g:wheel:rx $DESTDIR/var/log/journal || :') endif endif + +############################################################ + +tests += [ + [['src/journal/test-journal-syslog.c'], + [libjournal_core, + libshared], + [threads, + libxz, + liblz4, + libselinux]], + + [['src/journal/test-journal-config.c'], + [libjournal_core, + libshared], + [libxz, + liblz4, + libselinux]], +] + +fuzzers += [ + [['src/journal/fuzz-journald-audit.c', + 'src/journal/fuzz-journald.c'], + [libjournal_core, + libshared], + [libselinux]], + + [['src/journal/fuzz-journald-kmsg.c', + 'src/journal/fuzz-journald.c'], + [libjournal_core, + libshared], + [libselinux]], + + [['src/journal/fuzz-journald-native.c', + 'src/journal/fuzz-journald.c'], + [libjournal_core, + libshared], + [libselinux]], + + [['src/journal/fuzz-journald-native-fd.c', + 'src/journal/fuzz-journald.c'], + [libjournal_core, + libshared], + [libselinux]], + + [['src/journal/fuzz-journald-stream.c', + 'src/journal/fuzz-journald.c'], + [libjournal_core, + libshared], + [libselinux]], + + [['src/journal/fuzz-journald-syslog.c', + 'src/journal/fuzz-journald.c'], + [libjournal_core, + libshared], + [libselinux]], +] diff --git a/src/fuzz/fuzz-dhcp-server.c b/src/libsystemd-network/fuzz-dhcp-server.c similarity index 100% rename from src/fuzz/fuzz-dhcp-server.c rename to src/libsystemd-network/fuzz-dhcp-server.c diff --git a/src/fuzz/fuzz-dhcp-server.options b/src/libsystemd-network/fuzz-dhcp-server.options similarity index 100% rename from src/fuzz/fuzz-dhcp-server.options rename to src/libsystemd-network/fuzz-dhcp-server.options diff --git a/src/fuzz/fuzz-dhcp6-client.c b/src/libsystemd-network/fuzz-dhcp6-client.c similarity index 100% rename from src/fuzz/fuzz-dhcp6-client.c rename to src/libsystemd-network/fuzz-dhcp6-client.c diff --git a/src/fuzz/fuzz-dhcp6-client.options b/src/libsystemd-network/fuzz-dhcp6-client.options similarity index 100% rename from src/fuzz/fuzz-dhcp6-client.options rename to src/libsystemd-network/fuzz-dhcp6-client.options diff --git a/src/fuzz/fuzz-lldp.c b/src/libsystemd-network/fuzz-lldp.c similarity index 100% rename from src/fuzz/fuzz-lldp.c rename to src/libsystemd-network/fuzz-lldp.c diff --git a/src/fuzz/fuzz-lldp.options b/src/libsystemd-network/fuzz-lldp.options similarity index 100% rename from src/fuzz/fuzz-lldp.options rename to src/libsystemd-network/fuzz-lldp.options diff --git a/src/fuzz/fuzz-ndisc-rs.c b/src/libsystemd-network/fuzz-ndisc-rs.c similarity index 100% rename from src/fuzz/fuzz-ndisc-rs.c rename to src/libsystemd-network/fuzz-ndisc-rs.c diff --git a/src/fuzz/fuzz-ndisc-rs.options b/src/libsystemd-network/fuzz-ndisc-rs.options similarity index 100% rename from src/fuzz/fuzz-ndisc-rs.options rename to src/libsystemd-network/fuzz-ndisc-rs.options diff --git a/src/libsystemd-network/meson.build b/src/libsystemd-network/meson.build index 8c68d74c82..6bc4a3f54b 100644 --- a/src/libsystemd-network/meson.build +++ b/src/libsystemd-network/meson.build @@ -47,3 +47,73 @@ libsystemd_network = static_library( 'systemd-network', sources, include_directories : includes) + +libsystemd_network_includes = [includes, include_directories('.')] + +############################################################ + +tests += [ + [['src/libsystemd-network/test-dhcp-option.c'], + [libshared, + libsystemd_network]], + + [['src/libsystemd-network/test-sd-dhcp-lease.c'], + [libshared, + libsystemd_network]], + + [['src/libsystemd-network/test-dhcp-client.c'], + [libshared, + libsystemd_network]], + + [['src/libsystemd-network/test-dhcp-server.c'], + [libshared, + libsystemd_network]], + + [['src/libsystemd-network/test-ipv4ll.c'], + [libshared, + libsystemd_network]], + + [['src/libsystemd-network/test-ipv4ll-manual.c'], + [libshared, + libsystemd_network], + [], [], '', 'manual'], + + [['src/libsystemd-network/test-acd.c'], + [libshared, + libsystemd_network], + [], [], '', 'manual'], + + [['src/libsystemd-network/test-ndisc-rs.c'], + [libshared, + libsystemd_network]], + + [['src/libsystemd-network/test-ndisc-ra.c'], + [libshared, + libsystemd_network]], + + [['src/libsystemd-network/test-dhcp6-client.c'], + [libshared, + libsystemd_network]], + + [['src/libsystemd-network/test-lldp.c'], + [libshared, + libsystemd_network]], +] + +fuzzers += [ + [['src/libsystemd-network/fuzz-dhcp6-client.c'], + [libshared, + libsystemd_network]], + + [['src/libsystemd-network/fuzz-dhcp-server.c'], + [libsystemd_network, + libshared]], + + [['src/libsystemd-network/fuzz-lldp.c'], + [libshared, + libsystemd_network]], + + [['src/libsystemd-network/fuzz-ndisc-rs.c'], + [libshared, + libsystemd_network]], +] diff --git a/src/libsystemd/meson.build b/src/libsystemd/meson.build index d22a7754e2..b8a9bbe222 100644 --- a/src/libsystemd/meson.build +++ b/src/libsystemd/meson.build @@ -1,13 +1,72 @@ # SPDX-License-Identifier: LGPL-2.1-or-later +sd_journal_sources = files( + 'sd-journal/audit-type.c', + 'sd-journal/audit-type.h', + 'sd-journal/catalog.c', + 'sd-journal/catalog.h', + 'sd-journal/compress.c', + 'sd-journal/compress.h', + 'sd-journal/journal-def.h', + 'sd-journal/journal-file.c', + 'sd-journal/journal-file.h', + 'sd-journal/journal-internal.h', + 'sd-journal/journal-send.c', + 'sd-journal/journal-vacuum.c', + 'sd-journal/journal-vacuum.h', + 'sd-journal/journal-verify.c', + 'sd-journal/journal-verify.h', + 'sd-journal/lookup3.c', + 'sd-journal/lookup3.h', + 'sd-journal/mmap-cache.c', + 'sd-journal/mmap-cache.h', + 'sd-journal/sd-journal.c') + +if conf.get('HAVE_GCRYPT') == 1 + sd_journal_sources += files( + 'sd-journal/fsprg.c', + 'sd-journal/fsprg.h', + 'sd-journal/journal-authenticate.c', + 'sd-journal/journal-authenticate.h') +endif + +audit_type_includes = [config_h, + missing_audit_h, + 'linux/audit.h'] +if conf.get('HAVE_AUDIT') == 1 + audit_type_includes += 'libaudit.h' +endif + +generate_audit_type_list = find_program('sd-journal/generate-audit_type-list.sh') +audit_type_list_txt = custom_target( + 'audit_type-list.txt', + output : 'audit_type-list.txt', + command : [generate_audit_type_list, cpp] + audit_type_includes, + capture : true) + +audit_type_to_name = custom_target( + 'audit_type-to-name.h', + input : ['sd-journal/audit_type-to-name.awk', audit_type_list_txt], + output : 'audit_type-to-name.h', + command : [awk, '-f', '@INPUT0@', '@INPUT1@'], + capture : true) + +sd_journal_sources += [audit_type_to_name] + +############################################################ + id128_sources = files(''' sd-id128/id128-util.c sd-id128/id128-util.h sd-id128/sd-id128.c '''.split()) +############################################################ + sd_daemon_sources = files('sd-daemon/sd-daemon.c') +############################################################ + sd_event_sources = files(''' sd-event/event-source.h sd-event/event-util.c @@ -15,8 +74,12 @@ sd_event_sources = files(''' sd-event/sd-event.c '''.split()) +############################################################ + sd_login_sources = files('sd-login/sd-login.c') +############################################################ + libsystemd_sources = files(''' sd-bus/bus-common-errors.c sd-bus/bus-common-errors.h @@ -91,7 +154,7 @@ libsystemd_sources = files(''' sd-resolve/resolve-private.h sd-resolve/sd-resolve.c sd-utf8/sd-utf8.c -'''.split()) + id128_sources + sd_daemon_sources + sd_event_sources + sd_login_sources +'''.split()) + sd_journal_sources + id128_sources + sd_daemon_sources + sd_event_sources + sd_login_sources disable_mempool_c = files('disable-mempool.c') @@ -101,16 +164,154 @@ libsystemd_static = static_library( 'systemd_static', libsystemd_sources, install : false, - include_directories : includes, + include_directories : libsystemd_includes, link_with : libbasic, dependencies : [threads, librt], c_args : libsystemd_c_args) -libsystemd_sym = 'src/libsystemd/libsystemd.sym' +libsystemd_sym = files('libsystemd.sym') +libsystemd_sym_path = join_paths(meson.current_source_dir(), 'libsystemd.sym') + +static_libsystemd = get_option('static-libsystemd') +static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic' configure_file( input : 'libsystemd.pc.in', output : 'libsystemd.pc', configuration : substs, install_dir : pkgconfiglibdir == 'no' ? '' : pkgconfiglibdir) + +############################################################ + +tests += [ + [['src/libsystemd/sd-journal/test-journal.c']], + + [['src/libsystemd/sd-journal/test-journal-send.c']], + + [['src/libsystemd/sd-journal/test-journal-match.c']], + + [['src/libsystemd/sd-journal/test-journal-enum.c'], + [], [], [], '', 'timeout=360'], + + [['src/libsystemd/sd-journal/test-journal-stream.c']], + + [['src/libsystemd/sd-journal/test-journal-flush.c']], + + [['src/libsystemd/sd-journal/test-journal-init.c']], + + [['src/libsystemd/sd-journal/test-journal-verify.c']], + + [['src/libsystemd/sd-journal/test-journal-interleaving.c']], + + [['src/libsystemd/sd-journal/test-mmap-cache.c']], + + [['src/libsystemd/sd-journal/test-catalog.c']], + + [['src/libsystemd/sd-journal/test-compress.c'], + [], + [liblz4, + libzstd, + libxz]], + + [['src/libsystemd/sd-journal/test-compress-benchmark.c'], + [], + [liblz4, + libzstd, + libxz], + [], '', 'timeout=90'], + + [['src/libsystemd/sd-journal/test-audit-type.c']], +] + +############################################################ + +tests += [ + [['src/libsystemd/sd-bus/test-bus-address.c'], + [], + [threads]], + + [['src/libsystemd/sd-bus/test-bus-marshal.c'], + [], + [threads, + libglib, + libgobject, + libgio, + libdbus]], + + [['src/libsystemd/sd-bus/test-bus-signature.c'], + [], + [threads]], + + [['src/libsystemd/sd-bus/test-bus-queue-ref-cycle.c'], + [], + [threads]], + + [['src/libsystemd/sd-bus/test-bus-watch-bind.c'], + [], + [threads], + [], '', 'timeout=120'], + + [['src/libsystemd/sd-bus/test-bus-chat.c'], + [], + [threads]], + + [['src/libsystemd/sd-bus/test-bus-cleanup.c'], + [], + [threads, + libseccomp]], + + [['src/libsystemd/sd-bus/test-bus-track.c'], + [], + [libseccomp]], + + [['src/libsystemd/sd-bus/test-bus-server.c'], + [], + [threads]], + + [['src/libsystemd/sd-bus/test-bus-objects.c'], + [], + [threads]], + + [['src/libsystemd/sd-bus/test-bus-vtable.c', + 'src/libsystemd/sd-bus/test-vtable-data.h']], + + [['src/libsystemd/sd-bus/test-bus-gvariant.c'], + [], + [libglib, + libgobject, + libgio]], + + [['src/libsystemd/sd-bus/test-bus-creds.c']], + + [['src/libsystemd/sd-bus/test-bus-match.c']], + + [['src/libsystemd/sd-bus/test-bus-benchmark.c'], + [], + [threads], + [], '', 'manual'], + + [['src/libsystemd/sd-bus/test-bus-introspect.c', + 'src/libsystemd/sd-bus/test-vtable-data.h']], + + [['src/libsystemd/sd-event/test-event.c']], + + [['src/libsystemd/sd-netlink/test-netlink.c']], + + [['src/libsystemd/sd-resolve/test-resolve.c'], + [], + [threads], + [], '', 'timeout=120'], + + [['src/libsystemd/sd-login/test-login.c']], + + [['src/libsystemd/sd-device/test-sd-device.c']], + + [['src/libsystemd/sd-device/test-sd-device-monitor.c']], +] + +if cxx_cmd != '' + tests += [ + [['src/libsystemd/sd-bus/test-bus-vtable-cc.cc']], + ] +endif diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c index 3ee22c9638..943877f0ea 100644 --- a/src/libsystemd/sd-bus/bus-control.c +++ b/src/libsystemd/sd-bus/bus-control.c @@ -13,7 +13,6 @@ #include "bus-control.h" #include "bus-internal.h" #include "bus-message.h" -#include "bus-util.h" #include "capability-util.h" #include "process-util.h" #include "stdio-util.h" diff --git a/src/libsystemd/sd-bus/bus-convenience.c b/src/libsystemd/sd-bus/bus-convenience.c index 0314642f3e..3e1143b187 100644 --- a/src/libsystemd/sd-bus/bus-convenience.c +++ b/src/libsystemd/sd-bus/bus-convenience.c @@ -7,7 +7,6 @@ #include "bus-message.h" #include "bus-signature.h" #include "bus-type.h" -#include "bus-util.h" #include "string-util.h" _public_ int sd_bus_emit_signalv( diff --git a/src/libsystemd/sd-bus/bus-creds.c b/src/libsystemd/sd-bus/bus-creds.c index 3896d94111..3134d8ef17 100644 --- a/src/libsystemd/sd-bus/bus-creds.c +++ b/src/libsystemd/sd-bus/bus-creds.c @@ -8,7 +8,6 @@ #include "bus-creds.h" #include "bus-label.h" #include "bus-message.h" -#include "bus-util.h" #include "capability-util.h" #include "cgroup-util.h" #include "errno-util.h" diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c index 6bba446932..ba8ffae522 100644 --- a/src/libsystemd/sd-bus/bus-kernel.c +++ b/src/libsystemd/sd-bus/bus-kernel.c @@ -20,7 +20,6 @@ #include "bus-kernel.h" #include "bus-label.h" #include "bus-message.h" -#include "bus-util.h" #include "capability-util.h" #include "fd-util.h" #include "fileio.h" diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c index d7da4bf009..fd74867afa 100644 --- a/src/libsystemd/sd-bus/bus-match.c +++ b/src/libsystemd/sd-bus/bus-match.c @@ -4,7 +4,6 @@ #include "bus-internal.h" #include "bus-match.h" #include "bus-message.h" -#include "bus-util.h" #include "fd-util.h" #include "fileio.h" #include "hexdecoct.h" diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c index 99b1704aee..f358a8699e 100644 --- a/src/libsystemd/sd-bus/bus-message.c +++ b/src/libsystemd/sd-bus/bus-message.c @@ -12,7 +12,6 @@ #include "bus-message.h" #include "bus-signature.h" #include "bus-type.h" -#include "bus-util.h" #include "fd-util.h" #include "io-util.h" #include "memfd-util.h" diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c index 275c4318a1..bfd42aea7d 100644 --- a/src/libsystemd/sd-bus/bus-objects.c +++ b/src/libsystemd/sd-bus/bus-objects.c @@ -8,7 +8,6 @@ #include "bus-signature.h" #include "bus-slot.h" #include "bus-type.h" -#include "bus-util.h" #include "missing_capability.h" #include "set.h" #include "string-util.h" diff --git a/src/libsystemd/sd-bus/bus-track.c b/src/libsystemd/sd-bus/bus-track.c index 5f8716e2aa..bc36673b83 100644 --- a/src/libsystemd/sd-bus/bus-track.c +++ b/src/libsystemd/sd-bus/bus-track.c @@ -5,7 +5,6 @@ #include "alloc-util.h" #include "bus-internal.h" #include "bus-track.h" -#include "bus-util.h" #include "string-util.h" struct track_item { diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 857193943a..6b1f25cc02 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -26,7 +26,6 @@ #include "bus-socket.h" #include "bus-track.h" #include "bus-type.h" -#include "bus-util.h" #include "cgroup-util.h" #include "def.h" #include "errno-util.h" diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c index 8c6711797a..13c08fe295 100644 --- a/src/libsystemd/sd-bus/test-bus-benchmark.c +++ b/src/libsystemd/sd-bus/test-bus-benchmark.c @@ -8,10 +8,10 @@ #include "alloc-util.h" #include "bus-internal.h" #include "bus-kernel.h" -#include "bus-util.h" #include "def.h" #include "fd-util.h" #include "missing_resource.h" +#include "string-util.h" #include "time-util.h" #include "util.h" diff --git a/src/libsystemd/sd-bus/test-bus-chat.c b/src/libsystemd/sd-bus/test-bus-chat.c index c3c31c65e6..a1d7ba173f 100644 --- a/src/libsystemd/sd-bus/test-bus-chat.c +++ b/src/libsystemd/sd-bus/test-bus-chat.c @@ -11,12 +11,12 @@ #include "bus-error.h" #include "bus-internal.h" #include "bus-match.h" -#include "bus-util.h" #include "errno-util.h" #include "fd-util.h" #include "format-util.h" #include "log.h" #include "macro.h" +#include "string-util.h" #include "tests.h" #include "util.h" diff --git a/src/libsystemd/sd-bus/test-bus-cleanup.c b/src/libsystemd/sd-bus/test-bus-cleanup.c index ece0a12bab..f563db74e6 100644 --- a/src/libsystemd/sd-bus/test-bus-cleanup.c +++ b/src/libsystemd/sd-bus/test-bus-cleanup.c @@ -6,7 +6,6 @@ #include "bus-internal.h" #include "bus-message.h" -#include "bus-util.h" #include "tests.h" static bool use_system_bus = false; diff --git a/src/libsystemd/sd-bus/test-bus-creds.c b/src/libsystemd/sd-bus/test-bus-creds.c index 6551e692f8..13801becc9 100644 --- a/src/libsystemd/sd-bus/test-bus-creds.c +++ b/src/libsystemd/sd-bus/test-bus-creds.c @@ -3,7 +3,6 @@ #include "sd-bus.h" #include "bus-dump.h" -#include "bus-util.h" #include "cgroup-util.h" #include "tests.h" diff --git a/src/libsystemd/sd-bus/test-bus-error.c b/src/libsystemd/sd-bus/test-bus-error.c index 2e3803c9b2..958884d56f 100644 --- a/src/libsystemd/sd-bus/test-bus-error.c +++ b/src/libsystemd/sd-bus/test-bus-error.c @@ -2,11 +2,12 @@ #include "sd-bus.h" +#include "alloc-util.h" #include "bus-common-errors.h" #include "bus-error.h" -#include "bus-util.h" #include "errno-list.h" #include "errno-util.h" +#include "string-util.h" static void test_error(void) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL, second = SD_BUS_ERROR_NULL; diff --git a/src/libsystemd/sd-bus/test-bus-gvariant.c b/src/libsystemd/sd-bus/test-bus-gvariant.c index b0033f1d13..edd8301d45 100644 --- a/src/libsystemd/sd-bus/test-bus-gvariant.c +++ b/src/libsystemd/sd-bus/test-bus-gvariant.c @@ -11,7 +11,6 @@ #include "bus-gvariant.h" #include "bus-internal.h" #include "bus-message.h" -#include "bus-util.h" #include "macro.h" #include "tests.h" #include "util.h" diff --git a/src/libsystemd/sd-bus/test-bus-match.c b/src/libsystemd/sd-bus/test-bus-match.c index aa6ddd336a..031e42ff46 100644 --- a/src/libsystemd/sd-bus/test-bus-match.c +++ b/src/libsystemd/sd-bus/test-bus-match.c @@ -3,7 +3,6 @@ #include "bus-match.h" #include "bus-message.h" #include "bus-slot.h" -#include "bus-util.h" #include "log.h" #include "macro.h" #include "memory-util.h" diff --git a/src/libsystemd/sd-bus/test-bus-objects.c b/src/libsystemd/sd-bus/test-bus-objects.c index 9116211886..80d2a5d98b 100644 --- a/src/libsystemd/sd-bus/test-bus-objects.c +++ b/src/libsystemd/sd-bus/test-bus-objects.c @@ -9,7 +9,6 @@ #include "bus-dump.h" #include "bus-internal.h" #include "bus-message.h" -#include "bus-util.h" #include "log.h" #include "macro.h" #include "strv.h" diff --git a/src/libsystemd/sd-bus/test-bus-server.c b/src/libsystemd/sd-bus/test-bus-server.c index 5cb100b2f0..e7a14716bc 100644 --- a/src/libsystemd/sd-bus/test-bus-server.c +++ b/src/libsystemd/sd-bus/test-bus-server.c @@ -6,10 +6,10 @@ #include "sd-bus.h" #include "bus-internal.h" -#include "bus-util.h" #include "log.h" #include "macro.h" #include "memory-util.h" +#include "string-util.h" struct context { int fds[2]; diff --git a/src/libsystemd/sd-device/test-sd-device-thread.c b/src/libsystemd/sd-device/test-sd-device-thread.c index 6f3015515b..763e98c114 100644 --- a/src/libsystemd/sd-device/test-sd-device-thread.c +++ b/src/libsystemd/sd-device/test-sd-device-thread.c @@ -1,19 +1,25 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include #include -#include #include #include #include "sd-device.h" #include "device-util.h" -#include "macro.h" + +#define handle_error_errno(error, msg) \ + ({ \ + errno = abs(error); \ + perror(msg); \ + EXIT_FAILURE; \ + }) static void* thread(void *p) { sd_device **d = p; - assert_se(!(*d = sd_device_unref(*d))); + *d = sd_device_unref(*d); return NULL; } @@ -22,18 +28,27 @@ int main(int argc, char *argv[]) { sd_device *loopback; pthread_t t; const char *key, *value; + int r; - assert_se(unsetenv("SYSTEMD_MEMPOOL") == 0); + unsetenv("SYSTEMD_MEMPOOL"); - assert_se(sd_device_new_from_syspath(&loopback, "/sys/class/net/lo") >= 0); + r = sd_device_new_from_syspath(&loopback, "/sys/class/net/lo"); + if (r < 0) + return handle_error_errno(r, "Failed to create loopback device object"); FOREACH_DEVICE_PROPERTY(loopback, key, value) printf("%s=%s\n", key, value); - assert_se(pthread_create(&t, NULL, thread, &loopback) == 0); - assert_se(pthread_join(t, NULL) == 0); + r = pthread_create(&t, NULL, thread, &loopback); + if (r != 0) + return handle_error_errno(r, "Failed to create thread"); - assert_se(!loopback); + r = pthread_join(t, NULL); + if (r != 0) + return handle_error_errno(r, "Failed to wait thread finished"); + + if (loopback) + return handle_error_errno(r, "loopback device is not unref()ed"); return 0; } diff --git a/src/libsystemd/sd-device/test-udev-device-thread.c b/src/libsystemd/sd-device/test-udev-device-thread.c deleted file mode 100644 index a493152d4a..0000000000 --- a/src/libsystemd/sd-device/test-udev-device-thread.c +++ /dev/null @@ -1,36 +0,0 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ - -#include -#include -#include -#include - -#include "libudev.h" - -#include "macro.h" - -static void* thread(void *p) { - struct udev_device **d = p; - - assert_se(!(*d = udev_device_unref(*d))); - - return NULL; -} - -int main(int argc, char *argv[]) { - struct udev_device *loopback; - pthread_t t; - - assert_se(unsetenv("SYSTEMD_MEMPOOL") == 0); - - assert_se(loopback = udev_device_new_from_syspath(NULL, "/sys/class/net/lo")); - - assert_se(udev_device_get_properties_list_entry(loopback)); - - assert_se(pthread_create(&t, NULL, thread, &loopback) == 0); - assert_se(pthread_join(t, NULL) == 0); - - assert_se(!loopback); - - return 0; -} diff --git a/src/journal/audit-type.c b/src/libsystemd/sd-journal/audit-type.c similarity index 100% rename from src/journal/audit-type.c rename to src/libsystemd/sd-journal/audit-type.c diff --git a/src/journal/audit-type.h b/src/libsystemd/sd-journal/audit-type.h similarity index 100% rename from src/journal/audit-type.h rename to src/libsystemd/sd-journal/audit-type.h diff --git a/src/journal/audit_type-to-name.awk b/src/libsystemd/sd-journal/audit_type-to-name.awk similarity index 100% rename from src/journal/audit_type-to-name.awk rename to src/libsystemd/sd-journal/audit_type-to-name.awk diff --git a/src/journal/catalog.c b/src/libsystemd/sd-journal/catalog.c similarity index 100% rename from src/journal/catalog.c rename to src/libsystemd/sd-journal/catalog.c diff --git a/src/journal/catalog.h b/src/libsystemd/sd-journal/catalog.h similarity index 100% rename from src/journal/catalog.h rename to src/libsystemd/sd-journal/catalog.h diff --git a/src/journal/compress.c b/src/libsystemd/sd-journal/compress.c similarity index 100% rename from src/journal/compress.c rename to src/libsystemd/sd-journal/compress.c diff --git a/src/journal/compress.h b/src/libsystemd/sd-journal/compress.h similarity index 100% rename from src/journal/compress.h rename to src/libsystemd/sd-journal/compress.h diff --git a/src/journal/fsprg.c b/src/libsystemd/sd-journal/fsprg.c similarity index 100% rename from src/journal/fsprg.c rename to src/libsystemd/sd-journal/fsprg.c diff --git a/src/journal/fsprg.h b/src/libsystemd/sd-journal/fsprg.h similarity index 100% rename from src/journal/fsprg.h rename to src/libsystemd/sd-journal/fsprg.h diff --git a/src/journal/generate-audit_type-list.sh b/src/libsystemd/sd-journal/generate-audit_type-list.sh similarity index 100% rename from src/journal/generate-audit_type-list.sh rename to src/libsystemd/sd-journal/generate-audit_type-list.sh diff --git a/src/journal/journal-authenticate.c b/src/libsystemd/sd-journal/journal-authenticate.c similarity index 100% rename from src/journal/journal-authenticate.c rename to src/libsystemd/sd-journal/journal-authenticate.c diff --git a/src/journal/journal-authenticate.h b/src/libsystemd/sd-journal/journal-authenticate.h similarity index 100% rename from src/journal/journal-authenticate.h rename to src/libsystemd/sd-journal/journal-authenticate.h diff --git a/src/journal/journal-def.h b/src/libsystemd/sd-journal/journal-def.h similarity index 100% rename from src/journal/journal-def.h rename to src/libsystemd/sd-journal/journal-def.h diff --git a/src/journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c similarity index 100% rename from src/journal/journal-file.c rename to src/libsystemd/sd-journal/journal-file.c diff --git a/src/journal/journal-file.h b/src/libsystemd/sd-journal/journal-file.h similarity index 100% rename from src/journal/journal-file.h rename to src/libsystemd/sd-journal/journal-file.h diff --git a/src/journal/journal-internal.h b/src/libsystemd/sd-journal/journal-internal.h similarity index 100% rename from src/journal/journal-internal.h rename to src/libsystemd/sd-journal/journal-internal.h diff --git a/src/journal/journal-send.c b/src/libsystemd/sd-journal/journal-send.c similarity index 100% rename from src/journal/journal-send.c rename to src/libsystemd/sd-journal/journal-send.c diff --git a/src/journal/journal-vacuum.c b/src/libsystemd/sd-journal/journal-vacuum.c similarity index 100% rename from src/journal/journal-vacuum.c rename to src/libsystemd/sd-journal/journal-vacuum.c diff --git a/src/journal/journal-vacuum.h b/src/libsystemd/sd-journal/journal-vacuum.h similarity index 100% rename from src/journal/journal-vacuum.h rename to src/libsystemd/sd-journal/journal-vacuum.h diff --git a/src/journal/journal-verify.c b/src/libsystemd/sd-journal/journal-verify.c similarity index 100% rename from src/journal/journal-verify.c rename to src/libsystemd/sd-journal/journal-verify.c diff --git a/src/journal/journal-verify.h b/src/libsystemd/sd-journal/journal-verify.h similarity index 100% rename from src/journal/journal-verify.h rename to src/libsystemd/sd-journal/journal-verify.h diff --git a/src/journal/lookup3.c b/src/libsystemd/sd-journal/lookup3.c similarity index 100% rename from src/journal/lookup3.c rename to src/libsystemd/sd-journal/lookup3.c diff --git a/src/journal/lookup3.h b/src/libsystemd/sd-journal/lookup3.h similarity index 100% rename from src/journal/lookup3.h rename to src/libsystemd/sd-journal/lookup3.h diff --git a/src/journal/mmap-cache.c b/src/libsystemd/sd-journal/mmap-cache.c similarity index 100% rename from src/journal/mmap-cache.c rename to src/libsystemd/sd-journal/mmap-cache.c diff --git a/src/journal/mmap-cache.h b/src/libsystemd/sd-journal/mmap-cache.h similarity index 100% rename from src/journal/mmap-cache.h rename to src/libsystemd/sd-journal/mmap-cache.h diff --git a/src/journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c similarity index 100% rename from src/journal/sd-journal.c rename to src/libsystemd/sd-journal/sd-journal.c diff --git a/src/journal/test-audit-type.c b/src/libsystemd/sd-journal/test-audit-type.c similarity index 100% rename from src/journal/test-audit-type.c rename to src/libsystemd/sd-journal/test-audit-type.c diff --git a/src/journal/test-catalog.c b/src/libsystemd/sd-journal/test-catalog.c similarity index 100% rename from src/journal/test-catalog.c rename to src/libsystemd/sd-journal/test-catalog.c diff --git a/src/journal/test-compress-benchmark.c b/src/libsystemd/sd-journal/test-compress-benchmark.c similarity index 100% rename from src/journal/test-compress-benchmark.c rename to src/libsystemd/sd-journal/test-compress-benchmark.c diff --git a/src/journal/test-compress.c b/src/libsystemd/sd-journal/test-compress.c similarity index 100% rename from src/journal/test-compress.c rename to src/libsystemd/sd-journal/test-compress.c diff --git a/src/journal/test-journal-enum.c b/src/libsystemd/sd-journal/test-journal-enum.c similarity index 100% rename from src/journal/test-journal-enum.c rename to src/libsystemd/sd-journal/test-journal-enum.c diff --git a/src/journal/test-journal-flush.c b/src/libsystemd/sd-journal/test-journal-flush.c similarity index 100% rename from src/journal/test-journal-flush.c rename to src/libsystemd/sd-journal/test-journal-flush.c diff --git a/src/journal/test-journal-init.c b/src/libsystemd/sd-journal/test-journal-init.c similarity index 100% rename from src/journal/test-journal-init.c rename to src/libsystemd/sd-journal/test-journal-init.c diff --git a/src/journal/test-journal-interleaving.c b/src/libsystemd/sd-journal/test-journal-interleaving.c similarity index 100% rename from src/journal/test-journal-interleaving.c rename to src/libsystemd/sd-journal/test-journal-interleaving.c diff --git a/src/journal/test-journal-match.c b/src/libsystemd/sd-journal/test-journal-match.c similarity index 100% rename from src/journal/test-journal-match.c rename to src/libsystemd/sd-journal/test-journal-match.c diff --git a/src/journal/test-journal-send.c b/src/libsystemd/sd-journal/test-journal-send.c similarity index 100% rename from src/journal/test-journal-send.c rename to src/libsystemd/sd-journal/test-journal-send.c diff --git a/src/journal/test-journal-stream.c b/src/libsystemd/sd-journal/test-journal-stream.c similarity index 100% rename from src/journal/test-journal-stream.c rename to src/libsystemd/sd-journal/test-journal-stream.c diff --git a/src/journal/test-journal-verify.c b/src/libsystemd/sd-journal/test-journal-verify.c similarity index 100% rename from src/journal/test-journal-verify.c rename to src/libsystemd/sd-journal/test-journal-verify.c diff --git a/src/journal/test-journal.c b/src/libsystemd/sd-journal/test-journal.c similarity index 100% rename from src/journal/test-journal.c rename to src/libsystemd/sd-journal/test-journal.c diff --git a/src/journal/test-mmap-cache.c b/src/libsystemd/sd-journal/test-mmap-cache.c similarity index 100% rename from src/journal/test-mmap-cache.c rename to src/libsystemd/sd-journal/test-mmap-cache.c diff --git a/src/libsystemd/sd-resolve/sd-resolve.c b/src/libsystemd/sd-resolve/sd-resolve.c index 2cfa22d280..6dae398acb 100644 --- a/src/libsystemd/sd-resolve/sd-resolve.c +++ b/src/libsystemd/sd-resolve/sd-resolve.c @@ -15,7 +15,7 @@ #include "sd-resolve.h" #include "alloc-util.h" -#include "dns-domain.h" +#include "dns-def.h" #include "errno-util.h" #include "fd-util.h" #include "io-util.h" diff --git a/src/libudev/meson.build b/src/libudev/meson.build index 3bd00ff4cc..b3ffb8b10a 100644 --- a/src/libudev/meson.build +++ b/src/libudev/meson.build @@ -1,29 +1,54 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -libudev_sources = files(''' - libudev.c - libudev-device.c - libudev-device-internal.h - libudev-enumerate.c - libudev-hwdb.c - libudev-list.c - libudev-list-internal.h - libudev-monitor.c - libudev-queue.c - libudev-util.c - libudev-util.h -'''.split()) +libudev_sources = files( + 'libudev-device.c', + 'libudev-device-internal.h', + 'libudev-enumerate.c', + 'libudev-hwdb.c', + 'libudev-list.c', + 'libudev-list-internal.h', + 'libudev-monitor.c', + 'libudev-queue.c', + 'libudev-util.c', + 'libudev-util.h', + 'libudev.c', + 'libudev.h') ############################################################ +libudev_includes = [includes, include_directories('.')] + libudev_sym = files('libudev.sym') -libudev_sym_path = meson.current_source_dir() + '/libudev.sym' +libudev_sym_path = join_paths(meson.current_source_dir(), 'libudev.sym') install_headers('libudev.h') -libudev_h_path = '@0@/libudev.h'.format(meson.current_source_dir()) +libudev_h_path = join_paths(meson.current_source_dir(), 'libudev.h') + +libudev_basic = static_library( + 'udev-basic', + libudev_sources, + include_directories : includes, + c_args : ['-fvisibility=default']) + +libudev_static = static_library( + 'udev_static', + include_directories : includes, + link_with : udev_link_with, + link_whole : libudev_basic) + +static_libudev = get_option('static-libudev') +static_libudev_pic = static_libudev == 'true' or static_libudev == 'pic' configure_file( input : 'libudev.pc.in', output : 'libudev.pc', configuration : substs, install_dir : pkgconfiglibdir == 'no' ? '' : pkgconfiglibdir) + +############################################################ + +tests += [ + [['src/libudev/test-libudev.c'], + [libshared, + libudev_static]], +] diff --git a/src/test/test-libudev.c b/src/libudev/test-libudev.c similarity index 100% rename from src/test/test-libudev.c rename to src/libudev/test-libudev.c diff --git a/src/libudev/test-udev-device-thread.c b/src/libudev/test-udev-device-thread.c new file mode 100644 index 0000000000..3f0341a698 --- /dev/null +++ b/src/libudev/test-udev-device-thread.c @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include +#include +#include +#include + +#include "libudev.h" + +#define handle_error_errno(error, msg) \ + ({ \ + errno = abs(error); \ + perror(msg); \ + EXIT_FAILURE; \ + }) + +static void* thread(void *p) { + struct udev_device **d = p; + + *d = udev_device_unref(*d); + + return NULL; +} + +int main(int argc, char *argv[]) { + struct udev_device *loopback; + struct udev_list_entry *entry, *e; + pthread_t t; + int r; + + unsetenv("SYSTEMD_MEMPOOL"); + + loopback = udev_device_new_from_syspath(NULL, "/sys/class/net/lo"); + if (!loopback) + return handle_error_errno(errno, "Failed to create loopback device object"); + + entry = udev_device_get_properties_list_entry(loopback); + udev_list_entry_foreach(e, entry) + printf("%s=%s\n", udev_list_entry_get_name(e), udev_list_entry_get_value(e)); + + r = pthread_create(&t, NULL, thread, &loopback); + if (r != 0) + return handle_error_errno(r, "Failed to create thread"); + + r = pthread_join(t, NULL); + if (r != 0) + return handle_error_errno(r, "Failed to wait thread finished"); + + if (loopback) + return handle_error_errno(r, "loopback device is not unref()ed"); + + return 0; +} diff --git a/src/locale/meson.build b/src/locale/meson.build index 6e3500d099..4cbf2d278c 100644 --- a/src/locale/meson.build +++ b/src/locale/meson.build @@ -32,7 +32,5 @@ endif tests += [ [['src/locale/test-keymap-util.c', 'src/locale/keymap-util.c', - 'src/locale/keymap-util.h'], - [libshared], - []], + 'src/locale/keymap-util.h']], ] diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c index 10cc7d960b..b70afea62e 100644 --- a/src/login/logind-seat.c +++ b/src/login/logind-seat.c @@ -8,11 +8,11 @@ #include "sd-messages.h" #include "alloc-util.h" +#include "devnode-acl.h" #include "errno-util.h" #include "fd-util.h" #include "fileio.h" #include "format-util.h" -#include "logind-acl.h" #include "logind-seat-dbus.h" #include "logind-seat.h" #include "logind-session-dbus.h" diff --git a/src/login/meson.build b/src/login/meson.build index 9c7545790c..ca64492383 100644 --- a/src/login/meson.build +++ b/src/login/meson.build @@ -12,7 +12,6 @@ logind_gperf_c = custom_target( command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) liblogind_core_sources = files(''' - logind-acl.h logind-action.c logind-action.h logind-brightness.c @@ -45,11 +44,6 @@ liblogind_core_sources = files(''' liblogind_core_sources += [logind_gperf_c] -logind_acl_c = files('logind-acl.c') -if conf.get('HAVE_ACL') == 1 - liblogind_core_sources += logind_acl_c -endif - liblogind_core = static_library( 'logind-core', liblogind_core_sources, @@ -122,3 +116,17 @@ if conf.get('ENABLE_LOGIND') == 1 install : pamconfdir != 'no', install_dir : pamconfdir) endif + +############################################################ + +tests += [ + [['src/login/test-login-shared.c']], + + [['src/login/test-inhibit.c'], + [], [], [], '', 'manual'], + + [['src/login/test-login-tables.c'], + [liblogind_core, + libshared], + [threads]], +] diff --git a/src/machine/meson.build b/src/machine/meson.build index ebbd46d4f2..9b9ad1d8a9 100644 --- a/src/machine/meson.build +++ b/src/machine/meson.build @@ -39,6 +39,5 @@ tests += [ [['src/machine/test-machine-tables.c'], [libmachine_core, libshared], - [threads], - 'ENABLE_MACHINED'], + [threads]], ] diff --git a/src/network/meson.build b/src/network/meson.build index 72ca9b43e0..5993db8d06 100644 --- a/src/network/meson.build +++ b/src/network/meson.build @@ -181,45 +181,41 @@ network_generator_sources = files(''' generator/network-generator.h '''.split()) -network_include_dir = [includes, include_directories(['.', 'netdev', 'tc'])] +sources += custom_target( + 'networkd-gperf.c', + input : 'networkd-gperf.gperf', + output : 'networkd-gperf.c', + command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) + +sources += custom_target( + 'networkd-network-gperf.c', + input : 'networkd-network-gperf.gperf', + output : 'networkd-network-gperf.c', + command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) + +sources += custom_target( + 'netdev-gperf.c', + input : 'netdev/netdev-gperf.gperf', + output : 'netdev-gperf.c', + command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) + +if get_option('link-networkd-shared') + networkd_link_with = [libshared] +else + networkd_link_with = [libsystemd_static, + libshared_static, + libbasic_gcrypt] +endif + +network_includes = [libsystemd_network_includes, include_directories(['.', 'netdev', 'tc'])] + +libnetworkd_core = static_library( + 'networkd-core', + sources, + include_directories : network_includes, + link_with : [networkd_link_with]) if conf.get('ENABLE_NETWORKD') == 1 - if get_option('link-networkd-shared') - networkd_link_with = [libshared] - else - networkd_link_with = [libsystemd_static, - libshared_static, - libjournal_client, - libbasic_gcrypt] - endif - - networkd_gperf_c = custom_target( - 'networkd-gperf.c', - input : 'networkd-gperf.gperf', - output : 'networkd-gperf.c', - command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) - - networkd_network_gperf_c = custom_target( - 'networkd-network-gperf.c', - input : 'networkd-network-gperf.gperf', - output : 'networkd-network-gperf.c', - command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) - - netdev_gperf_c = custom_target( - 'netdev-gperf.c', - input : 'netdev/netdev-gperf.gperf', - output : 'netdev-gperf.c', - command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) - - libnetworkd_core = static_library( - 'networkd-core', - sources, - networkd_gperf_c, - networkd_network_gperf_c, - netdev_gperf_c, - include_directories : network_include_dir, - link_with : [networkd_link_with]) - install_data('org.freedesktop.network1.conf', install_dir : dbuspolicydir) install_data('org.freedesktop.network1.service', @@ -239,53 +235,44 @@ if conf.get('ENABLE_NETWORKD') == 1 install_data('networkd.conf', install_dir : pkgsysconfdir) endif - - fuzzers += [ - [['src/network/fuzz-netdev-parser.c', - 'src/fuzz/fuzz.h'], - [libnetworkd_core, - libsystemd_network, - networkd_link_with], - [threads], - [], - network_include_dir], - - [['src/network/fuzz-network-parser.c', - 'src/fuzz/fuzz.h'], - [libnetworkd_core, - libsystemd_network, - networkd_link_with], - [threads], - [], - network_include_dir], - ] - - tests += [ - [['src/network/test-networkd-conf.c'], - [libnetworkd_core, - libsystemd_network], - [], '', '', [], network_include_dir], - - [['src/network/test-network.c'], - [libnetworkd_core, - libsystemd_network, - networkd_link_with], - [threads], - '', '', [], network_include_dir], - - [['src/network/test-network-tables.c', - test_tables_h], - [libnetworkd_core, - libsystemd_network, - networkd_link_with], - [threads], - '', '', [], - [network_include_dir]], - - [['src/network/generator/test-network-generator.c', - 'src/network/generator/network-generator.c', - 'src/network/generator/network-generator.h'], - [networkd_link_with], - [], '', '', [], network_include_dir], - ] endif + +fuzzers += [ + [['src/network/fuzz-netdev-parser.c'], + [libnetworkd_core, + libsystemd_network, + networkd_link_with], + [threads], + network_includes], + + [['src/network/fuzz-network-parser.c'], + [libnetworkd_core, + libsystemd_network, + networkd_link_with], + [threads], + network_includes], +] + +tests += [ + [['src/network/test-networkd-conf.c'], + [libnetworkd_core, + libsystemd_network], + [], + network_includes], + + [['src/network/test-network.c'], + [libnetworkd_core, + libsystemd_network], + [threads], + network_includes], + + [['src/network/test-network-tables.c'], + [libnetworkd_core, + libsystemd_network], + [threads], + network_includes], + + [['src/network/generator/test-network-generator.c', + 'src/network/generator/network-generator.c', + 'src/network/generator/network-generator.h']], +] diff --git a/src/fuzz/fuzz-nspawn-oci.c b/src/nspawn/fuzz-nspawn-oci.c similarity index 100% rename from src/fuzz/fuzz-nspawn-oci.c rename to src/nspawn/fuzz-nspawn-oci.c diff --git a/src/fuzz/fuzz-nspawn-oci.options b/src/nspawn/fuzz-nspawn-oci.options similarity index 100% rename from src/fuzz/fuzz-nspawn-oci.options rename to src/nspawn/fuzz-nspawn-oci.options diff --git a/src/fuzz/fuzz-nspawn-settings.c b/src/nspawn/fuzz-nspawn-settings.c similarity index 100% rename from src/fuzz/fuzz-nspawn-settings.c rename to src/nspawn/fuzz-nspawn-settings.c diff --git a/src/fuzz/fuzz-nspawn-settings.options b/src/nspawn/fuzz-nspawn-settings.options similarity index 100% rename from src/fuzz/fuzz-nspawn-settings.options rename to src/nspawn/fuzz-nspawn-settings.options diff --git a/src/nspawn/meson.build b/src/nspawn/meson.build index 539ed56c36..172ded43c1 100644 --- a/src/nspawn/meson.build +++ b/src/nspawn/meson.build @@ -46,6 +46,8 @@ libnspawn_core = static_library( systemd_nspawn_sources = files('nspawn.c') +############################################################ + tests += [ [['src/nspawn/test-nspawn-tables.c'], [libnspawn_core, @@ -56,5 +58,17 @@ tests += [ [libnspawn_core, libshared], [libacl], - '', 'manual'], + [], '', 'manual'], +] + +fuzzers += [ + [['src/nspawn/fuzz-nspawn-settings.c'], + [libshared, + libnspawn_core], + [libseccomp]], + + [['src/nspawn/fuzz-nspawn-oci.c'], + [libshared, + libnspawn_core], + [libseccomp]], ] diff --git a/src/oom/meson.build b/src/oom/meson.build index a32c366237..4e1c8543c8 100644 --- a/src/oom/meson.build +++ b/src/oom/meson.build @@ -15,14 +15,6 @@ oomctl_sources = files(''' '''.split()) if conf.get('ENABLE_OOMD') == 1 - tests += [ - [['src/oom/test-oomd-util.c', - 'src/oom/oomd-util.c', - 'src/oom/oomd-util.h'], - [], - []] - ] - install_data('org.freedesktop.oom1.conf', install_dir : dbuspolicydir) @@ -34,3 +26,9 @@ if conf.get('ENABLE_OOMD') == 1 install_dir : pkgsysconfdir) endif endif + +tests += [ + [['src/oom/test-oomd-util.c', + 'src/oom/oomd-util.c', + 'src/oom/oomd-util.h']], +] diff --git a/src/fuzz/fuzz-dns-packet.c b/src/resolve/fuzz-dns-packet.c similarity index 100% rename from src/fuzz/fuzz-dns-packet.c rename to src/resolve/fuzz-dns-packet.c diff --git a/src/fuzz/fuzz-dns-packet.options b/src/resolve/fuzz-dns-packet.options similarity index 100% rename from src/fuzz/fuzz-dns-packet.options rename to src/resolve/fuzz-dns-packet.options diff --git a/src/resolve/meson.build b/src/resolve/meson.build index d4cb5812a3..f34e7ac680 100644 --- a/src/resolve/meson.build +++ b/src/resolve/meson.build @@ -1,5 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later +resolve_includes = [includes, include_directories('.')] + basic_dns_sources = files(''' resolved-dns-dnssec.c resolved-dns-dnssec.h @@ -12,10 +14,9 @@ basic_dns_sources = files(''' resolved-dns-question.c resolved-dns-question.h dns-type.c + dns-type.h '''.split()) -dns_type_h = files('dns-type.h')[0] - systemd_resolved_sources = files(''' resolved-bus.c resolved-bus.h @@ -79,78 +80,67 @@ resolvectl_sources = files(''' dns_type_list_txt = custom_target( 'dns_type-list.txt', - input : ['generate-dns_type-list.sed', dns_type_h], + input : ['generate-dns_type-list.sed', 'dns-type.h'], output : 'dns_type-list.txt', command : [sed, '-n', '-r', '-f', '@INPUT0@', '@INPUT1@'], capture : true) generate_dns_type_gperf = find_program('generate-dns_type-gperf.py') -dns_type_headers = [dns_type_h] -foreach item : [['dns_type', dns_type_list_txt, 'dns_type', 'DNS_TYPE_']] +gperf_file = custom_target( + 'dns_type-from-name.gperf', + input : dns_type_list_txt, + output : 'dns_type-from-name.gperf', + command : [generate_dns_type_gperf, 'dns_type', 'DNS_TYPE_', '@INPUT@'], + capture : true) - fname = '@0@-from-name.gperf'.format(item[0]) - gperf_file = custom_target( - fname, - input : item[1], - output : fname, - command : [generate_dns_type_gperf, item[2], item[3], '@INPUT@'], - capture : true) +basic_dns_sources += custom_target( + 'dns_type-from-name.h', + input : gperf_file, + output : 'dns_type-from-name.h', + command : [gperf, + '-L', 'ANSI-C', '-t', '--ignore-case', + '-N', 'lookup_dns_type', + '-H', 'hash_dns_type_name', + '-p', '-C', + '@INPUT@'], + capture : true) - fname = '@0@-from-name.h'.format(item[0]) - target1 = custom_target( - fname, - input : gperf_file, - output : fname, - command : [gperf, - '-L', 'ANSI-C', '-t', '--ignore-case', - '-N', 'lookup_@0@'.format(item[2]), - '-H', 'hash_@0@_name'.format(item[2]), - '-p', '-C', - '@INPUT@'], - capture : true) +basic_dns_sources += custom_target( + 'dns_type-to-name.h', + input : ['dns_type-to-name.awk', dns_type_list_txt], + output : 'dns_type-to-name.h', + command : [awk, '-f', '@INPUT0@', '@INPUT1@'], + capture : true) - fname = '@0@-to-name.h'.format(item[0]) - awkscript = '@0@-to-name.awk'.format(item[0]) - target2 = custom_target( - fname, - input : [awkscript, item[1]], - output : fname, - command : [awk, '-f', '@INPUT0@', '@INPUT1@'], - capture : true) +libsystemd_resolve_core = static_library( + 'systemd-resolve-core', + basic_dns_sources, + include_directories : includes) - dns_type_headers += [target1, target2] -endforeach - -resolved_gperf_c = custom_target( +systemd_resolved_sources += custom_target( 'resolved_gperf.c', input : 'resolved-gperf.gperf', output : 'resolved-gperf.c', command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) -resolved_dnssd_gperf_c = custom_target( +systemd_resolved_sources += custom_target( 'resolved_dnssd_gperf.c', input : 'resolved-dnssd-gperf.gperf', output : 'resolved-dnssd-gperf.c', command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) -libsystemd_resolve_core = static_library( - 'systemd-resolve-core', - basic_dns_sources, - dns_type_headers, - include_directories : includes) - -systemd_resolved_sources += [resolved_gperf_c, resolved_dnssd_gperf_c] - systemd_resolved_dependencies = [threads, libgpg_error, libm] if conf.get('ENABLE_DNS_OVER_TLS') == 1 if conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1 - systemd_resolved_sources += files('resolved-dnstls-gnutls.c', - 'resolved-dnstls-gnutls.h') + systemd_resolved_sources += files( + 'resolved-dnstls-gnutls.c', + 'resolved-dnstls-gnutls.h') systemd_resolved_dependencies += libgnutls elif conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1 - systemd_resolved_sources += files('resolved-dnstls-openssl.c', - 'resolved-dnstls-openssl.h') + systemd_resolved_sources += files( + 'resolved-dnstls-openssl.c', + 'resolved-dnstls-openssl.h') systemd_resolved_dependencies += libopenssl else error('unknown dependency for supporting DNS-over-TLS') @@ -178,25 +168,22 @@ if conf.get('ENABLE_RESOLVE') == 1 install_dir : rootlibexecdir) endif -tests += [ - [['src/resolve/test-resolve-tables.c', - dns_type_headers, - 'src/shared/test-tables.h'], - [libsystemd_resolve_core, - libshared], - [libgcrypt, - libgpg_error, - libm], - 'ENABLE_RESOLVE'], +############################################################ - [['src/resolve/test-dns-packet.c', - dns_type_headers], +tests += [ + [['src/resolve/test-resolve-tables.c'], [libsystemd_resolve_core, libshared], [libgcrypt, libgpg_error, - libm], - 'ENABLE_RESOLVE'], + libm]], + + [['src/resolve/test-dns-packet.c'], + [libsystemd_resolve_core, + libshared], + [libgcrypt, + libgpg_error, + libm]], [['src/resolve/test-resolved-etc-hosts.c', 'src/resolve/resolved-etc-hosts.c', @@ -205,31 +192,32 @@ tests += [ libshared], [libgcrypt, libgpg_error, - libm], - 'ENABLE_RESOLVE'], + libm]], - [['src/resolve/test-resolved-packet.c', - dns_type_headers], + [['src/resolve/test-resolved-packet.c'], [libsystemd_resolve_core, libshared], [libgcrypt, libgpg_error, - libm], - 'ENABLE_RESOLVE'], + libm]], - [['src/resolve/test-dnssec.c', - dns_type_headers], + [['src/resolve/test-dnssec.c'], [libsystemd_resolve_core, libshared], [libgcrypt, libgpg_error, - libm], - 'ENABLE_RESOLVE'], + libm]], [['src/resolve/test-dnssec-complex.c', - 'src/resolve/dns-type.c', - dns_type_headers], - [], - [], - 'ENABLE_RESOLVE', 'manual'], + 'src/resolve/dns-type.c'], + [], [], resolve_includes, '', 'manual'], +] + +fuzzers += [ + [['src/resolve/fuzz-dns-packet.c'], + [libsystemd_resolve_core, + libshared], + [libgcrypt, + libgpg_error, + libm]], ] diff --git a/src/login/logind-acl.c b/src/shared/devnode-acl.c similarity index 99% rename from src/login/logind-acl.c rename to src/shared/devnode-acl.c index ed615e23f8..07e29e1019 100644 --- a/src/login/logind-acl.c +++ b/src/shared/devnode-acl.c @@ -7,11 +7,11 @@ #include "acl-util.h" #include "alloc-util.h" #include "device-util.h" +#include "devnode-acl.h" #include "dirent-util.h" #include "escape.h" #include "fd-util.h" #include "format-util.h" -#include "logind-acl.h" #include "set.h" #include "string-util.h" #include "util.h" diff --git a/src/login/logind-acl.h b/src/shared/devnode-acl.h similarity index 100% rename from src/login/logind-acl.h rename to src/shared/devnode-acl.h diff --git a/src/shared/dns-domain.h b/src/shared/dns-domain.h index 77f596294d..c25fcaacc2 100644 --- a/src/shared/dns-domain.h +++ b/src/shared/dns-domain.h @@ -6,24 +6,10 @@ #include #include +#include "dns-def.h" #include "hashmap.h" #include "in-addr-util.h" -/* Length of a single label, with all escaping removed, excluding any trailing dot or NUL byte */ -#define DNS_LABEL_MAX 63 - -/* Worst case length of a single label, with all escaping applied and room for a trailing NUL byte. */ -#define DNS_LABEL_ESCAPED_MAX (DNS_LABEL_MAX*4+1) - -/* Maximum length of a full hostname, consisting of a series of unescaped labels, and no trailing dot or NUL byte */ -#define DNS_HOSTNAME_MAX 253 - -/* Maximum length of a full hostname, on the wire, including the final NUL byte */ -#define DNS_WIRE_FORMAT_HOSTNAME_MAX 255 - -/* Maximum number of labels per valid hostname */ -#define DNS_N_LABELS_MAX 127 - typedef enum DNSLabelFlags { DNS_LABEL_LDH = 1 << 0, /* Follow the "LDH" rule — only letters, digits, and internal hyphens. */ DNS_LABEL_NO_ESCAPES = 1 << 1, /* Do not treat backslashes specially */ diff --git a/src/shared/efi-loader-features.h b/src/shared/efi-loader-features.h new file mode 120000 index 0000000000..481a053954 --- /dev/null +++ b/src/shared/efi-loader-features.h @@ -0,0 +1 @@ +../boot/efi/loader-features.h \ No newline at end of file diff --git a/src/shared/efi-loader.h b/src/shared/efi-loader.h index 34476f4ced..7621794736 100644 --- a/src/shared/efi-loader.h +++ b/src/shared/efi-loader.h @@ -1,10 +1,11 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once -#include "efivars.h" - #include +#include "efi-loader-features.h" +#include "efivars.h" + #if ENABLE_EFI int efi_reboot_to_firmware_supported(void); diff --git a/src/core/killall.c b/src/shared/killall.c similarity index 100% rename from src/core/killall.c rename to src/shared/killall.c diff --git a/src/core/killall.h b/src/shared/killall.h similarity index 100% rename from src/core/killall.h rename to src/shared/killall.h diff --git a/src/core/loopback-setup.c b/src/shared/loopback-setup.c similarity index 100% rename from src/core/loopback-setup.c rename to src/shared/loopback-setup.c diff --git a/src/core/loopback-setup.h b/src/shared/loopback-setup.h similarity index 100% rename from src/core/loopback-setup.h rename to src/shared/loopback-setup.h diff --git a/src/core/machine-id-setup.c b/src/shared/machine-id-setup.c similarity index 100% rename from src/core/machine-id-setup.c rename to src/shared/machine-id-setup.c diff --git a/src/core/machine-id-setup.h b/src/shared/machine-id-setup.h similarity index 100% rename from src/core/machine-id-setup.h rename to src/shared/machine-id-setup.h diff --git a/src/shared/meson.build b/src/shared/meson.build index 7f522bc27e..0f50522b6a 100644 --- a/src/shared/meson.build +++ b/src/shared/meson.build @@ -78,6 +78,7 @@ shared_sources = files(''' daemon-util.h dev-setup.c dev-setup.h + devnode-acl.h dissect-image.c dissect-image.h dm-util.c @@ -86,6 +87,7 @@ shared_sources = files(''' dns-domain.h dropin.c dropin.h + efi-loader-features.h efi-loader.c efi-loader.h enable-mempool.c @@ -144,6 +146,8 @@ shared_sources = files(''' json-internal.h json.c json.h + killall.c + killall.h libcrypt-util.c libcrypt-util.h libfido2-util.c @@ -164,6 +168,10 @@ shared_sources = files(''' logs-show.h loop-util.c loop-util.h + loopback-setup.c + loopback-setup.h + machine-id-setup.c + machine-id-setup.h machine-image.c machine-image.h machine-pool.c @@ -174,6 +182,8 @@ shared_sources = files(''' mkfs-util.c mkfs-util.h module-util.h + mount-setup.c + mount-setup.h mount-util.c mount-util.h net-condition.c @@ -243,8 +253,6 @@ shared_sources = files(''' udev-util.h uid-range.c uid-range.h - unit-file.c - unit-file.h user-record-nss.c user-record-nss.h user-record-show.c @@ -273,12 +281,13 @@ shared_sources = files(''' '''.split()) if get_option('tests') != 'false' - shared_sources += files('tests.c', 'tests.h') + shared_sources += files(''' + test-tables.h + tests.c + tests.h + '''.split()) endif -test_tables_h = files('test-tables.h') -shared_sources += test_tables_h - generate_syscall_list = find_program('generate-syscall-list.py') fname = 'syscall-list.h' syscall_list_h = custom_target( @@ -290,7 +299,10 @@ syscall_list_h = custom_target( capture : true) if conf.get('HAVE_ACL') == 1 - shared_sources += files('acl-util.c') + shared_sources += files(''' + acl-util.c + devnode-acl.c + '''.split()) endif if conf.get('ENABLE_UTMP') == 1 @@ -311,10 +323,9 @@ if conf.get('HAVE_KMOD') == 1 endif if conf.get('HAVE_PAM') == 1 - shared_sources += files(''' - pam-util.c - pam-util.h -'''.split()) + shared_sources += files( + 'pam-util.c', + 'pam-util.h') endif if conf.get('ENABLE_NSCD') == 1 @@ -399,8 +410,7 @@ libshared = shared_library( link_whole : [libshared_static, libbasic, libbasic_gcrypt, - libsystemd_static, - libjournal_client], + libsystemd_static], c_args : ['-fvisibility=default'], dependencies : libshared_deps, install : true, diff --git a/src/core/mount-setup.c b/src/shared/mount-setup.c similarity index 100% rename from src/core/mount-setup.c rename to src/shared/mount-setup.c diff --git a/src/core/mount-setup.h b/src/shared/mount-setup.h similarity index 100% rename from src/core/mount-setup.h rename to src/shared/mount-setup.h diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c index b5f9ad9adc..03d039f778 100644 --- a/src/shared/seccomp-util.c +++ b/src/shared/seccomp-util.c @@ -2151,3 +2151,41 @@ uint32_t scmp_act_kill_process(void) { return SCMP_ACT_KILL; /* same as SCMP_ACT_KILL_THREAD */ } + +int parse_syscall_and_errno(const char *in, char **name, int *error) { + _cleanup_free_ char *n = NULL; + char *p; + int e = -1; + + assert(in); + assert(name); + assert(error); + + /* + * This parse "syscall:errno" like "uname:EILSEQ", "@sync:255". + * If errno is omitted, then error is set to -1. + * Empty syscall name is not allowed. + * Here, we do not check that the syscall name is valid or not. + */ + + p = strchr(in, ':'); + if (p) { + e = seccomp_parse_errno_or_action(p + 1); + if (e < 0) + return e; + + n = strndup(in, p - in); + } else + n = strdup(in); + + if (!n) + return -ENOMEM; + + if (isempty(n)) + return -EINVAL; + + *error = e; + *name = TAKE_PTR(n); + + return 0; +} diff --git a/src/shared/seccomp-util.h b/src/shared/seccomp-util.h index 53b74bdc34..ee6f7b878b 100644 --- a/src/shared/seccomp-util.h +++ b/src/shared/seccomp-util.h @@ -148,3 +148,5 @@ static inline const char *seccomp_errno_or_action_to_string(int num) { return "kill"; return errno_to_name(num); } + +int parse_syscall_and_errno(const char *in, char **name, int *error); diff --git a/src/shutdown/meson.build b/src/shutdown/meson.build index ebf0bed242..e1348d95d4 100644 --- a/src/shutdown/meson.build +++ b/src/shutdown/meson.build @@ -1,5 +1,15 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + systemd_shutdown_sources = files(''' shutdown.c umount.c umount.h '''.split()) + +tests += [ + [['src/shutdown/test-umount.c', + 'src/shutdown/umount.c', + 'src/shutdown/umount.h'], + [], + [libmount]], +] diff --git a/src/test/test-umount.c b/src/shutdown/test-umount.c similarity index 100% rename from src/test/test-umount.c rename to src/shutdown/test-umount.c diff --git a/src/systemctl/meson.build b/src/systemctl/meson.build new file mode 100644 index 0000000000..a6e254a14f --- /dev/null +++ b/src/systemctl/meson.build @@ -0,0 +1,83 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +systemctl_sources = files( + 'systemctl-add-dependency.c', + 'systemctl-add-dependency.h', + 'systemctl-cancel-job.c', + 'systemctl-cancel-job.h', + 'systemctl-clean-or-freeze.c', + 'systemctl-clean-or-freeze.h', + 'systemctl-compat-halt.c', + 'systemctl-compat-halt.h', + 'systemctl-compat-runlevel.c', + 'systemctl-compat-runlevel.h', + 'systemctl-compat-shutdown.c', + 'systemctl-compat-shutdown.h', + 'systemctl-compat-telinit.c', + 'systemctl-compat-telinit.h', + 'systemctl-daemon-reload.c', + 'systemctl-daemon-reload.h', + 'systemctl-edit.c', + 'systemctl-edit.h', + 'systemctl-enable.c', + 'systemctl-enable.h', + 'systemctl-is-active.c', + 'systemctl-is-active.h', + 'systemctl-is-enabled.c', + 'systemctl-is-enabled.h', + 'systemctl-is-system-running.c', + 'systemctl-is-system-running.h', + 'systemctl-kill.c', + 'systemctl-kill.h', + 'systemctl-list-dependencies.c', + 'systemctl-list-dependencies.h', + 'systemctl-list-jobs.c', + 'systemctl-list-jobs.h', + 'systemctl-list-machines.c', + 'systemctl-list-machines.h', + 'systemctl-list-unit-files.c', + 'systemctl-list-unit-files.h', + 'systemctl-list-units.c', + 'systemctl-list-units.h', + 'systemctl-log-setting.c', + 'systemctl-log-setting.h', + 'systemctl-logind.c', + 'systemctl-logind.h', + 'systemctl-mount.c', + 'systemctl-mount.h', + 'systemctl-preset-all.c', + 'systemctl-preset-all.h', + 'systemctl-reset-failed.c', + 'systemctl-reset-failed.h', + 'systemctl-service-watchdogs.c', + 'systemctl-service-watchdogs.h', + 'systemctl-set-default.c', + 'systemctl-set-default.h', + 'systemctl-set-environment.c', + 'systemctl-set-environment.h', + 'systemctl-set-property.c', + 'systemctl-set-property.h', + 'systemctl-show.c', + 'systemctl-show.h', + 'systemctl-start-special.c', + 'systemctl-start-special.h', + 'systemctl-start-unit.c', + 'systemctl-start-unit.h', + 'systemctl-switch-root.c', + 'systemctl-switch-root.h', + 'systemctl-sysv-compat.c', + 'systemctl-sysv-compat.h', + 'systemctl-trivial-method.c', + 'systemctl-trivial-method.h', + 'systemctl-util.c', + 'systemctl-util.h', + 'systemctl.c', + 'systemctl.h') + +if get_option('link-systemctl-shared') + systemctl_link_with = [libshared] +else + systemctl_link_with = [libsystemd_static, + libshared_static, + libbasic_gcrypt] +endif diff --git a/src/systemd/meson.build b/src/systemd/meson.build index 3d328e5fd3..e01281f454 100644 --- a/src/systemd/meson.build +++ b/src/systemd/meson.build @@ -42,7 +42,6 @@ install_headers( '_sd-common.h', subdir : 'systemd') - ############################################################ opts = [['c'], diff --git a/src/test/meson.build b/src/test/meson.build index c2345bd6ee..81c1335045 100644 --- a/src/test/meson.build +++ b/src/test/meson.build @@ -41,14 +41,8 @@ test_dlopen_c = files('test-dlopen.c') ############################################################ -test_systemd_tmpfiles_py = find_program('test-systemd-tmpfiles.py') - -############################################################ - tests += [ - [['src/test/test-device-nodes.c'], - [], - []], + [['src/test/test-device-nodes.c']], [['src/test/test-engine.c'], [libcore, @@ -58,21 +52,22 @@ tests += [ libseccomp, libselinux, libmount, - libblkid]], + libblkid], + core_includes], [['src/test/test-emergency-action.c'], [libcore, libshared], - []], + [], + core_includes], [['src/test/test-chown-rec.c'], [libcore, libshared], - []], + [], + core_includes], - [['src/test/test-dlopen-so.c'], - [libshared], - []], + [['src/test/test-dlopen-so.c']], [['src/test/test-job-type.c'], [libcore, @@ -82,7 +77,8 @@ tests += [ libseccomp, libselinux, libmount, - libblkid]], + libblkid], + core_includes], [['src/test/test-ns.c'], [libcore, @@ -93,7 +89,7 @@ tests += [ libselinux, libmount, libblkid], - '', 'manual'], + core_includes, '', 'manual'], [['src/test/test-loopback.c'], [libcore, @@ -103,21 +99,15 @@ tests += [ libseccomp, libselinux, libmount, - libblkid]], + libblkid], + core_includes], - [['src/test/test-dns-domain.c'], - [libcore, - libshared], - []], + [['src/test/test-dns-domain.c']], [['src/test/test-boot-timestamps.c'], - [], - [], - 'ENABLE_EFI'], + [], [], [], 'ENABLE_EFI'], - [['src/test/test-unit-file.c'], - [], - []], + [['src/test/test-unit-file.c']], [['src/test/test-unit-name.c'], [libcore, @@ -127,7 +117,8 @@ tests += [ libseccomp, libselinux, libmount, - libblkid]], + libblkid], + core_includes], [['src/test/test-load-fragment.c'], [libcore, @@ -137,309 +128,176 @@ tests += [ libseccomp, libselinux, libmount, - libblkid]], + libblkid], + core_includes], - [['src/test/test-serialize.c'], - [], - []], + [['src/test/test-serialize.c']], - [['src/test/test-utf8.c'], - [], - []], + [['src/test/test-utf8.c']], - [['src/test/test-dev-setup.c'], - [], - []], + [['src/test/test-dev-setup.c']], [['src/test/test-capability.c'], [], [libcap]], [['src/test/test-async.c'], - [], - [], - '', 'timeout=120'], + [], [], [], '', 'timeout=120'], - [['src/test/test-locale-util.c'], - [], - []], + [['src/test/test-locale-util.c']], - [['src/test/test-copy.c'], - [], - []], + [['src/test/test-copy.c']], - [['src/test/test-static-destruct.c'], - [], - []], + [['src/test/test-static-destruct.c']], - [['src/test/test-sigbus.c'], - [], - []], + [['src/test/test-sigbus.c']], - [['src/test/test-condition.c'], - [], - []], + [['src/test/test-condition.c']], - [['src/test/test-fdset.c'], - [], - []], + [['src/test/test-fdset.c']], - [['src/test/test-fstab-util.c'], - [], - []], + [['src/test/test-fstab-util.c']], - [['src/test/test-random-util.c'], - [], - []], + [['src/test/test-random-util.c']], - [['src/test/test-format-table.c'], - [], - []], + [['src/test/test-format-table.c']], - [['src/test/test-format-util.c'], - [], - []], + [['src/test/test-format-util.c']], - [['src/test/test-ratelimit.c'], - [], - []], + [['src/test/test-ratelimit.c']], - [['src/test/test-util.c'], - [], - []], + [['src/test/test-util.c']], - [['src/test/test-json.c'], - [], - []], + [['src/test/test-json.c']], - [['src/test/test-modhex.c'], - [], - []], + [['src/test/test-modhex.c']], [['src/test/test-libmount.c'], [], [threads, libmount]], - [['src/test/test-mount-util.c'], - [], - []], + [['src/test/test-mount-util.c']], - [['src/test/test-mountpoint-util.c'], - [], - []], + [['src/test/test-mountpoint-util.c']], - [['src/test/test-exec-util.c'], - [], - []], + [['src/test/test-exec-util.c']], - [['src/test/test-hexdecoct.c'], - [], - []], + [['src/test/test-hexdecoct.c']], - [['src/test/test-alloc-util.c'], - [], - []], + [['src/test/test-alloc-util.c']], - [['src/test/test-xattr-util.c'], - [], - []], + [['src/test/test-xattr-util.c']], - [['src/test/test-io-util.c'], - [], - []], + [['src/test/test-io-util.c']], - [['src/test/test-glob-util.c'], - [], - []], + [['src/test/test-glob-util.c']], - [['src/test/test-fs-util.c'], - [], - []], + [['src/test/test-fs-util.c']], - [['src/test/test-umask-util.c'], - [], - []], + [['src/test/test-umask-util.c']], - [['src/test/test-proc-cmdline.c'], - [], - []], + [['src/test/test-proc-cmdline.c']], - [['src/test/test-fd-util.c'], - [], - []], + [['src/test/test-fd-util.c']], - [['src/test/test-web-util.c'], - [], - []], + [['src/test/test-web-util.c']], - [['src/test/test-cpu-set-util.c'], - [], - []], + [['src/test/test-cpu-set-util.c']], - [['src/test/test-stat-util.c'], - [], - []], + [['src/test/test-stat-util.c']], - [['src/test/test-os-util.c'], - [], - []], + [['src/test/test-os-util.c']], [['src/test/test-libcrypt-util.c'], - [], - [], - '', 'timeout=120'], + [], [], [], '', 'timeout=120'], - [['src/test/test-offline-passwd.c', - 'src/shared/offline-passwd.c', - 'src/shared/offline-passwd.h'], - [], - []], + [['src/test/test-escape.c']], - [['src/test/test-escape.c'], - [], - []], + [['src/test/test-exit-status.c']], - [['src/test/test-exit-status.c'], - [], - []], + [['src/test/test-specifier.c']], - [['src/test/test-specifier.c'], - [], - []], + [['src/test/test-string-util.c']], - [['src/test/test-string-util.c'], - [], - []], - - [['src/test/test-extract-word.c'], - [], - []], + [['src/test/test-extract-word.c']], [['src/test/test-parse-util.c'], [], [libseccomp]], - [['src/test/test-sysctl-util.c'], - [], - []], + [['src/test/test-sysctl-util.c']], - [['src/test/test-user-record.c'], - [], - []], + [['src/test/test-user-record.c']], - [['src/test/test-user-util.c'], - [], - []], + [['src/test/test-user-util.c']], - [['src/test/test-hostname-setup.c'], - [], - []], + [['src/test/test-hostname-setup.c']], - [['src/test/test-hostname-util.c'], - [], - []], + [['src/test/test-hostname-util.c']], - [['src/test/test-process-util.c'], - [], - []], + [['src/test/test-process-util.c']], - [['src/test/test-terminal-util.c'], - [], - []], + [['src/test/test-terminal-util.c']], - [['src/test/test-path-lookup.c'], - [], - []], + [['src/test/test-path-lookup.c']], - [['src/test/test-pretty-print.c'], - [], - []], + [['src/test/test-pretty-print.c']], - [['src/test/test-uid-range.c'], - [], - []], + [['src/test/test-uid-range.c']], [['src/test/test-cap-list.c', generated_gperf_headers], [], [libcap]], - [['src/test/test-socket-util.c'], - [], - []], + [['src/test/test-socket-util.c']], - [['src/test/test-socket-netlink.c'], - [], - []], + [['src/test/test-socket-netlink.c']], - [['src/test/test-in-addr-util.c'], - [], - []], + [['src/test/test-in-addr-util.c']], - [['src/test/test-barrier.c'], - [], - []], + [['src/test/test-barrier.c']], - [['src/test/test-tmpfiles.c'], - [], - []], + [['src/test/test-tmpfiles.c']], [['src/test/test-namespace.c'], [libcore, libshared], [threads, - libblkid]], + libblkid], + core_includes], - [['src/test/test-verbs.c'], - [], - []], + [['src/test/test-verbs.c']], - [['src/test/test-install-root.c'], - [], - []], + [['src/test/test-install-root.c']], [['src/test/test-acl-util.c'], - [], - [], - 'HAVE_ACL'], + [], [], [], 'HAVE_ACL'], [['src/test/test-seccomp.c'], [], [libseccomp], - 'HAVE_SECCOMP'], + [], 'HAVE_SECCOMP'], - [['src/test/test-rlimit-util.c'], - [], - []], + [['src/test/test-rlimit-util.c']], [['src/test/test-ask-password-api.c'], - [], - [], - '', 'manual'], + [], [], [], '', 'manual'], - [['src/test/test-signal-util.c'], - [], - []], + [['src/test/test-signal-util.c']], [['src/test/test-loop-block.c'], [libcore, libshared], [threads, libblkid], - '', - '', - [], - includes, - false], + core_includes, '', '', [], false], - [['src/test/test-selinux.c'], - [], - []], + [['src/test/test-selinux.c']], [['src/test/test-sizeof.c'], - [libbasic], - []], + [libbasic]], [['src/test/test-bpf-devices.c'], [libcore, @@ -449,7 +307,8 @@ tests += [ librt, libseccomp, libselinux, - libblkid]], + libblkid], + core_includes], [['src/test/test-bpf-firewall.c'], [libcore, @@ -459,7 +318,8 @@ tests += [ librt, libseccomp, libselinux, - libblkid]], + libblkid], + core_includes], [['src/test/test-watch-pid.c'], [libcore, @@ -469,51 +329,34 @@ tests += [ librt, libseccomp, libselinux, - libblkid]], + libblkid], + core_includes], [['src/test/test-hashmap.c', 'src/test/test-hashmap-plain.c', test_hashmap_ordered_c], - [], - [], - '', 'timeout=90'], + [], [], [], '', 'timeout=90'], [['src/test/test-set.c'], - [libbasic], - []], + [libbasic]], - [['src/test/test-ordered-set.c'], - [], - []], + [['src/test/test-ordered-set.c']], [['src/test/test-set-disable-mempool.c'], [], [threads]], - [['src/test/test-bitmap.c'], - [], - []], + [['src/test/test-bitmap.c']], - [['src/test/test-xml.c'], - [], - []], + [['src/test/test-xml.c']], - [['src/test/test-list.c'], - [], - []], + [['src/test/test-list.c']], - [['src/test/test-procfs-util.c'], - [], - []], + [['src/test/test-procfs-util.c']], - [['src/test/test-unaligned.c'], - [], - []], + [['src/test/test-unaligned.c']], - [['src/test/test-tables.c', - 'src/shared/test-tables.h', - 'src/journal/journald-server.c', - 'src/journal/journald-server.h'], + [['src/test/test-tables.c'], [libcore, libjournal_core, libudevd_core, @@ -524,97 +367,62 @@ tests += [ libxz, liblz4, libblkid], - '', '', [], libudevd_core_includes], + [core_includes, journal_includes, udev_includes]], - [['src/test/test-prioq.c'], - [], - []], + [['src/test/test-prioq.c']], - [['src/test/test-fileio.c'], - [], - []], + [['src/test/test-fileio.c']], - [['src/test/test-time-util.c'], - [], - []], + [['src/test/test-time-util.c']], - [['src/test/test-clock.c'], - [], - []], + [['src/test/test-clock.c']], - [['src/test/test-architecture.c'], - [], - []], + [['src/test/test-architecture.c']], - [['src/test/test-log.c'], - [], - []], + [['src/test/test-log.c']], [['src/test/test-ipcrm.c'], - [], - [], - '', 'unsafe'], + [], [], [], '', 'unsafe'], [['src/test/test-btrfs.c'], - [], - [], - '', 'manual'], + [], [], [], '', 'manual'], - - [['src/test/test-firewall-util.c'], - [libshared], - []], + [['src/test/test-firewall-util.c']], [['src/test/test-netlink-manual.c'], [], [libkmod], - 'HAVE_KMOD', 'manual'], + [], 'HAVE_KMOD', 'manual'], - [['src/test/test-ellipsize.c'], - [], - []], + [['src/test/test-ellipsize.c']], - [['src/test/test-date.c'], - [], - []], + [['src/test/test-date.c']], - [['src/test/test-sleep.c'], - [], - []], + [['src/test/test-sleep.c']], - [['src/test/test-replace-var.c'], - [], - []], + [['src/test/test-replace-var.c']], - [['src/test/test-calendarspec.c'], - [], - []], + [['src/test/test-calendarspec.c']], - [['src/test/test-strip-tab-ansi.c'], - [], - []], + [['src/test/test-strip-tab-ansi.c']], - [['src/test/test-coredump-util.c'], - [], - []], + [['src/test/test-coredump-util.c']], - [['src/test/test-daemon.c'], - [], - []], + [['src/test/test-daemon.c']], - [['src/test/test-cgroup.c'], - [], - []], + [['src/test/test-cgroup.c']], [['src/test/test-cgroup-cpu.c'], [libcore, libshared], - []], + [], + core_includes], [['src/test/test-cgroup-unit-default.c'], [libcore, libshared], - []], + [], + core_includes], [['src/test/test-cgroup-mask.c'], [libcore, @@ -624,48 +432,31 @@ tests += [ libseccomp, libselinux, libmount, - libblkid]], + libblkid], + core_includes], [['src/test/test-varlink.c'], [], [threads]], - [['src/test/test-cgroup-util.c'], - [], - []], + [['src/test/test-cgroup-util.c']], - [['src/test/test-cgroup-setup.c'], - [], - []], + [['src/test/test-cgroup-setup.c']], - [['src/test/test-env-file.c'], - [], - []], + [['src/test/test-env-file.c']], - [['src/test/test-env-util.c'], - [], - []], + [['src/test/test-env-util.c']], - [['src/test/test-strbuf.c'], - [], - []], + [['src/test/test-strbuf.c']], - [['src/test/test-strv.c'], - [], - []], + [['src/test/test-strv.c']], - [['src/test/test-path-util.c'], - [], - []], + [['src/test/test-path-util.c']], - [['src/test/test-rm-rf.c'], - [], - []], + [['src/test/test-rm-rf.c']], [['src/test/test-chase-symlinks.c'], - [], - [], - '', 'manual'], + [], [], [], '', 'manual'], [['src/test/test-path.c'], [libcore, @@ -676,7 +467,7 @@ tests += [ libselinux, libmount, libblkid], - '', 'timeout=120'], + core_includes, '', 'timeout=120'], [['src/test/test-execute.c'], [libcore, @@ -687,25 +478,19 @@ tests += [ libselinux, libmount, libblkid], - '', 'timeout=360'], + core_includes, '', 'timeout=360'], - [['src/test/test-siphash24.c'], - [], - []], + [['src/test/test-siphash24.c']], - [['src/test/test-strxcpyx.c'], - [], - []], + [['src/test/test-strxcpyx.c']], [['src/test/test-install.c'], [libcore, libshared], [], - '', 'manual'], + core_includes, '', 'manual'], - [['src/test/test-watchdog.c'], - [], - []], + [['src/test/test-watchdog.c']], [['src/test/test-sched-prio.c'], [libcore, @@ -715,40 +500,23 @@ tests += [ libseccomp, libselinux, libmount, - libblkid]], + libblkid], + core_includes], - [['src/test/test-conf-files.c'], - [], - []], + [['src/test/test-conf-files.c']], - [['src/test/test-conf-parser.c'], - [], - []], + [['src/test/test-conf-parser.c']], [['src/test/test-af-list.c', - generated_gperf_headers], - [], - []], + generated_gperf_headers]], [['src/test/test-arphrd-list.c', - generated_gperf_headers], - [], - []], + generated_gperf_headers]], [['src/test/test-ip-protocol-list.c', - shared_generated_gperf_headers], - [], - []], + shared_generated_gperf_headers]], - [['src/test/test-journal-importer.c'], - [], - []], - - [['src/test/test-libudev.c'], - [libshared, - libudev_static], - [], - '', '', [], libudev_includes], + [['src/test/test-journal-importer.c']], [['src/test/test-udev.c'], [libudevd_core, @@ -759,436 +527,54 @@ tests += [ libkmod, libacl, libselinux], - '', 'manual', '-DLOG_REALM=LOG_REALM_UDEV'], + udev_includes, '', 'manual', '-DLOG_REALM=LOG_REALM_UDEV'], - [['src/test/test-udev-util.c'], - [], - []], + [['src/test/test-udev-util.c']], - [['src/test/test-id128.c'], - [], - []], + [['src/test/test-id128.c']], - [['src/test/test-hash.c'], - [], - []], + [['src/test/test-hash.c']], [['src/test/test-gcrypt-util.c'], - [], - [], - 'HAVE_GCRYPT'], + [], [], [], 'HAVE_GCRYPT'], [['src/test/test-nss.c'], [], [libdl], - 'ENABLE_NSS', 'manual'], + [], 'ENABLE_NSS', 'manual'], - [['src/test/test-umount.c', - 'src/shutdown/umount.c', - 'src/shutdown/umount.h'], - [libcore_shared, - libshared], - [libmount]], + [['src/test/test-bus-util.c']], - [['src/test/test-bus-util.c'], - [], - []], + [['src/test/test-sd-hwdb.c']], - [['src/test/test-sd-hwdb.c'], - [], - []], + [['src/test/test-sd-path.c']], - [['src/test/test-sd-path.c'], - [], - []], + [['src/test/test-local-addresses.c']], - [['src/test/test-local-addresses.c'], - [], - []], - - [['src/test/test-psi-util.c'], - [], - []], + [['src/test/test-psi-util.c']], [['src/test/test-qrcode-util.c'], - [libshared], + [], [libdl]], -] -if conf.get('ENABLE_NSCD') == 1 - tests += [ - [['src/test/test-nscd-flush.c'], - [libcore, - libshared], - [threads, - librt, - libseccomp, - libselinux, - libmount, - libblkid], - '', 'manual']] -endif + [['src/test/test-nscd-flush.c'], + [], [], [], 'ENABLE_NSCD', 'manual'], +] ############################################################ # define some tests here, because the link_with deps were not defined earlier tests += [ - [['src/journal/test-journal.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4]], - - [['src/journal/test-journal-send.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4]], - - [['src/journal/test-journal-syslog.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4, - libselinux]], - - [['src/journal/test-journal-match.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4]], - - [['src/journal/test-journal-enum.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4], - '', 'timeout=360'], - - [['src/journal/test-journal-stream.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4]], - - [['src/journal/test-journal-flush.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4]], - - [['src/journal/test-journal-init.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4]], - - [['src/journal/test-journal-config.c'], - [libjournal_core, - libshared], - [libxz, - liblz4, - libselinux]], - - [['src/journal/test-journal-verify.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4]], - - [['src/journal/test-journal-interleaving.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4]], - - [['src/journal/test-mmap-cache.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4]], - - [['src/journal/test-catalog.c'], - [libjournal_core, - libshared], - [threads, - libxz, - liblz4]], - - [['src/journal/test-compress.c'], - [libjournal_core, - libshared], - [liblz4, - libzstd, - libxz]], - - [['src/journal/test-compress-benchmark.c'], - [libjournal_core, - libshared], - [liblz4, - libzstd, - libxz], - '', 'timeout=90'], - - [['src/journal/test-audit-type.c'], - [libjournal_core, - libshared], - [liblz4, - libxz]], -] - -############################################################ - -tests += [ - [['src/libsystemd/sd-bus/test-bus-address.c'], - [], - [threads]], - - [['src/libsystemd/sd-bus/test-bus-marshal.c'], - [], - [threads, - libglib, - libgobject, - libgio, - libdbus]], - - [['src/libsystemd/sd-bus/test-bus-signature.c'], - [], - [threads]], - - [['src/libsystemd/sd-bus/test-bus-queue-ref-cycle.c'], - [], - [threads]], - - [['src/libsystemd/sd-bus/test-bus-watch-bind.c'], - [], - [threads], '', 'timeout=120'], - - [['src/libsystemd/sd-bus/test-bus-chat.c'], - [], - [threads]], - - [['src/libsystemd/sd-bus/test-bus-cleanup.c'], - [], - [threads, - libseccomp]], - [['src/libsystemd/sd-bus/test-bus-error.c'], [libshared_static, - libsystemd_static], - []], - - [['src/libsystemd/sd-bus/test-bus-track.c'], - [], - [libseccomp]], - - [['src/libsystemd/sd-bus/test-bus-server.c'], - [], - [threads]], - - [['src/libsystemd/sd-bus/test-bus-objects.c'], - [], - [threads]], - - [['src/libsystemd/sd-bus/test-bus-vtable.c', - 'src/libsystemd/sd-bus/test-vtable-data.h'], - [], - []], - - [['src/libsystemd/sd-bus/test-bus-gvariant.c'], - [], - [libglib, - libgobject, - libgio]], - - [['src/libsystemd/sd-bus/test-bus-creds.c'], - [], - []], - - [['src/libsystemd/sd-bus/test-bus-match.c'], - [], - []], - - [['src/libsystemd/sd-bus/test-bus-benchmark.c'], - [], - [threads], - '', 'manual'], - - [['src/libsystemd/sd-bus/test-bus-introspect.c', - 'src/libsystemd/sd-bus/test-vtable-data.h'], - [], - []], - - [['src/libsystemd/sd-event/test-event.c'], - [], - []], - - [['src/libsystemd/sd-netlink/test-netlink.c'], - [], - []], - - [['src/libsystemd/sd-resolve/test-resolve.c'], - [], - [threads], - '', 'timeout=120'], - - [['src/libsystemd/sd-login/test-login.c'], - [], - []], - - [['src/libsystemd/sd-device/test-sd-device.c'], - [], - []], + libsystemd_static]], [['src/libsystemd/sd-device/test-sd-device-thread.c'], - [libbasic, - libshared_static, - libsystemd], + [libsystemd], [threads]], - [['src/libsystemd/sd-device/test-udev-device-thread.c'], - [libbasic, - libshared_static, - libudev], - [threads], - '', '', [], libudev_includes], - - [['src/libsystemd/sd-device/test-sd-device-monitor.c'], - [], - []], - -] - -if cxx_cmd != '' - tests += [ - [['src/libsystemd/sd-bus/test-bus-vtable-cc.cc'], - [], - []] - ] -endif - -############################################################ - -tests += [ - [['src/libsystemd-network/test-dhcp-option.c', - 'src/libsystemd-network/dhcp-protocol.h', - 'src/libsystemd-network/dhcp-internal.h'], - [libshared, - libsystemd_network], - []], - - [['src/libsystemd-network/test-sd-dhcp-lease.c', - 'src/libsystemd-network/dhcp-lease-internal.h'], - [libshared, - libsystemd_network], - []], - - [['src/libsystemd-network/test-dhcp-client.c', - 'src/libsystemd-network/dhcp-protocol.h', - 'src/libsystemd-network/dhcp-internal.h', - 'src/systemd/sd-dhcp-client.h'], - [libshared, - libsystemd_network], - []], - - [['src/libsystemd-network/test-dhcp-server.c'], - [libshared, - libsystemd_network], - []], - - [['src/libsystemd-network/test-ipv4ll.c', - 'src/libsystemd-network/arp-util.h', - 'src/systemd/sd-ipv4ll.h'], - [libshared, - libsystemd_network], - []], - - [['src/libsystemd-network/test-ipv4ll-manual.c', - 'src/systemd/sd-ipv4ll.h'], - [libshared, - libsystemd_network], - [], - '', 'manual'], - - [['src/libsystemd-network/test-acd.c', - 'src/systemd/sd-ipv4acd.h'], - [libshared, - libsystemd_network], - [], - '', 'manual'], - - [['src/libsystemd-network/test-ndisc-rs.c', - 'src/libsystemd-network/dhcp-identifier.h', - 'src/libsystemd-network/dhcp-identifier.c', - 'src/libsystemd-network/icmp6-util.h', - 'src/systemd/sd-dhcp6-client.h', - 'src/systemd/sd-ndisc.h'], - [libshared, - libsystemd_network], - []], - - [['src/libsystemd-network/test-ndisc-ra.c', - 'src/libsystemd-network/icmp6-util.h', - 'src/systemd/sd-ndisc.h'], - [libshared, - libsystemd_network], - []], - - [['src/libsystemd-network/test-dhcp6-client.c', - 'src/libsystemd-network/dhcp-identifier.h', - 'src/libsystemd-network/dhcp-identifier.c', - 'src/libsystemd-network/dhcp6-internal.h', - 'src/systemd/sd-dhcp6-client.h'], - [libshared, - libsystemd_network], - []], - - [['src/libsystemd-network/test-lldp.c'], - [libshared, - libsystemd_network], - []], -] - -############################################################ - -tests += [ - [['src/login/test-login-shared.c'], - [], - []], - - [['src/analyze/test-verify.c', 'src/analyze/analyze-verify.c', 'src/analyze/analyze-verify.h'], - [libcore, libshared], - []], - - [['src/login/test-inhibit.c'], - [], - [], - '', 'manual'], - - [['src/login/test-login-tables.c'], - [liblogind_core, - libshared], + [['src/libudev/test-udev-device-thread.c'], + [libudev], [threads]], ] - -############################################################ - -tests += [ - [['src/test/test-xdg-autostart.c', - 'src/xdg-autostart-generator/xdg-autostart-service.c', - 'src/xdg-autostart-generator/xdg-autostart-service.h',], - [], - []], -] diff --git a/src/timesync/meson.build b/src/timesync/meson.build index 91e7cacfc5..30d2a0caee 100644 --- a/src/timesync/meson.build +++ b/src/timesync/meson.build @@ -1,25 +1,38 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -systemd_timesyncd_sources = files(''' - timesyncd.c - timesyncd-bus.c - timesyncd-bus.h - timesyncd-conf.c - timesyncd-conf.h - timesyncd-manager.c - timesyncd-manager.h - timesyncd-ntp-message.h - timesyncd-server.c - timesyncd-server.h -'''.split()) +sources = files( + 'timesyncd-conf.c', + 'timesyncd-conf.h', + 'timesyncd-manager.c', + 'timesyncd-manager.h', + 'timesyncd-ntp-message.h', + 'timesyncd-server.c', + 'timesyncd-server.h') -timesyncd_gperf_c = custom_target( +systemd_timesyncd_sources = files( + 'timesyncd.c', + 'timesyncd-bus.c', + 'timesyncd-bus.h') + +sources += custom_target( 'timesyncd-gperf.c', input : 'timesyncd-gperf.gperf', output : 'timesyncd-gperf.c', command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) -systemd_timesyncd_sources += [timesyncd_gperf_c] +if get_option('link-timesyncd-shared') + timesyncd_link_with = [libshared] +else + timesyncd_link_with = [libsystemd_static, + libshared_static, + libbasic_gcrypt] +endif + +libtimesyncd_core = static_library( + 'timesyncd-core', + sources, + include_directories : includes, + link_with : [timesyncd_link_with]) if conf.get('ENABLE_TIMESYNCD') == 1 timesyncd_conf = configure_file( @@ -41,15 +54,8 @@ endif ############################################################ tests += [ - [['src/timesync/test-timesync.c', - 'src/timesync/timesyncd-manager.c', - 'src/timesync/timesyncd-manager.h', - 'src/timesync/timesyncd-conf.c', - 'src/timesync/timesyncd-conf.h', - 'src/timesync/timesyncd-server.c', - 'src/timesync/timesyncd-server.h', - timesyncd_gperf_c], - [libshared], - [libm], - 'ENABLE_TIMESYNCD'], + [['src/timesync/test-timesync.c'], + [libtimesyncd_core, + libshared], + [libm]], ] diff --git a/src/time-wait-sync/time-wait-sync.c b/src/timesync/wait-sync.c similarity index 100% rename from src/time-wait-sync/time-wait-sync.c rename to src/timesync/wait-sync.c diff --git a/src/tmpfiles/meson.build b/src/tmpfiles/meson.build index 2d61568c66..c72b386cda 100644 --- a/src/tmpfiles/meson.build +++ b/src/tmpfiles/meson.build @@ -1,7 +1,12 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -systemd_tmpfiles_sources = [ - 'src/tmpfiles/tmpfiles.c', - 'src/shared/offline-passwd.c', - 'src/shared/offline-passwd.h', +systemd_tmpfiles_sources = files( + 'tmpfiles.c', + 'offline-passwd.c', + 'offline-passwd.h') + +tests += [ + [['src/tmpfiles/test-offline-passwd.c', + 'src/tmpfiles/offline-passwd.c', + 'src/tmpfiles/offline-passwd.h']], ] diff --git a/src/shared/offline-passwd.c b/src/tmpfiles/offline-passwd.c similarity index 100% rename from src/shared/offline-passwd.c rename to src/tmpfiles/offline-passwd.c diff --git a/src/shared/offline-passwd.h b/src/tmpfiles/offline-passwd.h similarity index 100% rename from src/shared/offline-passwd.h rename to src/tmpfiles/offline-passwd.h diff --git a/src/test/test-offline-passwd.c b/src/tmpfiles/test-offline-passwd.c similarity index 100% rename from src/test/test-offline-passwd.c rename to src/tmpfiles/test-offline-passwd.c diff --git a/src/fuzz/fuzz-udev-rule-parse-value.c b/src/udev/fuzz-udev-rule-parse-value.c similarity index 100% rename from src/fuzz/fuzz-udev-rule-parse-value.c rename to src/udev/fuzz-udev-rule-parse-value.c diff --git a/src/fuzz/fuzz-udev-rules.c b/src/udev/fuzz-udev-rules.c similarity index 100% rename from src/fuzz/fuzz-udev-rules.c rename to src/udev/fuzz-udev-rules.c diff --git a/src/fuzz/fuzz-udev-rules.options b/src/udev/fuzz-udev-rules.options similarity index 100% rename from src/fuzz/fuzz-udev-rules.options rename to src/udev/fuzz-udev-rules.options diff --git a/src/udev/meson.build b/src/udev/meson.build index 9ec14c8021..68b4a67e94 100644 --- a/src/udev/meson.build +++ b/src/udev/meson.build @@ -50,9 +50,7 @@ if conf.get('HAVE_BLKID') == 1 endif if conf.get('HAVE_ACL') == 1 - libudevd_core_sources += ['udev-builtin-uaccess.c', - logind_acl_c, - sd_login_sources] + libudevd_core_sources += ['udev-builtin-uaccess.c'] endif ############################################################ @@ -105,61 +103,15 @@ else udev_rpath = '' endif -libudev_includes = [includes, include_directories('../libudev')] - -libudev_basic = static_library( - 'udev-basic', - libudev_sources, - include_directories : libudev_includes, - c_args : ['-fvisibility=default']) - -libudev_static = static_library( - 'udev_static', - include_directories : libudev_includes, - link_with : udev_link_with, - link_whole : libudev_basic) - -static_libudev = get_option('static-libudev') -static_libudev_pic = static_libudev == 'true' or static_libudev == 'pic' -install_libudev_static = static_library( - 'udev', - basic_sources, - shared_sources, - libsystemd_sources, - libudev_sources, - disable_mempool_c, - include_directories : libudev_includes, - build_by_default : static_libudev != 'false', - install : static_libudev != 'false', - install_dir : rootlibdir, - link_depends : libudev_sym, - dependencies : libshared_deps + [libmount], - c_args : static_libudev_pic ? [] : ['-fno-PIC'], - pic : static_libudev_pic) - -libudev = shared_library( - 'udev', - disable_mempool_c, - version : libudev_version, - include_directories : libudev_includes, - link_args : ['-shared', - '-Wl,--version-script=' + libudev_sym_path], - link_with : [libsystemd_static, libshared_static], - link_whole : libudev_basic, - dependencies : [threads], - link_depends : libudev_sym, - install : true, - install_dir : rootlibdir) - ############################################################ -libudevd_core_includes = [includes, include_directories('net')] +udev_includes = [includes, include_directories('net', '.')] libudevd_core = static_library( 'udev-core', libudevd_core_sources, link_config_gperf_c, keyboard_keys_from_name_h, - include_directories : libudevd_core_includes, + include_directories : udev_includes, c_args : ['-DLOG_REALM=LOG_REALM_UDEV'], link_with : udev_link_with, dependencies : [libblkid, libkmod]) @@ -222,20 +174,25 @@ endif fuzzers += [ [['src/udev/net/fuzz-link-parser.c', 'src/fuzz/fuzz.h'], + [libudevd_core, + libshared], + [threads, + libacl], + udev_includes], + + [['src/udev/fuzz-udev-rules.c'], [libudevd_core, libshared], [threads, libacl]], + [['src/udev/fuzz-udev-rule-parse-value.c']], + [['src/udev/fido_id/fuzz-fido-id-desc.c', - 'src/udev/fido_id/fido_id_desc.c'], - [], - []], - ] + 'src/udev/fido_id/fido_id_desc.c']], +] tests += [ [['src/udev/fido_id/test-fido-id-desc.c', - 'src/udev/fido_id/fido_id_desc.c'], - [], - []], - ] + 'src/udev/fido_id/fido_id_desc.c']], +] diff --git a/src/udev/udev-builtin-uaccess.c b/src/udev/udev-builtin-uaccess.c index cfdf130f12..3fdbb88bc4 100644 --- a/src/udev/udev-builtin-uaccess.c +++ b/src/udev/udev-builtin-uaccess.c @@ -11,8 +11,8 @@ #include "sd-login.h" #include "device-util.h" +#include "devnode-acl.h" #include "login-util.h" -#include "logind-acl.h" #include "log.h" #include "udev-builtin.h" diff --git a/src/fuzz/fuzz-xdg-desktop.c b/src/xdg-autostart-generator/fuzz-xdg-desktop.c similarity index 100% rename from src/fuzz/fuzz-xdg-desktop.c rename to src/xdg-autostart-generator/fuzz-xdg-desktop.c diff --git a/src/xdg-autostart-generator/meson.build b/src/xdg-autostart-generator/meson.build new file mode 100644 index 0000000000..aa722f7f3c --- /dev/null +++ b/src/xdg-autostart-generator/meson.build @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +systemd_xdg_autostart_generator_sources = files( + 'xdg-autostart-generator.c', + 'xdg-autostart-service.c', + 'xdg-autostart-service.h') + +tests += [ + [['src/xdg-autostart-generator/test-xdg-autostart.c', + 'src/xdg-autostart-generator/xdg-autostart-service.c', + 'src/xdg-autostart-generator/xdg-autostart-service.h']], +] + +fuzzers += [ + [['src/xdg-autostart-generator/fuzz-xdg-desktop.c', + 'src/xdg-autostart-generator/xdg-autostart-service.c', + 'src/xdg-autostart-generator/xdg-autostart-service.h']], +] diff --git a/src/test/test-xdg-autostart.c b/src/xdg-autostart-generator/test-xdg-autostart.c similarity index 100% rename from src/test/test-xdg-autostart.c rename to src/xdg-autostart-generator/test-xdg-autostart.c diff --git a/test/meson.build b/test/meson.build index 2785dc92a7..4d7b929a80 100644 --- a/test/meson.build +++ b/test/meson.build @@ -60,7 +60,9 @@ test_network_generator_conversion_sh = find_program('test-network-generator-conv ############################################################ -test_sysusers_dir = join_paths(meson.current_source_dir(), 'test-sysusers') +test_systemd_tmpfiles_py = find_program('test-systemd-tmpfiles.py') + +############################################################ test_sysusers_sh = configure_file( input : 'test-sysusers.sh.in', diff --git a/src/test/test-systemd-tmpfiles.py b/test/test-systemd-tmpfiles.py similarity index 100% rename from src/test/test-systemd-tmpfiles.py rename to test/test-systemd-tmpfiles.py diff --git a/tools/update-man-rules.py b/tools/update-man-rules.py index 9e1660c123..8221a37d9a 100755 --- a/tools/update-man-rules.py +++ b/tools/update-man-rules.py @@ -47,6 +47,8 @@ def mjoin(files): return ' \\\n\t'.join(sorted(files) or '#') MESON_HEADER = '''\ +# SPDX-License-Identifier: LGPL-2.1-or-later + # Do not edit. Generated by update-man-rules.py. # Update with: # ninja -C build man/update-man-rules