]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: Use rsync to copy test data directories
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 16 Aug 2023 19:22:57 +0000 (21:22 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 17 Aug 2023 11:50:26 +0000 (13:50 +0200)
install_subdir() does not copy symlinks but copies the file they
point to. We also get a very ugly warning in the meson install
output:

"""
Warning: trying to copy a symlink that points to a file. This will copy the file,
but this will be changed in a future version of Meson to copy the symlink as is. Please update your
build definitions so that it will not break when the change happens.
"""

Let's fix both problems at once by using rsync which does the right
thing. Verified by running systemd-dissect --mtree on both the install
output before and after and all the symlinks are now correctly preserved.

test/meson.build

index 836a506ed87483016eba693dcb230f3e65ee2fde..73a8ae2b1c3e796f09fe790a449cbcad92561a6a 100644 (file)
@@ -23,9 +23,18 @@ if install_tests
                 'testsuite-63.units',
                 'testsuite-80.units',
         ]
-                install_subdir(subdir,
-                               exclude_files : '.gitattributes',
-                               install_dir : testdata_dir)
+                # install_subdir() does not handle symlinks correctly which causes a very ugly warning when
+                # installing, so if rsync is available we use that instead. See
+                # https://github.com/mesonbuild/meson/issues/9233.
+                if rsync.found()
+                        rsync_r = rsync.full_path() + ' -rlpt --exclude .gitattributes -- "@0@" "${DESTDIR:-}@1@"'
+                        meson.add_install_script(sh, '-c',
+                                                 rsync_r.format(meson.current_source_dir() / subdir, testdata_dir))
+                else
+                        install_subdir(subdir,
+                                       exclude_files : '.gitattributes',
+                                       install_dir : testdata_dir)
+                endif
         endforeach
 
         install_data(kbd_model_map,