From: Zbigniew Jędrzejewski-Szmek Date: Fri, 8 Jan 2021 19:27:48 +0000 (+0100) Subject: meson: fix git ls-files invocations during rebase X-Git-Tag: v248-rc1~394 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a412ec571467609aba433ae568dc856ed7924150;p=thirdparty%2Fsystemd.git 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. --- diff --git a/meson.build b/meson.build index 6573046c439..aedde9b94e9 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 7a83961d11c..fc8033dbbee 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 1e8a56aa90a..2785dc92a77 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')