]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: use files() not find_program() for helper scripts
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 25 Jul 2025 10:18:19 +0000 (12:18 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 25 Jul 2025 12:04:17 +0000 (14:04 +0200)
We went back and forth between 'prog.sh', files('prog.sh'), and
find_program('prog.sh'). We want to use files() or find_program() so that we
get a good error message if the file is missing. Behaviour of meson changed
over time, and in the past not all forms could be used in all places. For
example 0f4c4f3824891aea6a76b2e861f38a6045b2a246 added find_program() in many
places to avoid repeated messages. But it seems that all recent meson versions
work fine with files().

find_program prints silly messages:
  Program tools/make-man-index.py found: YES
       (/home/zbyszek/src/systemd/tools/make-man-index.py)
  Program tools/meson-render-jinja2.py found: YES
       (/home/zbyszek/src/systemd/tools/meson-render-jinja2.py)
  ...
We know that those files will be found, they are part of the git checkout.
With files() this is gone and the meson output is easier to read.

12 files changed:
hwdb.d/meson.build
meson.build
src/basic/meson.build
src/boot/meson.build
src/include/override/sys/meson.build
src/kernel-install/meson.build
src/resolve/meson.build
src/shared/meson.build
src/test/meson.build
test/fuzz/meson.build
test/integration-tests/meson.build
test/meson.build

index 7173c8b5e259a0b5e645edb36f306b62bffeaef6..5eb8c4218b0cefa4b7c3bdcdea055aefecd5f014 100644 (file)
@@ -63,9 +63,8 @@ if conf.get('ENABLE_HWDB') == 1
         endif
 
         if want_tests != 'false'
-                parse_hwdb_py = find_program('parse_hwdb.py')
                 test('parse-hwdb',
-                     parse_hwdb_py,
+                     files('parse_hwdb.py'),
                      suite : 'dist',
                      args : [hwdb_files_test,
                              auto_suspend_rules],
index bb1fa37f4b3a8b96a5d7a44d4f9bb43e862d5a6f..dda7b8d9fe2ed66d6b655899d439613fb8bb7acb 100644 (file)
@@ -345,7 +345,7 @@ cc = meson.get_compiler('c')
 userspace_c_args = []
 userspace_c_ld_args = []
 userspace_sources = []
-meson_build_sh = find_program('tools/meson-build.sh')
+meson_build_sh = files('tools/meson-build.sh')
 
 want_tests = get_option('tests')
 want_slow_tests = want_tests != 'false' and get_option('slow-tests')
@@ -1887,7 +1887,7 @@ conf.set10('ENABLE_UKIFY', want_ukify)
 
 #####################################################################
 
-check_efi_alignment_py = find_program('tools/check-efi-alignment.py')
+check_efi_alignment_py = files('tools/check-efi-alignment.py')
 
 #####################################################################
 
@@ -1960,21 +1960,21 @@ conf.set10('HAVE_VMLINUX_H', use_provided_vmlinux_h or use_generated_vmlinux_h)
 
 #####################################################################
 
-check_version_history_py = find_program('tools/check-version-history.py')
-elf2efi_py = find_program('tools/elf2efi.py')
-export_dbus_interfaces_py = find_program('tools/dbus_exporter.py')
-generate_gperfs = find_program('tools/generate-gperfs.py')
-make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
-make_directive_index_py = find_program('tools/make-directive-index.py')
-sync_docs_py = find_program('tools/sync-docs.py')
-make_man_index_py = find_program('tools/make-man-index.py')
-meson_render_jinja2 = find_program('tools/meson-render-jinja2.py')
-update_dbus_docs_py = find_program('tools/update-dbus-docs.py')
-update_hwdb_autosuspend_sh = find_program('tools/update-hwdb-autosuspend.sh')
-update_hwdb_sh = find_program('tools/update-hwdb.sh')
-update_man_rules_py = find_program('tools/update-man-rules.py')
-update_syscall_tables_sh = find_program('tools/update-syscall-tables.sh')
-xml_helper_py = find_program('tools/xml_helper.py')
+check_version_history_py   = files('tools/check-version-history.py')
+elf2efi_py                 = files('tools/elf2efi.py')
+export_dbus_interfaces_py  = files('tools/dbus_exporter.py')
+generate_gperfs            = files('tools/generate-gperfs.py')
+make_autosuspend_rules_py  = files('tools/make-autosuspend-rules.py')
+make_directive_index_py    = files('tools/make-directive-index.py')
+sync_docs_py               = files('tools/sync-docs.py')
+make_man_index_py          = files('tools/make-man-index.py')
+meson_render_jinja2        = files('tools/meson-render-jinja2.py')
+update_dbus_docs_py        = files('tools/update-dbus-docs.py')
+update_hwdb_autosuspend_sh = files('tools/update-hwdb-autosuspend.sh')
+update_hwdb_sh             = files('tools/update-hwdb.sh')
+update_man_rules_py        = files('tools/update-man-rules.py')
+update_syscall_tables_sh   = files('tools/update-syscall-tables.sh')
+xml_helper_py              = files('tools/xml_helper.py')
 
 #####################################################################
 
@@ -2808,8 +2808,8 @@ endif
 
 #####################################################################
 
-check_help = find_program('tools/check-help.sh')
-check_version = find_program('tools/check-version.sh')
+check_help    = files('tools/check-help.sh')
+check_version = files('tools/check-version.sh')
 
 foreach exec : public_programs
         name = fs.name(exec.full_path())
@@ -2850,10 +2850,9 @@ if git.found()
 
         ####################################################
 
-        git_contrib_sh = find_program('tools/git-contrib.sh')
         run_target(
                 'git-contrib',
-                command : [git_contrib_sh])
+                command : files('tools/git-contrib.sh'))
 
         ####################################################
 
@@ -2911,11 +2910,12 @@ if meson.version().version_compare('>=1.4.0')
         endforeach
 endif
 
-check_api_docs_sh = find_program('tools/check-api-docs.sh')
 run_target(
         'check-api-docs',
         depends : [man, libsystemd, libudev],
-        command : [check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
+        command : [files('tools/check-api-docs.sh'),
+                   libsystemd.full_path(),
+                   libudev.full_path()])
 
 alias_target('update-dbus-docs', update_dbus_docs)
 alias_target('update-man-rules', update_man_rules)
@@ -2929,13 +2929,13 @@ if not meson.is_cross_build()
                 command : [export_dbus_interfaces_py, '@OUTPUT@', dbus_programs])
 endif
 
-meson_extract_unit_files = find_program('tools/meson-extract-unit-files.py')
 custom_target(
         output : 'installed-unit-files.txt',
         capture : true,
         install : want_tests != 'no' and install_tests,
         install_dir : testdata_dir,
-        command : [meson_extract_unit_files, meson.project_build_root()])
+        command : [files('tools/meson-extract-unit-files.py'),
+                   meson.project_build_root()])
 
 #####################################################################
 
