Skip to content

Commit 3bdd897

Browse files
mstorsjogitster
authored andcommitted
meson: tolerate errors from git ls-files --deduplicate
When using the Meson build system with versions of Git before 2.31, that does not yet know the `git ls-files --deduplicate` option, one can observe the following error: ../meson.build:697:19: ERROR: Command `/usr/bin/git -C /home/martin/code/git ls-files --deduplicate '*.h' ':!contrib' ':!compat/inet_ntop.c' ':!compat/inet_pton.c' ':!compat/nedmalloc' ':!compat/obstack.*' ':!compat/poll' ':!compat/regex' ':!sha1collisiondetection' ':!sha1dc' ':!t/unit-tests/clar' ':!t/t[0-9][0-9][0-9][0-9]*' ':!xdiff'` failed with status 129. The failing command is used to find all header files in our code base, which is required for static analysis. Static analysis is an entirely optional feature that distributors typically don't care about, and we already know to skip running the command when we are not in a Git repository. But we do not handle the above failure gracefully, even though we could. Fix this by passing `check: false` to `run_command`, which makes it tolerate failures. Then check `returncode()` manually to decide whether to inspect the output. Signed-off-by: Martin Storsjö <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent f368df4 commit 3bdd897

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

meson.build

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -694,9 +694,14 @@ third_party_excludes = [
694694

695695
headers_to_check = []
696696
if git.found() and fs.exists(meson.project_source_root() / '.git')
697-
foreach header : run_command(git, '-C', meson.project_source_root(), 'ls-files', '--deduplicate', '*.h', third_party_excludes, check: true).stdout().split()
698-
headers_to_check += header
699-
endforeach
697+
ls_headers = run_command(git, '-C', meson.project_source_root(), 'ls-files', '--deduplicate', '*.h', third_party_excludes, check: false)
698+
if ls_headers.returncode() == 0
699+
foreach header : ls_headers.stdout().split()
700+
headers_to_check += header
701+
endforeach
702+
else
703+
warning('could not list headers, disabling static analysis targets')
704+
endif
700705
endif
701706

702707
if not get_option('breaking_changes')

0 commit comments

Comments
 (0)