mirror of
https://github.com/systemd/systemd
synced 2026-04-13 18:44:51 +02:00
Compare commits
8 Commits
ac16a593cf
...
df4ec48f45
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
df4ec48f45 | ||
|
|
76fb85316e | ||
|
|
57cbf080b3 | ||
|
|
e93ada9821 | ||
|
|
4881a0d2d4 | ||
|
|
636ab00182 | ||
|
|
9e0bd1d69b | ||
|
|
bd97980193 |
@ -19,7 +19,7 @@ support_url = get_option('support-url')
|
||||
support_sed = 's~%SUPPORT_URL%~@0@~'.format(support_url)
|
||||
|
||||
foreach file : in_files
|
||||
custom_target(
|
||||
catalogs += custom_target(
|
||||
file,
|
||||
input : file + '.in',
|
||||
output: file,
|
||||
|
||||
@ -226,7 +226,8 @@ update_dbus_docs = custom_target(
|
||||
if conf.get('BUILD_MODE_DEVELOPER') == 1
|
||||
test('dbus-docs-fresh',
|
||||
update_dbus_docs_py,
|
||||
args : ['--build-dir', project_build_root, '--test', dbus_docs])
|
||||
args : ['--build-dir', project_build_root, '--test', dbus_docs],
|
||||
depends : dbus_programs)
|
||||
endif
|
||||
|
||||
update_man_rules = custom_target(
|
||||
|
||||
31
meson.build
31
meson.build
@ -1765,6 +1765,7 @@ conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
|
||||
|
||||
tests = []
|
||||
fuzzers = []
|
||||
catalogs = []
|
||||
|
||||
############################################################
|
||||
|
||||
@ -2072,7 +2073,8 @@ foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
|
||||
test('dlopen-nss_' + module,
|
||||
test_dlopen,
|
||||
# path to dlopen must include a slash
|
||||
args : nss.full_path())
|
||||
args : nss.full_path(),
|
||||
depends : nss)
|
||||
endif
|
||||
endif
|
||||
endforeach
|
||||
@ -2186,7 +2188,8 @@ if want_tests != 'false'
|
||||
test('test-fstab-generator',
|
||||
test_fstab_generator_sh,
|
||||
# https://github.com/mesonbuild/meson/issues/2681
|
||||
args : exe.full_path())
|
||||
args : exe.full_path(),
|
||||
depends : exe)
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_ENVIRONMENT_D') == 1
|
||||
@ -2337,7 +2340,8 @@ if conf.get('ENABLE_LOGIND') == 1
|
||||
test('dlopen-pam_systemd',
|
||||
test_dlopen,
|
||||
# path to dlopen must include a slash
|
||||
args : pam_systemd.full_path())
|
||||
args : pam_systemd.full_path(),
|
||||
depends : pam_systemd)
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -2676,7 +2680,7 @@ if conf.get('HAVE_LIBCRYPTSETUP') == 1
|
||||
endif
|
||||
|
||||
if conf.get('HAVE_SYSV_COMPAT') == 1
|
||||
executable(
|
||||
exe = executable(
|
||||
'systemd-sysv-generator',
|
||||
'src/sysv-generator/sysv-generator.c',
|
||||
include_directories : includes,
|
||||
@ -2685,6 +2689,13 @@ if conf.get('HAVE_SYSV_COMPAT') == 1
|
||||
install : true,
|
||||
install_dir : systemgeneratordir)
|
||||
|
||||
sysv_generator_test_py = find_program('test/sysv-generator-test.py')
|
||||
if want_tests != 'false'
|
||||
test('sysv-generator-test',
|
||||
sysv_generator_test_py,
|
||||
depends : exe)
|
||||
endif
|
||||
|
||||
executable(
|
||||
'systemd-rc-local-generator',
|
||||
'src/rc-local-generator/rc-local-generator.c',
|
||||
@ -3568,7 +3579,8 @@ if want_tests != 'false'
|
||||
test('test-network-generator-conversion',
|
||||
test_network_generator_conversion_sh,
|
||||
# https://github.com/mesonbuild/meson/issues/2681
|
||||
args : exe.full_path())
|
||||
args : exe.full_path(),
|
||||
depends : exe)
|
||||
endif
|
||||
|
||||
executable(
|
||||
@ -3582,13 +3594,14 @@ executable(
|
||||
|
||||
############################################################
|
||||
|
||||
custom_target(
|
||||
runtest_env = custom_target(
|
||||
'systemd-runtest.env',
|
||||
output : 'systemd-runtest.env',
|
||||
command : [sh, '-c',
|
||||
'{ echo SYSTEMD_TEST_DATA=@0@; echo SYSTEMD_CATALOG_DIR=@1@; } >@OUTPUT@'.format(
|
||||
project_source_root / 'test',
|
||||
project_build_root / 'catalog')],
|
||||
depends : catalogs,
|
||||
build_by_default : true)
|
||||
|
||||
test_cflags = ['-DTEST_CODE=1']
|
||||
@ -3631,7 +3644,8 @@ foreach tuple : tests
|
||||
build_by_default : want_tests != 'false',
|
||||
install_rpath : rootlibexecdir,
|
||||
install : install_tests,
|
||||
install_dir : testsdir / type)
|
||||
install_dir : testsdir / type,
|
||||
link_depends : runtest_env)
|
||||
|
||||
if type == 'manual'
|
||||
message('@0@ is a manual test'.format(name))
|
||||
@ -3824,7 +3838,8 @@ foreach exec : public_programs
|
||||
if want_tests != 'false'
|
||||
test('check-help-' + name,
|
||||
check_help,
|
||||
args : exec.full_path())
|
||||
args : exec.full_path(),
|
||||
depends: exec)
|
||||
endif
|
||||
endforeach
|
||||
|
||||
|
||||
@ -195,7 +195,7 @@ efi_cflags += cc.get_supported_arguments({
|
||||
if get_option('werror')
|
||||
efi_cflags += ['-Werror']
|
||||
endif
|
||||
if get_option('debug')
|
||||
if get_option('debug') and get_option('mode') == 'developer'
|
||||
efi_cflags += ['-ggdb', '-DEFI_DEBUG']
|
||||
endif
|
||||
if get_option('optimization') != '0'
|
||||
@ -213,13 +213,15 @@ foreach arg : get_option('c_args')
|
||||
if arg in [
|
||||
'-DNDEBUG',
|
||||
'-fno-lto',
|
||||
'-g', '-ggdb',
|
||||
'-O1', '-O2', '-O3', '-Og', '-Os',
|
||||
'-Werror',
|
||||
] or arg.split('=')[0] in [
|
||||
'-ffile-prefix-map',
|
||||
'-flto',
|
||||
]
|
||||
] or (get_option('mode') == 'developer' and arg in [
|
||||
'-DEFI_DEBUG',
|
||||
'-g', '-ggdb',
|
||||
])
|
||||
|
||||
message('Using "@0@" from c_args for EFI compiler'.format(arg))
|
||||
efi_cflags += arg
|
||||
|
||||
@ -399,7 +399,7 @@ void process_audit_string(Server *s, int type, const char *data, size_t size) {
|
||||
|
||||
z = n;
|
||||
|
||||
map_all_fields(p, map_fields_kernel, "_AUDIT_FIELD_", true, iovec, &n, ELEMENTSOF(iovec));
|
||||
map_all_fields(p, map_fields_kernel, "_AUDIT_FIELD_", true, iovec, &n, n + N_IOVEC_AUDIT_FIELDS);
|
||||
|
||||
server_dispatch_message(s, iovec, n, ELEMENTSOF(iovec), NULL, NULL, LOG_NOTICE, 0);
|
||||
|
||||
|
||||
@ -152,7 +152,7 @@ foreach prog : udev_progs
|
||||
install : true,
|
||||
install_dir : udevlibexecdir)
|
||||
|
||||
udev_prog_paths += {name : exe.full_path()}
|
||||
udev_prog_paths += {name : exe}
|
||||
endforeach
|
||||
|
||||
if install_sysconfdir_samples
|
||||
|
||||
@ -47,6 +47,8 @@ static const char *arg_export_prefix = NULL;
|
||||
static usec_t arg_wait_for_initialization_timeout = 0;
|
||||
|
||||
static bool skip_attribute(const char *name) {
|
||||
assert(name);
|
||||
|
||||
/* Those are either displayed separately or should not be shown at all. */
|
||||
return STR_IN_SET(name,
|
||||
"uevent",
|
||||
@ -66,6 +68,9 @@ typedef struct SysAttr {
|
||||
STATIC_DESTRUCTOR_REGISTER(arg_properties, strv_freep);
|
||||
|
||||
static int sysattr_compare(const SysAttr *a, const SysAttr *b) {
|
||||
assert(a);
|
||||
assert(b);
|
||||
|
||||
return strcmp(a->name, b->name);
|
||||
}
|
||||
|
||||
@ -75,6 +80,8 @@ static int print_all_attributes(sd_device *device, bool is_parent) {
|
||||
size_t n_items = 0;
|
||||
int r;
|
||||
|
||||
assert(device);
|
||||
|
||||
value = NULL;
|
||||
(void) sd_device_get_devpath(device, &value);
|
||||
printf(" looking at %sdevice '%s':\n", is_parent ? "parent " : "", strempty(value));
|
||||
@ -139,6 +146,8 @@ static int print_device_chain(sd_device *device) {
|
||||
sd_device *child, *parent;
|
||||
int r;
|
||||
|
||||
assert(device);
|
||||
|
||||
printf("\n"
|
||||
"Udevadm info starts with the device specified by the devpath and then\n"
|
||||
"walks up the chain of parent devices. It prints for every device\n"
|
||||
@ -164,6 +173,8 @@ static int print_record(sd_device *device) {
|
||||
const char *str, *val;
|
||||
int i;
|
||||
|
||||
assert(device);
|
||||
|
||||
(void) sd_device_get_devpath(device, &str);
|
||||
printf("P: %s\n", str);
|
||||
|
||||
@ -190,6 +201,8 @@ static int print_record(sd_device *device) {
|
||||
static int stat_device(const char *name, bool export, const char *prefix) {
|
||||
struct stat statbuf;
|
||||
|
||||
assert(name);
|
||||
|
||||
if (stat(name, &statbuf) != 0)
|
||||
return -errno;
|
||||
|
||||
@ -229,11 +242,11 @@ static int export_devices(void) {
|
||||
}
|
||||
|
||||
static void cleanup_dir(DIR *dir, mode_t mask, int depth) {
|
||||
assert(dir);
|
||||
|
||||
if (depth <= 0)
|
||||
return;
|
||||
|
||||
assert(dir);
|
||||
|
||||
FOREACH_DIRENT_ALL(dent, dir, break) {
|
||||
struct stat stats;
|
||||
|
||||
@ -261,38 +274,27 @@ static void cleanup_dir(DIR *dir, mode_t mask, int depth) {
|
||||
* entries for devices in /run/udev/data (such as "b8:16"), and removes
|
||||
* all files except those that haven't been deleted in /run/udev/data
|
||||
* (i.e. they were skipped during db cleanup because of the db_persist flag).
|
||||
* Returns true if the directory is empty after cleanup.
|
||||
*/
|
||||
static bool cleanup_dir_after_db_cleanup(DIR *dir, DIR *datadir) {
|
||||
unsigned int kept = 0;
|
||||
|
||||
assert(dir && datadir);
|
||||
static void cleanup_dir_after_db_cleanup(DIR *dir, DIR *datadir) {
|
||||
assert(dir);
|
||||
assert(datadir);
|
||||
|
||||
FOREACH_DIRENT_ALL(dent, dir, break) {
|
||||
struct stat data_stats, link_stats;
|
||||
|
||||
if (dot_or_dot_dot(dent->d_name))
|
||||
continue;
|
||||
if (fstatat(dirfd(dir), dent->d_name, &link_stats, AT_SYMLINK_NOFOLLOW) < 0) {
|
||||
if (errno != ENOENT)
|
||||
kept++;
|
||||
|
||||
if (faccessat(dirfd(datadir), dent->d_name, F_OK, AT_SYMLINK_NOFOLLOW) >= 0)
|
||||
/* The corresponding udev database file still exists.
|
||||
* Assuming the parsistent flag is set for the database. */
|
||||
continue;
|
||||
}
|
||||
|
||||
if (fstatat(dirfd(datadir), dent->d_name, &data_stats, 0) < 0)
|
||||
(void) unlinkat(dirfd(dir), dent->d_name,
|
||||
S_ISDIR(link_stats.st_mode) ? AT_REMOVEDIR : 0);
|
||||
else
|
||||
/* The entry still exists under /run/udev/data */
|
||||
kept++;
|
||||
(void) unlinkat(dirfd(dir), dent->d_name, 0);
|
||||
}
|
||||
|
||||
return kept == 0;
|
||||
}
|
||||
|
||||
static void cleanup_dirs_after_db_cleanup(DIR *dir, DIR *datadir) {
|
||||
|
||||
assert(dir && datadir);
|
||||
assert(dir);
|
||||
assert(datadir);
|
||||
|
||||
FOREACH_DIRENT_ALL(dent, dir, break) {
|
||||
struct stat stats;
|
||||
@ -305,15 +307,17 @@ static void cleanup_dirs_after_db_cleanup(DIR *dir, DIR *datadir) {
|
||||
_cleanup_closedir_ DIR *dir2 = NULL;
|
||||
|
||||
dir2 = fdopendir(openat(dirfd(dir), dent->d_name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC));
|
||||
if (dir2 && cleanup_dir_after_db_cleanup(dir2, datadir))
|
||||
(void) unlinkat(dirfd(dir), dent->d_name, AT_REMOVEDIR);
|
||||
if (dir2)
|
||||
cleanup_dir_after_db_cleanup(dir2, datadir);
|
||||
|
||||
(void) unlinkat(dirfd(dir), dent->d_name, AT_REMOVEDIR);
|
||||
} else
|
||||
(void) unlinkat(dirfd(dir), dent->d_name, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void cleanup_db(void) {
|
||||
_cleanup_closedir_ DIR *dir1 = NULL, *dir2 = NULL, *dir3 = NULL, *dir4 = NULL, *dir5 = NULL;
|
||||
_cleanup_closedir_ DIR *dir1 = NULL, *dir2 = NULL, *dir3 = NULL, *dir4 = NULL;
|
||||
|
||||
dir1 = opendir("/run/udev/data");
|
||||
if (dir1)
|
||||
@ -331,9 +335,8 @@ static void cleanup_db(void) {
|
||||
if (dir4)
|
||||
cleanup_dir(dir4, 0, 2);
|
||||
|
||||
dir5 = opendir("/run/udev/watch");
|
||||
if (dir5)
|
||||
cleanup_dir_after_db_cleanup(dir5, dir1);
|
||||
/* Do not remove /run/udev/watch. It will be handled by udevd well on restart.
|
||||
* And should not be removed by external program when udevd is running. */
|
||||
}
|
||||
|
||||
static int query_device(QueryType query, sd_device* device) {
|
||||
@ -399,10 +402,10 @@ static int query_device(QueryType query, sd_device* device) {
|
||||
|
||||
case QUERY_ALL:
|
||||
return print_record(device);
|
||||
}
|
||||
|
||||
assert_not_reached();
|
||||
return 0;
|
||||
default:
|
||||
assert_not_reached();
|
||||
}
|
||||
}
|
||||
|
||||
static int help(void) {
|
||||
|
||||
@ -116,16 +116,6 @@ endif
|
||||
|
||||
############################################################
|
||||
|
||||
if conf.get('HAVE_SYSV_COMPAT') == 1
|
||||
sysv_generator_test_py = find_program('sysv-generator-test.py')
|
||||
if want_tests != 'false'
|
||||
test('sysv-generator-test',
|
||||
sysv_generator_test_py)
|
||||
endif
|
||||
endif
|
||||
|
||||
############################################################
|
||||
|
||||
if install_tests
|
||||
install_data('run-unit-tests.py',
|
||||
install_mode : 'rwxr-xr-x',
|
||||
@ -184,9 +174,10 @@ if want_tests != 'false' and dmi_arches.contains(host_machine.cpu_family())
|
||||
|
||||
test(name,
|
||||
udev_dmi_memory_id_test,
|
||||
args : [udev_prog_paths['dmi_memory_id'],
|
||||
args : [udev_prog_paths['dmi_memory_id'].full_path(),
|
||||
source,
|
||||
source + '.txt'])
|
||||
source + '.txt'],
|
||||
depends : udev_prog_paths['dmi_memory_id'])
|
||||
endforeach
|
||||
endif
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user