mirror of
https://github.com/torvalds/linux.git
synced 2026-11-10 17:11:02 +01:00
perf build: Make pylint build test opt-out (NO_PYLINT=1)
Commit 8a54784e70 ("perf build: Add pylint build tests") added a
compile-time pylint check for Python files in tools/perf, but left it
opt-in via PYLINT=1.
Now that pylint issues across tools/perf/python, tools/perf/pmu-events,
and tools/perf/tests/shell/lib have been cleaned up, enable the pylint
check by default when pylint is installed on the system, with an opt-out
via NO_PYLINT=1 (matching NO_SHELLCHECK=1, NO_MYPY=1, and other perf
build feature flags).
Configure PYTHONPATH in Makefile.perf so pylint resolves perf.pyi type
stubs and pmu-events modules, enable error and warning categories
(--disable=all --enable=E,W --disable=W0123,W0311,W0511,W0603,W0622,W0718
--ignored-modules=textual,setproctitle) appropriate for perf's standalone
CLI and test scripts, and require pylint >= 2.16.0 (skipping with a
warning if an older version is installed).
Assisted-by: Antigravity:gemini-3.1-pro
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
b3e9c396d0
commit
5fe83fb352
|
|
@ -101,6 +101,6 @@ endif
|
|||
|
||||
$(OUTPUT)%.pylint_log: %
|
||||
$(call rule_mkdir)
|
||||
$(Q)$(call echo-cmd,test)pylint "$<" > $@ || (cat $@ && rm $@ && false)
|
||||
$(Q)$(call echo-cmd,test)$(PYLINT) "$<" > $@ || (cat $@ && rm $@ && false)
|
||||
|
||||
perf-y += $(PYLINT_TEST_LOGS)
|
||||
|
|
|
|||
|
|
@ -128,6 +128,8 @@ include ../scripts/utilities.mak
|
|||
# Define NO_SHELLCHECK if you do not want to run shellcheck during build
|
||||
#
|
||||
# Define NO_MYPY if you do not want to run mypy during build
|
||||
#
|
||||
# Define NO_PYLINT if you do not want to run pylint during build
|
||||
|
||||
# As per kernel Makefile, avoid funny character set dependencies
|
||||
unexport LC_ALL
|
||||
|
|
@ -281,9 +283,39 @@ ifneq ($(force_fixdep),1)
|
|||
endif
|
||||
endif
|
||||
|
||||
# Runs pylint on perf python files
|
||||
ifeq ($(PYLINT),1)
|
||||
PYLINT := $(shell which pylint 2> /dev/null)
|
||||
# Runs pylint on perf python files.
|
||||
# Require pylint >= 2.16.0 (which introduced W0718 broad-exception-caught and
|
||||
# astroid .pyi stub support for perf.pyi).
|
||||
# Disabled warnings:
|
||||
# W0123 (eval-used): Use of eval()
|
||||
# W0311 (bad-indentation): Non-4-space indentation
|
||||
# W0511 (fixme): Presence of FIXME/TODO comments
|
||||
# W0603 (global-statement): Use of the global statement
|
||||
# W0622 (redefined-builtin): Redefining a built-in name (e.g. id, type, dir)
|
||||
# W0718 (broad-exception-caught): Catching broad Exception
|
||||
# Wait until after the fixdep bootstrap sub-make (force_fixdep != 1) before
|
||||
# resolving PYLINT and stripping PYLINT=% from MAKEOVERRIDES (substituting
|
||||
# escaped spaces so multi-word overrides are removed as a single token) so child
|
||||
# Makefile.build sub-makes inherit the PYTHONPATH- and flag-wrapped export.
|
||||
ifneq ($(force_fixdep),1)
|
||||
MAKEOVERRIDES := $(subst __SPACE__,\ ,$(filter-out PYLINT=%,$(subst \ ,__SPACE__,$(MAKEOVERRIDES))))
|
||||
ifeq ($(NO_PYLINT),1)
|
||||
override PYLINT :=
|
||||
else ifeq ($(filter-out 1,$(PYLINT)),)
|
||||
override PYLINT := $(shell which pylint 2> /dev/null)
|
||||
endif
|
||||
|
||||
ifneq ($(PYLINT),)
|
||||
ifneq ($(shell $(PYLINT) --version 2>/dev/null | \
|
||||
awk '/^pylint / { split($$2, v, "."); print (v[1]+0 > 2 || (v[1]+0 == 2 && v[2]+0 >= 16)) }'), 1)
|
||||
$(warning Warning: pylint version is older than 2.16.0, skipping pylint checks.)
|
||||
override PYLINT :=
|
||||
else
|
||||
override PYLINT := PYTHONPATH=$(srctree)/tools/perf/python:$(srctree)/tools/perf/pmu-events \
|
||||
$(PYLINT) --disable=all --enable=E,W --disable=W0123,W0311,W0511,W0603,W0622,W0718 \
|
||||
--ignored-modules=textual,setproctitle
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
export srctree OUTPUT RM CC CXX RUSTC CLANG LD AR CFLAGS CXXFLAGS RUST_FLAGS V BISON FLEX AWK LIBBPF READELF
|
||||
|
|
@ -963,7 +995,7 @@ clean:: $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean $(LIBSYMBOL)-clean $(
|
|||
$(OUTPUT)perf-iostat $(LANG_BINDINGS)
|
||||
$(Q)find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '*.a' -delete -o \
|
||||
-name '\.*.cmd' -delete -o -name '\.*.d' -delete -o -name '*.shellcheck_log' -delete -o \
|
||||
-name '*.mypy_log' -delete
|
||||
-name '*.mypy_log' -delete -o -name '*.pylint_log' -delete
|
||||
$(Q)$(RM) $(OUTPUT).config-detected
|
||||
$(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 \
|
||||
perf-read-vdsox32 $(OUTPUT)$(LIBJVMTI).so
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ endif
|
|||
ifdef PYLINT
|
||||
define PYLINT_RULE
|
||||
$(2): $(1)
|
||||
$$(Q)$$(call echo-cmd,test)pylint $(1) > $(2) || (cat $(2) && rm $(2) && false)
|
||||
$$(Q)$$(call echo-cmd,test)$$(PYLINT) $(1) > $(2) || (cat $(2) && rm $(2) && false)
|
||||
endef
|
||||
$(foreach src,$(wildcard pmu-events/*.py), \
|
||||
$(eval dest := $(patsubst pmu-events/%,$(OUTPUT)pmu-events/%.pylint_log,$(src))) \
|
||||
|
|
|
|||
|
|
@ -117,6 +117,6 @@ endif
|
|||
|
||||
$(OUTPUT)%.pylint_log: %
|
||||
$(call rule_mkdir)
|
||||
$(Q)$(call echo-cmd,test)pylint "$<" > $@ || (cat $@ && rm $@ && false)
|
||||
$(Q)$(call echo-cmd,test)$(PYLINT) "$<" > $@ || (cat $@ && rm $@ && false)
|
||||
|
||||
perf-test-y += $(PYLINT_TEST_LOGS)
|
||||
|
|
|
|||
|
|
@ -438,7 +438,7 @@ endif
|
|||
|
||||
$(OUTPUT)%.pylint_log: %
|
||||
$(call rule_mkdir)
|
||||
$(Q)$(call echo-cmd,test)pylint "$<" > $@ || (cat $@ && rm $@ && false)
|
||||
$(Q)$(call echo-cmd,test)$(PYLINT) "$<" > $@ || (cat $@ && rm $@ && false)
|
||||
|
||||
perf-util-y += $(PYLINT_TEST_LOGS)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user