From a412ec571467609aba433ae568dc856ed7924150 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 8 Jan 2021 20:27:48 +0100 Subject: [PATCH] meson: fix git ls-files invocations during rebase Normally ls-files prints the full path to files from the repo root. But when $GIT_WORK_TREE is set, ls-files prints paths relative to the current directory. When rebasing, $GIT_WORK_TREE is set in the commands executed from 'rebase -x'. This causes problems if meson config is touched and the meson reconfigures itself. ($GIT_WORK_TREE shouldn't be relevant, since the paths that ls-files reports don't depend on the work tree, but whatever.) Let's unset GIT_WORK_TREE to avoid the issue. $ (cd test; git --git-dir=$PWD/../.git ls-files ':/test/dmidecode-dumps/*.bin') test/dmidecode-dumps/HP-Z600.bin test/dmidecode-dumps/Lenovo-ThinkPad-X280.bin test/dmidecode-dumps/Lenovo-Thinkcentre-m720s.bin $ (cd test; GIT_WORK_TREE=$PWD/.. git --git-dir=$PWD/../.git ls-files ':/test/dmidecode-dumps/*.bin') dmidecode-dumps/HP-Z600.bin dmidecode-dumps/Lenovo-ThinkPad-X280.bin dmidecode-dumps/Lenovo-Thinkcentre-m720s.bin Fixes #18148. --- meson.build | 7 ++++--- test/fuzz/meson.build | 3 ++- test/meson.build | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index 6573046c43..aedde9b94e 100644 --- a/meson.build +++ b/meson.build @@ -3651,10 +3651,11 @@ endforeach if git.found() all_files = run_command( + 'env', '-u', 'GIT_WORK_TREE', git, - ['--git-dir=@0@/.git'.format(project_source_root), - 'ls-files', - ':/*.[ch]']) + '--git-dir=@0@/.git'.format(project_source_root), + 'ls-files', ':/*.[ch]') + all_files = files(all_files.stdout().split()) custom_target( diff --git a/test/fuzz/meson.build b/test/fuzz/meson.build index 7a83961d11..fc8033dbbe 100644 --- a/test/fuzz/meson.build +++ b/test/fuzz/meson.build @@ -23,9 +23,10 @@ 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/*/*') + 'ls-files', ':/test/fuzz/*/*') else out = run_command( 'sh', '-c', 'ls @0@/test/fuzz/*/*'.format(project_source_root)) diff --git a/test/meson.build b/test/meson.build index 1e8a56aa90..2785dc92a7 100644 --- a/test/meson.build +++ b/test/meson.build @@ -142,6 +142,7 @@ 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), 'ls-files', ':/test/dmidecode-dumps/*.bin')