diff --git a/build-aux/Makefile.in b/build-aux/Makefile.in index 7ee4680847..db44ee36a4 100644 --- a/build-aux/Makefile.in +++ b/build-aux/Makefile.in @@ -3,6 +3,7 @@ top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ FLAKE8 = @flake8_path@ +BLACK = @black_path@ RUNUTF8 = @runutf8@ PYTHON = @PYTHON3@ GREP = @GREP@ diff --git a/build-aux/meson.build b/build-aux/meson.build index f96d46c445..06be6ab6c8 100644 --- a/build-aux/meson.build +++ b/build-aux/meson.build @@ -5,6 +5,10 @@ if git and tests_enabled[0] if flake8_prog.found() flake8_path = flake8_prog.full_path() endif + black_path = '' + if black_prog.found() + black_path = black_prog.full_path() + endif if host_machine.system() == 'freebsd' or host_machine.system() == 'darwin' make_prog = find_program('gmake') @@ -35,6 +39,7 @@ if git and tests_enabled[0] 'top_srcdir': meson.project_source_root(), 'top_builddir': meson.project_build_root(), 'flake8_path': flake8_path, + 'black_path': black_path, 'runutf8': ' '.join(runutf8), 'PYTHON3': python3_prog.full_path(), 'GREP': grep_prog.full_path(), diff --git a/build-aux/syntax-check.mk b/build-aux/syntax-check.mk index 070737842e..721e82f49a 100644 --- a/build-aux/syntax-check.mk +++ b/build-aux/syntax-check.mk @@ -608,6 +608,16 @@ sc_flake8: echo 'skipping test $@: flake8 not installed' 1>&2; \ fi +sc_black: + if [ -n "$(BLACK)" ]; then \ + DOT_PY=$$($(VC_LIST_EXCEPT) | $(GREP) '\.py$$'); \ + BANG_PY=$$($(VC_LIST_EXCEPT) | xargs grep -l '^#!/usr/bin/env python3$$'); \ + ALL_PY=$$(printf "%s\n%s" "$$DOT_PY" "$$BANG_PY" | sort -u); \ + echo "$$ALL_PY" | xargs --no-run-if-empty $(BLACK) --check; \ + else \ + echo 'skipping test $@: black not installed' 1>&2; \ + fi + # mymain() in test files should use return, not exit, for nicer output sc_prohibit_exit_in_tests: @prohibit='\&2; \ echo "*****************************************************" >&2; \ fi + if [ -z "$(BLACK)" ]; then \ + echo "*****************************************************" >&2; \ + echo "* black not installed, sc_black has been skipped *" >&2; \ + echo "*****************************************************" >&2; \ + fi endif # Don't include duplicate header in the source (either *.c or *.h) @@ -1486,6 +1501,9 @@ exclude_file_name_regexp--sc_prohibit_select = \ ^build-aux/syntax-check\.mk|src/util/vireventglibwatch\.c|tests/meson\.build$$ +exclude_file_name_regexp--sc_black = \ + ^tools/|src/|tests/|ci/|run\.in|scripts/[^/]*\.py + ## -------------- ## ## Implementation ## ## -------------- ## diff --git a/meson.build b/meson.build index dc0969abcc..5b095bb809 100644 --- a/meson.build +++ b/meson.build @@ -809,6 +809,7 @@ endforeach optional_programs = [ 'augparse', + 'black', 'dmidecode', 'ebtables', 'flake8',