1
0
mirror of https://github.com/systemd/systemd synced 2026-03-15 17:44:49 +01:00

Compare commits

..

No commits in common. "d57e871c60805e3f1f57729ea8022477a611697d" and "c856ef0457c35e9edfdbf085b69ec81c126d48e5" have entirely different histories.

11 changed files with 56 additions and 71 deletions

View File

@ -30,4 +30,5 @@ foreach file : in_files
endforeach endforeach
meson.add_install_script('sh', '-c', meson.add_install_script('sh', '-c',
'test -n "$DESTDIR" || @0@/journalctl --update-catalog'.format(rootbindir)) 'test -n "$DESTDIR" || @0@/journalctl --update-catalog'
.format(rootbindir))

View File

@ -51,7 +51,8 @@ if conf.get('ENABLE_HWDB') == 1
mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d'))) mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d')))
meson.add_install_script('sh', '-c', meson.add_install_script('sh', '-c',
'test -n "$DESTDIR" || @0@/systemd-hwdb update'.format(rootbindir)) 'test -n "$DESTDIR" || @0@/systemd-hwdb update'
.format(rootbindir))
endif endif
if want_tests != 'false' if want_tests != 'false'

View File

@ -70,7 +70,7 @@ foreach tuple : xsltproc.found() ? manpages : []
link = custom_target( link = custom_target(
htmlalias, htmlalias,
output : htmlalias, output : htmlalias,
command : [ln, '-fs', html, '@OUTPUT@']) command : ['ln', '-fs', html, '@OUTPUT@'])
if want_html if want_html
dst = join_paths(docdir, 'html', htmlalias) dst = join_paths(docdir, 'html', htmlalias)
cmd = 'ln -fs @0@ $DESTDIR@1@'.format(html, dst) cmd = 'ln -fs @0@ $DESTDIR@1@'.format(html, dst)
@ -148,7 +148,7 @@ foreach tuple : xsltproc.found() ? [['systemd.directives', '7', systemd_directiv
htmlalias, htmlalias,
input : p2, input : p2,
output : htmlalias, output : htmlalias,
command : [ln, '-fs', html, '@OUTPUT@']) command : ['ln', '-fs', html, '@OUTPUT@'])
if want_html if want_html
dst = join_paths(docdir, 'html', htmlalias) dst = join_paths(docdir, 'html', htmlalias)
cmd = 'ln -fs @0@ $DESTDIR@1@'.format(html, dst) cmd = 'ln -fs @0@ $DESTDIR@1@'.format(html, dst)
@ -176,14 +176,15 @@ man = custom_target(
'man', 'man',
output : 'man', output : 'man',
depends : man_pages, depends : man_pages,
command : [echo]) command : ['echo'])
html = custom_target( html = custom_target(
'html', 'html',
output : 'html', output : 'html',
depends : html_pages, depends : html_pages,
command : [echo]) command : ['echo'])
rsync = find_program('rsync', required : false)
if rsync.found() if rsync.found()
run_target( run_target(
'doc-sync', 'doc-sync',

View File

@ -600,22 +600,17 @@ endif
versiondep = declare_dependency(sources: version_h) versiondep = declare_dependency(sources: version_h)
sh = find_program('sh')
echo = find_program('echo')
test = find_program('test')
sed = find_program('sed') sed = find_program('sed')
awk = find_program('awk') awk = find_program('awk')
m4 = find_program('m4') m4 = find_program('m4')
stat = find_program('stat') stat = find_program('stat')
ln = find_program('ln')
git = find_program('git', required : false) git = find_program('git', required : false)
env = find_program('env') env = find_program('env')
perl = find_program('perl', required : false) perl = find_program('perl', required : false)
rsync = find_program('rsync', required : false)
meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
mkdir_p = 'mkdir -p $DESTDIR/@0@' mkdir_p = 'mkdir -p $DESTDIR/@0@'
test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
splash_bmp = files('test/splash.bmp') splash_bmp = files('test/splash.bmp')
# if -Dxxx-path option is found, use that. Otherwise, check in $PATH, # if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
@ -649,7 +644,7 @@ endforeach
conf.set_quoted('TELINIT', get_option('telinit-path')) conf.set_quoted('TELINIT', get_option('telinit-path'))
if run_command(ln, '--relative', '--help').returncode() != 0 if run_command('ln', '--relative', '--help').returncode() != 0
error('ln does not support --relative (added in coreutils 8.16)') error('ln does not support --relative (added in coreutils 8.16)')
endif endif
@ -663,7 +658,7 @@ const char * in_word_set(const char *, @0@);
@1@ @1@
''' '''
gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C' gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
gperf_snippet = run_command(sh, '-c', gperf_snippet_format.format(gperf.path())) gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout()) gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
if cc.compiles(gperf_test) if cc.compiles(gperf_test)
gperf_len_type = 'size_t' gperf_len_type = 'size_t'
@ -723,11 +718,11 @@ conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
time_epoch = get_option('time-epoch') time_epoch = get_option('time-epoch')
if time_epoch == -1 if time_epoch == -1
time_epoch = run_command(sh, '-c', 'echo "$SOURCE_DATE_EPOCH"').stdout().strip() time_epoch = run_command('sh', ['-c', 'echo "$SOURCE_DATE_EPOCH"']).stdout().strip()
if time_epoch == '' and git.found() and run_command('test', '-e', '.git').returncode() == 0 if time_epoch == '' and git.found() and run_command('test', '-e', '.git').returncode() == 0
# If we're in a git repository, use the creation time of the latest git tag. # If we're in a git repository, use the creation time of the latest git tag.
latest_tag = run_command(git, 'describe', '--abbrev=0', '--tags').stdout().strip() latest_tag = run_command('git', 'describe', '--abbrev=0', '--tags').stdout().strip()
time_epoch = run_command(git, 'log', '--no-show-signature', '-1', '--format=%at', latest_tag).stdout() time_epoch = run_command('git', 'log', '--no-show-signature', '-1', '--format=%at', latest_tag).stdout()
endif endif
if time_epoch == '' if time_epoch == ''
NEWS = files('NEWS') NEWS = files('NEWS')
@ -3356,10 +3351,10 @@ executable(
custom_target( custom_target(
'systemd-runtest.env', 'systemd-runtest.env',
output : 'systemd-runtest.env', output : 'systemd-runtest.env',
command : [sh, '-c', command : ['sh', '-c', '{ ' +
'{ echo SYSTEMD_TEST_DATA=@0@; echo SYSTEMD_CATALOG_DIR=@1@; } >@OUTPUT@'.format( 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
join_paths(project_source_root, 'test'), 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(project_build_root, 'catalog')) +
join_paths(project_build_root, 'catalog'))], '} >@OUTPUT@'],
build_by_default : true) build_by_default : true)
test_cflags = ['-DTEST_CODE=1'] test_cflags = ['-DTEST_CODE=1']
@ -3600,7 +3595,7 @@ foreach tuple : sanitizers
name, name,
output : name, output : name,
depends : build, depends : build,
command : [ln, '-fs', command : [env, 'ln', '-fs',
join_paths(build.full_path(), b), join_paths(build.full_path(), b),
'@OUTPUT@'], '@OUTPUT@'],
build_by_default : true) build_by_default : true)
@ -3627,8 +3622,9 @@ endforeach
if git.found() if git.found()
all_files = run_command( all_files = run_command(
env, '-u', 'GIT_WORK_TREE', 'env', '-u', 'GIT_WORK_TREE',
git, '--git-dir=@0@/.git'.format(project_source_root), git,
'--git-dir=@0@/.git'.format(project_source_root),
'ls-files', ':/*.[ch]') 'ls-files', ':/*.[ch]')
all_files = files(all_files.stdout().split()) all_files = files(all_files.stdout().split())
@ -3652,16 +3648,16 @@ endif
if git.found() if git.found()
git_head = run_command( git_head = run_command(
git, git,
'--git-dir=@0@/.git'.format(project_source_root), ['--git-dir=@0@/.git'.format(project_source_root),
'rev-parse', 'HEAD').stdout().strip() 'rev-parse', 'HEAD']).stdout().strip()
git_head_short = run_command( git_head_short = run_command(
git, git,
'--git-dir=@0@/.git'.format(project_source_root), ['--git-dir=@0@/.git'.format(project_source_root),
'rev-parse', '--short=7', 'HEAD').stdout().strip() 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
run_target( run_target(
'git-snapshot', 'git-snapshot',
command : [git, 'archive', command : ['git', 'archive',
'-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root, '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
git_head_short), git_head_short),
'--prefix', 'systemd-@0@/'.format(git_head), '--prefix', 'systemd-@0@/'.format(git_head),
@ -3698,7 +3694,7 @@ endif
custom_target( custom_target(
'update-man-rules', 'update-man-rules',
output : 'update-man-rules', output : 'update-man-rules',
command : [sh, '-c', command : ['sh', '-c',
'cd @0@ && '.format(meson.build_root()) + 'cd @0@ && '.format(meson.build_root()) +
'python3 @0@/tools/update-man-rules.py $(find @0@ -wholename "*/man/*.xml") >t && '.format(project_source_root) + 'python3 @0@/tools/update-man-rules.py $(find @0@ -wholename "*/man/*.xml") >t && '.format(project_source_root) +
'mv t @0@/man/rules/meson.build'.format(meson.current_source_dir())], 'mv t @0@/man/rules/meson.build'.format(meson.current_source_dir())],

View File

@ -72,14 +72,14 @@ if conf.get('ENABLE_EFI') == 1 and get_option('gnu-efi') != 'false'
if efi_libdir == '' if efi_libdir == ''
# New location first introduced with gnu-efi 3.0.11 # New location first introduced with gnu-efi 3.0.11
efi_libdir = join_paths('/usr/lib/gnuefi', EFI_MACHINE_TYPE_NAME) efi_libdir = join_paths('/usr/lib/gnuefi', EFI_MACHINE_TYPE_NAME)
cmd = run_command(test, '-e', efi_libdir) cmd = run_command('test', '-e', efi_libdir)
if cmd.returncode() != 0 if cmd.returncode() != 0
# Fall back to the old approach # Fall back to the old approach
cmd = run_command(efi_cc + ['-print-multi-os-directory']) cmd = run_command(efi_cc + ['-print-multi-os-directory'])
if cmd.returncode() == 0 if cmd.returncode() == 0
path = join_paths('/usr/lib', cmd.stdout().strip()) path = join_paths('/usr/lib', cmd.stdout().strip())
cmd = run_command(env, 'realpath', '-e', path) cmd = run_command('realpath', '-e', path)
if cmd.returncode() == 0 if cmd.returncode() == 0
efi_libdir = cmd.stdout().strip() efi_libdir = cmd.stdout().strip()
endif endif
@ -116,9 +116,7 @@ if have_gnu_efi
foreach sbatvar : sbatvars foreach sbatvar : sbatvars
value = get_option(sbatvar[0]) value = get_option(sbatvar[0])
if value == '' or value == 'auto' if value == '' or value == 'auto'
cmd = 'if [ -e /etc/os-release ]; then . /etc/os-release; else . /usr/lib/os-release; fi; echo $@0@'.format(sbatvar[1]) value = run_command('sh', '-c', 'if [ -e /etc/os-release ]; then . /etc/os-release; else . /usr/lib/os-release; fi; echo $' + sbatvar[1]).stdout().strip()
value = run_command(sh, '-c', cmd).stdout().strip()
message('@0@ (from @1@): @2@'.format(sbatvar[0], sbatvar[1], value))
endif endif
if value == '' if value == ''
error('Required @0@ option not set and autodetection failed'.format(sbatvar[0])) error('Required @0@ option not set and autodetection failed'.format(sbatvar[0]))
@ -158,7 +156,7 @@ if have_gnu_efi
efi_lds = '' efi_lds = ''
foreach location : efi_location_map foreach location : efi_location_map
if efi_lds == '' if efi_lds == ''
cmd = run_command(test, '-f', location[0]) cmd = run_command('test', '-f', location[0])
if cmd.returncode() == 0 if cmd.returncode() == 0
efi_lds = location[0] efi_lds = location[0]
efi_crt0 = location[1] efi_crt0 = location[1]

View File

@ -20,7 +20,7 @@ endif
# If you know a way that allows the same variables to be used # If you know a way that allows the same variables to be used
# in sources list and concatenated to a string for test_env, # in sources list and concatenated to a string for test_env,
# let me know. # let me know.
kbd_model_map = join_paths(meson.current_source_dir(), 'kbd-model-map') kbd_model_map = join_paths(meson.current_source_dir(), 'kbd-model-map')
language_fallback_map = join_paths(meson.current_source_dir(), 'language-fallback-map') language_fallback_map = join_paths(meson.current_source_dir(), 'language-fallback-map')
if conf.get('ENABLE_LOCALED') == 1 if conf.get('ENABLE_LOCALED') == 1

View File

@ -11,7 +11,7 @@ test_hashmap_ordered_c = custom_target(
test_include_dir = include_directories('.') test_include_dir = include_directories('.')
path = run_command(sh, '-c', 'echo "$PATH"').stdout().strip() path = run_command('sh', ['-c', 'echo "$PATH"']).stdout().strip()
test_env = environment() test_env = environment()
test_env.set('SYSTEMD_KBD_MODEL_MAP', kbd_model_map) test_env.set('SYSTEMD_KBD_MODEL_MAP', kbd_model_map)
test_env.set('SYSTEMD_LANGUAGE_FALLBACK_MAP', language_fallback_map) test_env.set('SYSTEMD_LANGUAGE_FALLBACK_MAP', language_fallback_map)

View File

@ -22,11 +22,14 @@ sanitize_address_undefined = custom_target(
sanitizers = [['address,undefined', sanitize_address_undefined]] sanitizers = [['address,undefined', sanitize_address_undefined]]
if git.found() if git.found()
out = run_command(env, '-u', 'GIT_WORK_TREE', out = run_command(
git, '--git-dir=@0@/.git'.format(project_source_root), 'env', '-u', 'GIT_WORK_TREE',
'ls-files', ':/test/fuzz/*/*') git,
'--git-dir=@0@/.git'.format(project_source_root),
'ls-files', ':/test/fuzz/*/*')
else else
out = run_command(sh, '-c', 'ls @0@/test/fuzz/*/*'.format(project_source_root)) out = run_command(
'sh', '-c', 'ls @0@/test/fuzz/*/*'.format(project_source_root))
endif endif
fuzz_regression_tests = [] fuzz_regression_tests = []

View File

@ -131,12 +131,13 @@ if want_tests != 'false' and dmi_arches.contains(host_machine.cpu_family())
if git.found() if git.found()
out = run_command( out = run_command(
env, '-u', 'GIT_WORK_TREE', 'env', '-u', 'GIT_WORK_TREE',
git, '--git-dir=@0@/.git'.format(project_source_root), git,
'--git-dir=@0@/.git'.format(project_source_root),
'ls-files', ':/test/dmidecode-dumps/*.bin') 'ls-files', ':/test/dmidecode-dumps/*.bin')
else else
out = run_command( out = run_command(
sh, '-c', 'ls @0@/test/dmidecode-dumps/*.bin'.format(project_source_root)) 'sh', '-c', 'ls @0@/test/dmidecode-dumps/*.bin'.format(project_source_root))
endif endif
foreach p : out.stdout().split() foreach p : out.stdout().split()

View File

@ -4,7 +4,6 @@ import argparse
import dataclasses import dataclasses
import glob import glob
import os import os
import pathlib
import subprocess import subprocess
import sys import sys
try: try:
@ -28,8 +27,6 @@ def argument_parser():
p = argparse.ArgumentParser() p = argparse.ArgumentParser()
p.add_argument('-u', '--unsafe', action='store_true', p.add_argument('-u', '--unsafe', action='store_true',
help='run "unsafe" tests too') help='run "unsafe" tests too')
p.add_argument('-A', '--artifact_directory',
help='store output from failed tests in this dir')
return p return p
opts = argument_parser().parse_args() opts = argument_parser().parse_args()
@ -38,14 +35,11 @@ tests = glob.glob('/usr/lib/systemd/tests/test-*')
if opts.unsafe: if opts.unsafe:
tests += glob.glob('/usr/lib/systemd/tests/unsafe/test-*') tests += glob.glob('/usr/lib/systemd/tests/unsafe/test-*')
if not opts.artifact_directory and os.getenv('ARTIFACT_DIRECTORY'):
opts.artifact_directory = os.getenv('ARTIFACT_DIRECTORY')
total = Total(total=len(tests)) total = Total(total=len(tests))
for test in tests: for test in tests:
name = os.path.basename(test) name = os.path.basename(test)
ex = subprocess.run(test, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) ex = subprocess.run(test, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if ex.returncode == 0: if ex.returncode == 0:
print(f'{GREEN}PASS: {name}{RESET_ALL}') print(f'{GREEN}PASS: {name}{RESET_ALL}')
total.good += 1 total.good += 1
@ -56,23 +50,12 @@ for test in tests:
print(f'{RED}FAIL: {name}{RESET_ALL}') print(f'{RED}FAIL: {name}{RESET_ALL}')
total.fail += 1 total.fail += 1
output_file = None # stdout/stderr might not be valid unicode, let's just dump it to the terminal.
if opts.artifact_directory: # Also let's reset the style afterwards, in case our output sets something.
output_dir = pathlib.Path(opts.artifact_directory) / 'unit-tests' sys.stdout.buffer.write(ex.stdout)
output_dir.mkdir(parents=True, exist_ok=True) print(f'{RESET_ALL}{BRIGHT}')
output_file = output_dir / name sys.stdout.buffer.write(ex.stderr)
output_file.write_bytes(ex.stdout) print(f'{RESET_ALL}')
try:
print(ex.stdout.decode('utf-8'))
except UnicodeDecodeError:
print(f'{BRIGHT}Note, some test output shown here is not UTF-8')
if output_file:
print(f'For actual test output see artifact file {output_file}')
print(f'{RESET_ALL}')
print(ex.stdout.decode('utf-8', errors='replace'))
sys.stdout.flush()
print(f'{BRIGHT}OK: {total.good} SKIP: {total.skip} FAIL: {total.fail}{RESET_ALL}') print(f'{BRIGHT}OK: {total.good} SKIP: {total.skip} FAIL: {total.fail}{RESET_ALL}')
sys.exit(total.fail > 0) sys.exit(total.fail > 0)

View File

@ -349,7 +349,8 @@ if conf.get('HAVE_SYSV_COMPAT') == 1
foreach i : [1, 2, 3, 4, 5] foreach i : [1, 2, 3, 4, 5]
meson.add_install_script( meson.add_install_script(
'sh', '-c', 'sh', '-c',
mkdir_p.format(join_paths(systemunitdir, 'runlevel@0@.target.wants'.format(i)))) mkdir_p
.format(join_paths(systemunitdir, 'runlevel@0@.target.wants'.format(i))))
endforeach endforeach
endif endif