Commit b809fc65 authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo
Browse files

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: 1638b11e ("perf tools: Add perf binary dependent rule for shellcheck log in Makefile.perf")
Reviewed-by: default avatarAthira Jajeev <atrajeev@linux.vnet.ibm.com>
Signed-off-by: default avatarIan 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: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 16438b65
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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/
+10 −20
Original line number Diff line number Diff line
@@ -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* \
+14 −0
Original line number Diff line number Diff line
@@ -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)

tools/perf/tests/Makefile.tests

deleted100644 → 0
+0 −22
Original line number Diff line number Diff line
# 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)