1
0
mirror of https://github.com/systemd/systemd synced 2024-07-08 20:15:55 +00:00

meson: call find_program() once and reuse the variable everywhere

Meson 0.58 has gotten quite bad with emitting a message every time
a quoted command is used:
Program /home/zbyszek/src/systemd-work/tools/meson-make-symlink.sh found: YES (/home/zbyszek/src/systemd-work/tools/meson-make-symlink.sh)
Program sh found: YES (/usr/bin/sh)
Program sh found: YES (/usr/bin/sh)
Program sh found: YES (/usr/bin/sh)
Program sh found: YES (/usr/bin/sh)
Program sh found: YES (/usr/bin/sh)
Program sh found: YES (/usr/bin/sh)
Program xsltproc found: YES (/usr/bin/xsltproc)
Configuring custom-entities.ent using configuration
Message: Skipping bootctl.1 because ENABLE_EFI is false
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Message: Skipping journal-remote.conf.5 because HAVE_MICROHTTPD is false
Message: Skipping journal-upload.conf.5 because HAVE_MICROHTTPD is false
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Message: Skipping loader.conf.5 because ENABLE_EFI is false
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
Program ln found: YES (/usr/bin/ln)
...

Let's suffer one message only for each command. Hopefully we can silence
even this when https://github.com/mesonbuild/meson/issues/8642 is
resolved.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2021-05-14 14:16:17 +02:00
parent a2031de849
commit 0f4c4f3824
18 changed files with 80 additions and 97 deletions

View File

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

View File

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

View File

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

View File