index 82f50d6d06f35f23d1b6ceef6d26d681b4dfcc82..923f332fcf8da8df452039c572b2bd7c211c50c2 100644 (file)
@@ -168,11 +168,12 @@ basic_sources += generated_gperf_headers
 
 ############################################################
 
-check_filesystems = find_program('check-filesystems.sh')
 r = run_command(
         [
                 'env', '--chdir', meson.project_build_root(),
-                check_filesystems, cpp, files('filesystems-gperf.gperf'),
+                files('check-filesystems.sh'),
+                cpp,
+                files('filesystems-gperf.gperf'),
                 system_include_args,
         ],
         check: false,
@@ -186,19 +187,17 @@ filesystems_gperf_h = custom_target(
         output : 'filesystems-gperf.h',
         command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@'])
 
-generate_filesystem_list = find_program('generate-filesystem-list.py')
 filesystem_list_inc = custom_target(
         input : 'filesystems-gperf.gperf',
         output : 'filesystem-list.inc',
-        command : [generate_filesystem_list,
+        command : [files('generate-filesystem-list.py'),
                    '@INPUT@'],
         capture : true)
 
-generate_filesystem_switch_case_inc = find_program('generate-filesystem-switch-case.py')
 filesystem_switch_case_inc = custom_target(
         input : 'filesystems-gperf.gperf',
         output : 'filesystem-switch-case.inc',
-        command : [generate_filesystem_switch_case_inc,
+        command : [files('generate-filesystem-switch-case.py'),
                    '@INPUT@'],
         capture : true)
 
index 7cb500fac08feab90654243cf7f3a8439c05b44f..ba0b309acff65415b1ac6543c434444a28f66192 100644 (file)
@@ -27,13 +27,12 @@ efitest_base = {
 efi_test_template = test_template + efitest_base
 efi_fuzz_template = fuzz_template + efitest_base
 
-generate_hwids_section_py = find_program('generate-hwids-section.py')
-
 if conf.get('ENABLE_UKIFY') == 1
         test_hwids_section_c = custom_target(
                 input : ['hwids/device1.json', 'hwids/device2.json', 'hwids/device3.json', 'hwids/device4.json'],
                 output : 'test-hwids-section.c',
-                command : [generate_hwids_section_py, meson.current_source_dir()/'hwids'],
+                command : [files('generate-hwids-section.py'),
+                           meson.current_source_dir()/'hwids'],
                 capture : true,
                 build_by_default : want_tests != 'false')
 else
index b66f9d055fd7a05e8f1962559688ac480acce576..194a57f278f529da9689e18e1979c21ad9605dcc 100644 (file)
@@ -34,8 +34,8 @@ foreach arch: arch_list
         syscall_lists += files('syscalls-@0@.txt'.format(arch))
 endforeach
 
-generate_syscall_py = find_program('generate-syscall.py')
-
 run_target(
         'update-syscall-header',
-        command : [generate_syscall_py, files('syscall.h')] + syscall_lists)
+        command : [files('generate-syscall.py'),
+                   files('syscall.h'),
+                   syscall_lists])
index cd2a611c66ec71f59a0a834b668b83646f59ffbb..716fffb46b047b65141ac368291a532fde13a3fb 100644 (file)
@@ -51,4 +51,4 @@ if want_kernel_install
         endif
 endif
 
-test_kernel_install_sh = find_program('test-kernel-install.sh')
+test_kernel_install_sh = files('test-kernel-install.sh')
index dfe4970235623290e9adb8978e1a789bcde501ae..8dc3bb45705543dcfed9673fd299ec1ed2a30251 100644 (file)
@@ -52,12 +52,13 @@ dns_type_list_txt = custom_target(
         command : [sed, '-n', '-r', '-f', '@INPUT0@', '@INPUT1@'],
         capture : true)
 
-generate_dns_type_gperf = find_program('generate-dns_type-gperf.py')
-
 gperf_file = custom_target(
         input : dns_type_list_txt,
         output : 'dns_type-from-name.gperf',
-        command : [generate_dns_type_gperf, 'dns_type', 'DNS_TYPE_', '@INPUT@'],
+        command : [files('generate-dns_type-gperf.py'),
+                   'dns_type',
+                   'DNS_TYPE_',
+                   '@INPUT@'],
         capture : true)
 
 dns_type_from_name_inc = custom_target(
index 9466a1742e1d466e1ff2d7050a3c348aaa242909..d4330874591dbd1554f3ab213ae976c0650f68e4 100644 (file)
@@ -231,11 +231,10 @@ if get_option('tests') != 'false'
         shared_sources += files('tests.c')
 endif
 
-generate_syscall_list = find_program('generate-syscall-list.py')
 syscall_list_inc = custom_target(
         input : syscall_list_txt,
         output : 'syscall-list.inc',
-        command : [generate_syscall_list,
+        command : [files('generate-syscall-list.py'),
                    '@INPUT@'],
         capture : true)
 
index 111fe541ba9d96afcd77af1ec069acbace18d26a..c65e73f487d9efa7bce649ff539d97e84a4006fe 100644 (file)
@@ -23,19 +23,29 @@ endif
 
 ############################################################
 
-generate_sym_test_py = find_program('generate-sym-test.py')
+generate_sym_test_py = files('generate-sym-test.py')
 
 test_libsystemd_sym_c = custom_target(
-        input : [libsystemd_sym_path] + systemd_headers + libsystemd_sources,
+        input : [libsystemd_sym_path,
+                 systemd_headers,
+                 libsystemd_sources],
         output : 'test-libsystemd-sym.c',
-        command : [generate_sym_test_py, libsystemd_sym_path, libsystemd_dir_path] + systemd_headers,
+        command : [generate_sym_test_py,
+                   libsystemd_sym_path,
+                   libsystemd_dir_path,
+                   systemd_headers],
         capture : true,
         build_by_default : want_tests != 'false')
 
 test_libudev_sym_c = custom_target(
-        input : [libudev_sym_path, libudev_h_path] + libudev_sources,
+        input : [libudev_sym_path,
+                 libudev_h_path,
+                 libudev_sources],
         output : 'test-libudev-sym.c',
-        command : [generate_sym_test_py, libudev_sym_path, libudev_dir_path, libudev_h_path],
+        command : [generate_sym_test_py,
+                   libudev_sym_path,
+                   libudev_dir_path,
+                   libudev_h_path],
         capture : true,
         build_by_default : want_tests != 'false')
 
index 48d962b520da04fdf8b44debb5cedcd100c91f5c..1af3ec993396260ee73db1f7b95844c1796d8590 100644 (file)
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 
-generate_directives_py = find_program('generate-directives.py')
+generate_directives_py = files('generate-directives.py')
 
 fuzz_regression_tests = {}
 
index 08eb724dd2829c681a46543ef96644d0926f7cf8..f28be9e24ea71cd82decb8ff0aeb350dfa1cd6ed 100644 (file)
@@ -4,7 +4,7 @@
 add_test_setup('integration')
 add_test_setup('shell', env : {'TEST_SHELL' : '1'})
 
-integration_test_wrapper = find_program('integration-test-wrapper.py')
+integration_test_wrapper = files('integration-test-wrapper.py')
 integration_tests = []
 integration_test_template = {
         'mkosi-args' : [],
index cd5f747c9fe62fe38f135da7fb7193a506c0851a..48e0ba7f92508a6306cbc599d581329fe92fd920 100644 (file)
@@ -38,10 +38,9 @@ endif
 ############################################################
 
 if want_tests != 'false' and conf.get('ENABLE_HWDB') == 1
-        hwdb_test_sh = find_program('hwdb-test.sh')
         exe = executables_by_name.get('systemd-hwdb')
         test('hwdb-test',
-             hwdb_test_sh,
+             files('hwdb-test.sh'),
              suite : 'dist',
              args : exe.full_path(),
              depends : exe,
@@ -51,11 +50,10 @@ endif
 ############################################################
 
 if want_tests != 'false'
-        test_systemctl_enable_sh = find_program('test-systemctl-enable.sh')
         systemctl = executables_by_name.get('systemctl')
         systemd_id128 = executables_by_name.get('systemd-id128')
         test('test-systemctl-enable',
-             test_systemctl_enable_sh,
+             files('test-systemctl-enable.sh'),
              # https://github.com/mesonbuild/meson/issues/2681
              args : [systemctl.full_path(),
                      systemd_id128.full_path()],
@@ -66,10 +64,9 @@ endif
 ############################################################
 
 if want_tests != 'false' and conf.get('HAVE_SYSV_COMPAT') == 1
-        sysv_generator_test_py = find_program('sysv-generator-test.py')
         exe = executables_by_name.get('systemd-sysv-generator')
         test('sysv-generator-test',
-             sysv_generator_test_py,
+             files('sysv-generator-test.py'),
              depends : exe,
              suite : 'sysv')
 endif
@@ -77,10 +74,9 @@ endif
 ############################################################
 
 if want_tests != 'false' and conf.get('HAVE_BLKID') == 1
-        test_bootctl_json_sh = find_program('test-bootctl-json.sh')
         exe = executables_by_name.get('bootctl')
         test('test-bootctl-json',
-             test_bootctl_json_sh,
+             files('test-bootctl-json.sh'),
              args : exe.full_path(),
              depends : exe,
              suite : 'boot')
@@ -89,7 +85,7 @@ endif
 ############################################################
 
 if want_tests != 'false' and conf.get('ENABLE_TMPFILES') == 1
-        test_systemd_tmpfiles_py = find_program('test-systemd-tmpfiles.py')
+        test_systemd_tmpfiles_py = files('test-systemd-tmpfiles.py')
         exe = executables_by_name.get('systemd-tmpfiles')
         test('test-systemd-tmpfiles',
              test_systemd_tmpfiles_py,
@@ -125,10 +121,9 @@ endif
 
 ############################################################
 
-rule_syntax_check_py = find_program('rule-syntax-check.py')
 if want_tests != 'false'
         test('rule-syntax-check',
-             rule_syntax_check_py,
+             files('rule-syntax-check.py'),
              suite : 'dist',
              args : all_rules)
 
@@ -153,7 +148,7 @@ endif
 
 ############################################################
 
-test_fstab_generator_sh = find_program('test-fstab-generator.sh')
+test_fstab_generator_sh = files('test-fstab-generator.sh')
 if want_tests != 'false'
         exe = executables_by_name.get('systemd-fstab-generator')
         test('test-fstab-generator',
@@ -165,14 +160,14 @@ if want_tests != 'false'
              suite : 'fstab')
 endif
 if install_tests
-        install_data('test-fstab-generator.sh',
+        install_data(test_fstab_generator_sh,
                      install_mode : 'rwxr-xr-x',
                      install_dir : unittestsdir)
 endif
 
 ############################################################
 
-test_network_generator_conversion_sh = find_program('test-network-generator-conversion.sh')
+test_network_generator_conversion_sh = files('test-network-generator-conversion.sh')
 if want_tests != 'false'
         exe = executables_by_name.get('systemd-network-generator')
         test('test-network-generator-conversion',
@@ -183,7 +178,7 @@ if want_tests != 'false'
              suite : 'network')
 endif
 if install_tests
-        install_data('test-network-generator-conversion.sh',
+        install_data(test_network_generator_conversion_sh,
                      install_mode : 'rwxr-xr-x',
                      install_dir : unittestsdir)
 endif
@@ -213,12 +208,11 @@ endif
 
 rpm = find_program('rpm', required : false)
 rpmspec = find_program('rpmspec', required : false)
-test_rpm_macros = find_program('test-rpm-macros.sh')
 
 if rpm.found() and rpmspec.found()
         if want_tests != 'false'
                 test('test-rpm-macros',
-                     test_rpm_macros,
+                     files('test-rpm-macros.sh'),
                      suite : 'dist',
                      args : [meson.project_build_root()],
                      depends : rpm_depends)
@@ -230,7 +224,7 @@ endif
 ############################################################
 
 if want_tests != 'false' and conf.get('HAVE_DMI') == 1
-        udev_dmi_memory_id_test = find_program('udev-dmi-memory-id-test.sh')
+        udev_dmi_memory_id_test = files('udev-dmi-memory-id-test.sh')
         exe = executables_by_name.get('dmi_memory_id')
 
         if git.found() and fs.is_dir(meson.project_source_root() / '.git')