From edd84b8e4b9db4dc57345ff97dfc7c22d8a6f241 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Koutn=C3=BD?= Date: Wed, 1 Mar 2023 22:54:06 +0100 Subject: [PATCH] meson: Copy files with git only in true git repository When mkosi is run from git-worktree(1), the .git is not a repository directory but a textfile pointing to the real git dir (e.g. /home/user/systemd/.git/worktrees/systemd-worktree). This git dir is not bind mounted into build environment and it fails with: > fatal: not a git repository: /home/user/systemd/.git/worktrees/systemd-worktree > test/meson.build:190:16: ERROR: Command `/usr/bin/env -u GIT_WORK_TREE /usr/bin/git --git-dir=/root/src/.git ls-files ':/test/dmidecode-dumps/*.bin'` failed with status 128. There is already a fallback to use shell globbing instead of ls-files, use it with git worktrees as well. --- meson.build | 2 +- test/fuzz/meson.build | 2 +- test/meson.build | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/meson.build b/meson.build index 0476d972d00..25761535367 100644 --- a/meson.build +++ b/meson.build @@ -815,7 +815,7 @@ endif time_epoch = get_option('time-epoch') if time_epoch <= 0 time_epoch = run_command(sh, '-c', 'echo "$SOURCE_DATE_EPOCH"', check : true).stdout().strip() - if time_epoch == '' and git.found() and fs.exists('.git') + if time_epoch == '' and git.found() and fs.is_dir('.git') # 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', check : false) diff --git a/test/fuzz/meson.build b/test/fuzz/meson.build index f7f0a6111c2..a8fb71c566d 100644 --- a/test/fuzz/meson.build +++ b/test/fuzz/meson.build @@ -50,7 +50,7 @@ sanitize_address_undefined = custom_target( fuzz_sanitizers = [['address,undefined', sanitize_address_undefined]] fuzz_testsdir = 'test/fuzz' -if git.found() and fs.exists(project_source_root / '.git') +if git.found() and fs.is_dir(project_source_root / '.git') out = run_command(env, '-u', 'GIT_WORK_TREE', git, '--git-dir=@0@/.git'.format(project_source_root), 'ls-files', ':/@0@/*/*'.format(fuzz_testsdir), diff --git a/test/meson.build b/test/meson.build index 93f0e679fe3..a051f77a522 100644 --- a/test/meson.build +++ b/test/meson.build @@ -187,7 +187,7 @@ endif if want_tests != 'false' and dmi_arches.contains(host_machine.cpu_family()) udev_dmi_memory_id_test = find_program('udev-dmi-memory-id-test.sh') - if git.found() and fs.exists(project_source_root / '.git') + if git.found() and fs.is_dir(project_source_root / '.git') out = run_command( env, '-u', 'GIT_WORK_TREE', git, '--git-dir=@0@/.git'.format(project_source_root),