@ -600,17 +600,22 @@ endif
versiondep = declare_dependency(sources: version_h)
sh = find_program('sh')
echo = find_program('echo')
test = find_program('test')
sed = find_program('sed')
awk = find_program('awk')
m4 = find_program('m4')
stat = find_program('stat')
ln = find_program('ln')
git = find_program('git', required : false)
env = find_program('env')
perl = find_program('perl', required : false)
meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
mkdir_p = 'mkdir -p $DESTDIR/@0@'
rsync = find_program('rsync', required : false)
meson_make_symlink = find_program('tools/meson-make-symlink.sh')
test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
mkdir_p = 'mkdir -p $DESTDIR/@0@'
splash_bmp = files('test/splash.bmp')
# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
@ -644,7 +649,7 @@ endforeach
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)')
endif
@ -658,7 +663,7 @@ const char * in_word_set(const char *, @0@);
@1@
'''
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())
if cc.compiles(gperf_test)
gperf_len_type = 'size_t'
@ -718,11 +723,11 @@ conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
time_epoch = get_option('time-epoch')
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 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()
time_epoch = run_command('git', 'log', '--no-show-signature', '-1', '--format=%at', latest_tag).stdout()
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()
endif
if time_epoch == ''
NEWS = files('NEWS')
@ -1865,7 +1870,7 @@ foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
# We cannot use shared_module because it does not support version suffix.
# Unfortunately shared_library insists on creating the symlink…
meson.add_install_script('sh', '-c',
meson.add_install_script(sh, '-c',
'rm $DESTDIR@0@/libnss_@1@.so'
.format(rootlibdir, module))
@ -2801,11 +2806,9 @@ if conf.get('ENABLE_BINFMT') == 1
install : true,
install_dir : rootlibexecdir)
meson.add_install_script('sh', '-c',
mkdir_p.format(binfmtdir))
meson.add_install_script(sh, '-c', mkdir_p.format(binfmtdir))
if install_sysconfdir
meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
meson.add_install_script(sh, '-c', mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
endif
endif
@ -3269,11 +3272,9 @@ if conf.get('HAVE_KMOD') == 1
install : true,
install_dir : rootlibexecdir)
meson.add_install_script('sh', '-c',
mkdir_p.format(modulesloaddir))
meson.add_install_script(sh, '-c', mkdir_p.format(modulesloaddir))
if install_sysconfdir
meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
meson.add_install_script(sh, '-c', mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
endif
endif
@ -3351,10 +3352,10 @@ executable(
custom_target(
'systemd-runtest.env',
output : 'systemd-runtest.env',
command : ['sh', '-c', '{ ' +
'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(project_build_root, 'catalog')) +
'} >@OUTPUT@'],
command : [sh, '-c',
'{ echo SYSTEMD_TEST_DATA=@0@; echo SYSTEMD_CATALOG_DIR=@1@; } >@OUTPUT@'.format(
join_paths(project_source_root, 'test'),
join_paths(project_build_root, 'catalog'))],
build_by_default : true)
test_cflags = ['-DTEST_CODE=1']
@ -3546,8 +3547,8 @@ install_data('LICENSE.GPL2',
'docs/GVARIANT-SERIALIZATION.md',
install_dir : docdir)
meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
meson.add_install_script(sh, '-c', mkdir_p.format(systemdstatedir))
meson.add_install_script(sh, '-c', 'touch $DESTDIR@0@'.format(prefixdir))
############################################################
@ -3595,7 +3596,7 @@ foreach tuple : sanitizers
name,
output : name,
depends : build,
command : [env, 'ln', '-fs',
command : [ln, '-fs',
join_paths(build.full_path(), b),
'@OUTPUT@'],
build_by_default : true)
@ -3622,9 +3623,8 @@ endforeach
if git.found()
all_files = run_command(
'env', '-u', 'GIT_WORK_TREE',
git,
'--git-dir=@0@/.git'.format(project_source_root),
env, '-u', 'GIT_WORK_TREE',
git, '--git-dir=@0@/.git'.format(project_source_root),
'ls-files', ':/*.[ch]')
all_files = files(all_files.stdout().split())
@ -3648,16 +3648,16 @@ endif
if git.found()
git_head = run_command(
git,
['--git-dir=@0@/.git'.format(project_source_root),
'rev-parse', 'HEAD']).stdout().strip()
'--git-dir=@0@/.git'.format(project_source_root),
'rev-parse', 'HEAD').stdout().strip()
git_head_short = run_command(
git,
['--git-dir=@0@/.git'.format(project_source_root),
'rev-parse', '--short=7', 'HEAD']).stdout().strip()
'--git-dir=@0@/.git'.format(project_source_root),
'rev-parse', '--short=7', 'HEAD').stdout().strip()
run_target(
'git-snapshot',
command : ['git', 'archive',
command : [git, 'archive',
'-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
git_head_short),
'--prefix', 'systemd-@0@/'.format(git_head),
@ -3694,7 +3694,7 @@ endif
custom_target(
'update-man-rules',
output : 'update-man-rules',
command : ['sh', '-c',
command : [sh, '-c',
'cd @0@ && '.format(meson.build_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())],

View File

@ -11,7 +11,7 @@ if conf.get('ENABLE_NETWORKD') == 1
install_dir : networkdir)
if install_sysconfdir
meson.add_install_script('sh', '-c',
meson.add_install_script(sh, '-c',
mkdir_p.format(join_paths(sysconfdir, 'systemd/network')))
endif
endif

View File

@ -72,14 +72,14 @@ if conf.get('ENABLE_EFI') == 1 and get_option('gnu-efi') != 'false'
if efi_libdir == ''
# New location first introduced with gnu-efi 3.0.11
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
# Fall back to the old approach
cmd = run_command(efi_cc + ['-print-multi-os-directory'])
if cmd.returncode() == 0
path = join_paths('/usr/lib', cmd.stdout().strip())
cmd = run_command('realpath', '-e', path)
cmd = run_command(env, 'realpath', '-e', path)
if cmd.returncode() == 0
efi_libdir = cmd.stdout().strip()
endif
@ -116,7 +116,8 @@ if have_gnu_efi
foreach sbatvar : sbatvars
value = get_option(sbatvar[0])
if value == '' or value == 'auto'
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()
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', cmd).stdout().strip()
endif
if value == ''
error('Required @0@ option not set and autodetection failed'.format(sbatvar[0]))
@ -156,7 +157,7 @@ if have_gnu_efi
efi_lds = ''
foreach location : efi_location_map
if efi_lds == ''
cmd = run_command('test', '-f', location[0])
cmd = run_command(test, '-f', location[0])
if cmd.returncode() == 0
efi_lds = location[0]
efi_crt0 = location[1]

View File

@ -203,15 +203,15 @@ policy = configure_file(
install_data(policy,
install_dir : polkitpolicydir)
meson.add_install_script('sh', '-c', mkdir_p.format(systemshutdowndir))
meson.add_install_script('sh', '-c', mkdir_p.format(systemsleepdir))
meson.add_install_script('sh', '-c', mkdir_p.format(systemgeneratordir))
meson.add_install_script('sh', '-c', mkdir_p.format(usergeneratordir))
meson.add_install_script(sh, '-c', mkdir_p.format(systemshutdowndir))
meson.add_install_script(sh, '-c', mkdir_p.format(systemsleepdir))
meson.add_install_script(sh, '-c', mkdir_p.format(systemgeneratordir))
meson.add_install_script(sh, '-c', mkdir_p.format(usergeneratordir))
if install_sysconfdir
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system')))
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')))
meson.add_install_script(sh, '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system')))
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
############################################################

View File

@ -67,9 +67,9 @@ if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
install_dir : join_paths(pkgdatadir, 'gatewayd'))
if get_option('create-log-dirs')
meson.add_install_script('sh', '-c',
meson.add_install_script(sh, '-c',
mkdir_p.format('/var/log/journal/remote'))
meson.add_install_script('sh', '-c',
meson.add_install_script(sh, '-c',
'''chown 0:0 $DESTDIR/var/log/journal/remote &&
chmod 755 $DESTDIR/var/log/journal/remote || :''')
endif

View File

@ -56,22 +56,17 @@ if install_sysconfdir_samples
endif
if get_option('create-log-dirs')
meson.add_install_script(
'sh', '-c',
mkdir_p.format('/var/log/journal'))
meson.add_install_script(
'sh', '-c',
'''chown 0:0 $DESTDIR/var/log/journal &&
chmod 755 $DESTDIR/var/log/journal || :''')
meson.add_install_script(sh, '-c', mkdir_p.format('/var/log/journal'))
meson.add_install_script(sh, '-c',
'''chown 0:0 $DESTDIR/var/log/journal &&
chmod 755 $DESTDIR/var/log/journal || :''')
if get_option('adm-group')
meson.add_install_script(
'sh', '-c',
'setfacl -nm g:adm:rx,d:g:adm:rx $DESTDIR/var/log/journal || :')
meson.add_install_script(sh, '-c',
'setfacl -nm g:adm:rx,d:g:adm:rx $DESTDIR/var/log/journal || :')
endif
if get_option('wheel-group')
meson.add_install_script(
'sh', '-c',
'setfacl -nm g:wheel:rx,d:g:wheel:rx $DESTDIR/var/log/journal || :')
meson.add_install_script(sh, '-c',
'setfacl -nm g:wheel:rx,d:g:wheel:rx $DESTDIR/var/log/journal || :')
endif
endif

View File

@ -14,7 +14,7 @@ if want_kernel_install
install_dir : kernelinstalldir)
if install_sysconfdir
meson.add_install_script('sh', '-c',
meson.add_install_script(sh, '-c',
mkdir_p.format(join_paths(sysconfdir, 'kernel/install.d')))
endif

View File

@ -20,7 +20,7 @@ endif
# If you know a way that allows the same variables to be used
# in sources list and concatenated to a string for test_env,
# 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')
if conf.get('ENABLE_LOCALED') == 1

View File

@ -11,7 +11,7 @@ test_hashmap_ordered_c = custom_target(
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.set('SYSTEMD_KBD_MODEL_MAP', kbd_model_map)
test_env.set('SYSTEMD_LANGUAGE_FALLBACK_MAP', language_fallback_map)

View File

@ -165,8 +165,7 @@ configure_file(
install_dir : pkgconfigdatadir == 'no' ? '' : pkgconfigdatadir)
if install_sysconfdir
meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'udev/rules.d')))
meson.add_install_script(sh, '-c', mkdir_p.format(join_paths(sysconfdir, 'udev/rules.d')))
endif
fuzzers += [

View File

@ -28,6 +28,5 @@ foreach file : in_files
endforeach
if install_sysconfdir
meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'sysctl.d')))
meson.add_install_script(sh, '-c', mkdir_p.format(join_paths(sysconfdir, 'sysctl.d')))
endif

View File

@ -22,14 +22,11 @@ sanitize_address_undefined = custom_target(
sanitizers = [['address,undefined', sanitize_address_undefined]]
if git.found()
out = run_command(
'env', '-u', 'GIT_WORK_TREE',
git,
'--git-dir=@0@/.git'.format(project_source_root),
'ls-files', ':/test/fuzz/*/*')
out = run_command(env, '-u', 'GIT_WORK_TREE',
git, '--git-dir=@0@/.git'.format(project_source_root),
'ls-files', ':/test/fuzz/*/*')
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
fuzz_regression_tests = []

View File

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

View File

@ -57,7 +57,5 @@ foreach file : m4_files
endforeach
if enable_tmpfiles and install_sysconfdir
meson.add_install_script(
'sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'tmpfiles.d')))
meson.add_install_script(sh, '-c', mkdir_p.format(join_paths(sysconfdir, 'tmpfiles.d')))
endif

View File

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