perf build: Shellcheck support for OUTPUT directory
Migrate Makefile.tests to Build so that variables like rule_mkdir are
defined via Makefile.build (needed so the output directory can be
created). This requires SHELLCHECK being exported and the clean rule
tweaking to remove the files in find.
Change find "-perm -o=x" as it was failing on my Debian based Linux
kernel tree, switch to using "-executable".
Adding a filename prefix of "." to the shellcheck log files is a pain
and error prone in make, remove this prefix and just add the
shellcheck log files to .gitignore.
Fix the command echo so that running the test is displayed.
Fixes: 1638b11ef8
("perf tools: Add perf binary dependent rule for shellcheck log in Makefile.perf")
Reviewed-by: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20231129213428.2227448-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
16438b652b
commit
b809fc656e
3
tools/perf/.gitignore
vendored
3
tools/perf/.gitignore
vendored
@ -39,6 +39,9 @@ trace/beauty/generated/
|
||||
pmu-events/pmu-events.c
|
||||
pmu-events/jevents
|
||||
pmu-events/metric_test.log
|
||||
tests/shell/*.shellcheck_log
|
||||
tests/shell/coresight/*.shellcheck_log
|
||||
tests/shell/lib/*.shellcheck_log
|
||||
feature/
|
||||
libapi/
|
||||
libbpf/
|
||||
|
@ -229,8 +229,15 @@ else
|
||||
force_fixdep := $(config)
|
||||
endif
|
||||
|
||||
# Runs shellcheck on perf test shell scripts
|
||||
ifeq ($(NO_SHELLCHECK),1)
|
||||
SHELLCHECK :=
|
||||
else
|
||||
SHELLCHECK := $(shell which shellcheck 2> /dev/null)
|
||||
endif
|
||||
|
||||
export srctree OUTPUT RM CC CXX LD AR CFLAGS CXXFLAGS V BISON FLEX AWK
|
||||
export HOSTCC HOSTLD HOSTAR HOSTCFLAGS
|
||||
export HOSTCC HOSTLD HOSTAR HOSTCFLAGS SHELLCHECK
|
||||
|
||||
include $(srctree)/tools/build/Makefile.include
|
||||
|
||||
@ -673,23 +680,7 @@ $(PERF_IN): prepare FORCE
|
||||
$(PMU_EVENTS_IN): FORCE prepare
|
||||
$(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=pmu-events obj=pmu-events
|
||||
|
||||
# Runs shellcheck on perf test shell scripts
|
||||
|
||||
SHELLCHECK := $(shell which shellcheck 2> /dev/null)
|
||||
|
||||
ifeq ($(NO_SHELLCHECK),1)
|
||||
SHELLCHECK :=
|
||||
endif
|
||||
|
||||
ifneq ($(SHELLCHECK),)
|
||||
SHELLCHECK_TEST: FORCE prepare
|
||||
$(Q)$(MAKE) -f $(srctree)/tools/perf/tests/Makefile.tests
|
||||
else
|
||||
SHELLCHECK_TEST:
|
||||
@:
|
||||
endif
|
||||
|
||||
$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN) $(PMU_EVENTS_IN) SHELLCHECK_TEST
|
||||
$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN) $(PMU_EVENTS_IN)
|
||||
$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) \
|
||||
$(PERF_IN) $(PMU_EVENTS_IN) $(LIBS) -o $@
|
||||
|
||||
@ -1152,9 +1143,8 @@ bpf-skel-clean:
|
||||
$(call QUIET_CLEAN, bpf-skel) $(RM) -r $(SKEL_TMP_OUT) $(SKELETONS)
|
||||
|
||||
clean:: $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean $(LIBSYMBOL)-clean $(LIBPERF)-clean fixdep-clean python-clean bpf-skel-clean tests-coresight-targets-clean
|
||||
$(Q)$(MAKE) -f $(srctree)/tools/perf/tests/Makefile.tests clean
|
||||
$(call QUIET_CLEAN, core-objs) $(RM) $(LIBPERF_A) $(OUTPUT)perf-archive $(OUTPUT)perf-iostat $(LANG_BINDINGS)
|
||||
$(Q)find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
|
||||
$(Q)find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete -o -name '*.shellcheck_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
|
||||
$(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \
|
||||
|
@ -77,3 +77,17 @@ CFLAGS_python-use.o += -DPYTHONPATH="BUILD_STR($(OUTPUT)python)" -DPYTHON="BUI
|
||||
CFLAGS_dwarf-unwind.o += -fno-optimize-sibling-calls
|
||||
|
||||
perf-y += workloads/
|
||||
|
||||
ifdef SHELLCHECK
|
||||
SHELL_TESTS := $(shell find tests/shell -executable -type f -name '*.sh')
|
||||
TEST_LOGS := $(SHELL_TESTS:tests/shell/%=shell/%.shellcheck_log)
|
||||
else
|
||||
SHELL_TESTS :=
|
||||
TEST_LOGS :=
|
||||
endif
|
||||
|
||||
$(OUTPUT)%.shellcheck_log: %
|
||||
$(call rule_mkdir)
|
||||
$(Q)$(call echo-cmd,test)shellcheck -a -S warning "$<" > $@ || (cat $@ && rm $@ && false)
|
||||
|
||||
perf-y += $(TEST_LOGS)
|
||||
|
@ -1,22 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Athira Rajeev <atrajeev@linux.vnet.ibm.com>, 2023
|
||||
|
||||
PROGS := $(shell find tests/shell -perm -o=x -type f -name '*.sh')
|
||||
FILE_NAME := $(notdir $(PROGS))
|
||||
FILE_NAME := $(FILE_NAME:%=.%)
|
||||
LOGS := $(join $(dir $(PROGS)),$(FILE_NAME))
|
||||
LOGS := $(LOGS:%=%.shellcheck_log)
|
||||
|
||||
.PHONY: all
|
||||
all: SHELLCHECK_RUN
|
||||
@:
|
||||
|
||||
SHELLCHECK_RUN: $(LOGS)
|
||||
|
||||
.%.shellcheck_log: %
|
||||
$(call rule_mkdir)
|
||||
$(Q)$(call frecho-cmd,test)@shellcheck -S warning "$<" > $@ || (cat $@ && rm $@ && false)
|
||||
|
||||
clean:
|
||||
$(eval log_files := $(shell find . -name '.*.shellcheck_log'))
|
||||
@rm -rf $(log_files)
|
Loading…
Reference in New Issue
Block a user