From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755420AbcANOue (ORCPT ); Thu, 14 Jan 2016 09:50:34 -0500 Received: from mail.kernel.org ([198.145.29.136]:59828 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754711AbcANOua (ORCPT ); Thu, 14 Jan 2016 09:50:30 -0500 Date: Thu, 14 Jan 2016 11:50:21 -0300 From: Arnaldo Carvalho de Melo To: Wang Nan Cc: jolsa@redhat.com, linux-kernel@vger.kernel.org, pi3orama@163.com, lizefan@huawei.com, Jiri Olsa , Namhyung Kim Subject: Re: [PATCH v2 3/9] perf build: Test correct path of perf in build-test Message-ID: <20160114145021.GT18367@kernel.org> References: <1452777243-178927-1-git-send-email-wangnan0@huawei.com> <1452777243-178927-4-git-send-email-wangnan0@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1452777243-178927-4-git-send-email-wangnan0@huawei.com> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Thu, Jan 14, 2016 at 01:13:57PM +0000, Wang Nan escreveu: > If an 'O' is passed to 'make build-test', many 'test -x' and 'test -f' > will fail because perf resides in a different directory. Fix this by > computing PERF_OUT according to 'O' and test correct output files. > For make_kernelsrc and make_kernelsrc_tools, set KBUILD_OUTPUT_DIR > instead because the path is different from others ($(O)/perf vs > $(O)/tools/perf). So, before this patch: [acme@felicio linux]$ make -C tools/perf -f tests/make make_static make: Entering directory `/home/acme/git/linux/tools/perf' Testing Makefile make[1]: Entering directory `/home/acme/git/linux/tools/perf' - make_static: cd . && make -f Makefile DESTDIR=/tmp/tmp.aCtpIoMBDZ LDFLAGS=-static make[1]: Leaving directory `/home/acme/git/linux/tools/perf' make: Leaving directory `/home/acme/git/linux/tools/perf' [acme@felicio linux]$ after I applied it it was failing, but now, running just the 'make_static' target, it works, oops, trying to run it as plain 'build-test', i.e. randomly picking the targets and running them all... Also note that I'm not using O= at all, trying to check first if it works without it, to avoid introducing a regression. Ok, failed again, I was lucky and it was the second test to run, it seems some cleanup is not being done wrt the python binding... $ make -C tools/perf build-test make: Entering directory `/home/acme/git/linux/tools/perf' Testing Makefile - make_no_demangle: cd . && make -f Makefile DESTDIR=/tmp/tmp.OO1OfcvkFQ NO_DEMANGLE=1 - make_static: cd . && make -f Makefile DESTDIR=/tmp/tmp.jSd2VoICTE LDFLAGS=-static cd . && make -f Makefile DESTDIR=/tmp/tmp.jSd2VoICTE LDFLAGS=-static BUILD: Doing 'make -j4' parallel build Auto-detecting system features: ... dwarf: [ on ] ... glibc: [ on ] ... gtk2: [ on ] ... libaudit: [ on ] ... libbfd: [ on ] ... libelf: [ on ] ... libnuma: [ on ] ... numa_num_possible_cpus: [ on ] ... libperl: [ on ] ... libpython: [ on ] ... libslang: [ on ] ... libunwind: [ on ] ... libdw-dwarf-unwind: [ on ] ... zlib: [ on ] ... lzma: [ on ] ... get_cpuid: [ on ] ... bpf: [ on ] GEN common-cmds.h PERF_VERSION = 4.4.ge0a5e17c CC plugin_hrtimer.o CC plugin_jbd2.o CC plugin_kmem.o LD plugin_jbd2-in.o CC tests/llvm.o AR libperf.a CC tests/bpf.o CC tests/topology.o CC tests/cpumap.o CC tests/stat.o CC tests/event_update.o CC tests/dwarf-unwind.o /usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbeginT.o: could not read symbols: Bad value collect2: error: ld returned 1 exit status error: command 'gcc' failed with exit status 1 CC tests/llvm-src-base.o cp: cannot stat ‘python_ext_build/lib/perf.so’: No such file or directory make[4]: *** [python/perf.so] Error 1 make[4]: *** Waiting for unfinished jobs.... CC tests/llvm-src-kbuild.o CC tests/llvm-src-prologue.o CC perf.o LD tests/perf-in.o LD perf-in.o make[4]: *** wait: No child processes. Stop. make[3]: *** [all] Error 2 test: test -x ./perf make[2]: *** [make_static] Error 1 make[1]: *** [all] Error 2 make: *** [build-test] Error 2 make: Leaving directory `/home/acme/git/linux/tools/perf' [acme@felicio linux]$ - Arnaldo > Signed-off-by: Wang Nan > Cc: Arnaldo Carvalho de Melo > Cc: Jiri Olsa > Cc: Namhyung Kim > --- > tools/perf/tests/make | 23 +++++++++++++++-------- > 1 file changed, 15 insertions(+), 8 deletions(-) > > diff --git a/tools/perf/tests/make b/tools/perf/tests/make > index 14d7b8d..e74c86b 100644 > --- a/tools/perf/tests/make > +++ b/tools/perf/tests/make > @@ -13,10 +13,12 @@ else > endif > else > PERF := . > +PERF_O := $(PERF) > O_OPT := > > ifneq ($(O),) > FULL_O := $(shell readlink -f $(O) || echo $(O)) > + PERF_O := $(FULL_O) > ifeq ($(SET_O),1) > O_OPT := 'O=$(FULL_O)' > endif > @@ -173,11 +175,11 @@ test_make_doc := $(test_ok) > test_make_help_O := $(test_ok) > test_make_doc_O := $(test_ok) > > -test_make_python_perf_so := test -f $(PERF)/python/perf.so > +test_make_python_perf_so := test -f $(PERF_O)/python/perf.so > > -test_make_perf_o := test -f $(PERF)/perf.o > -test_make_util_map_o := test -f $(PERF)/util/map.o > -test_make_util_pmu_bison_o := test -f $(PERF)/util/pmu-bison.o > +test_make_perf_o := test -f $(PERF_O)/perf.o > +test_make_util_map_o := test -f $(PERF_O)/util/map.o > +test_make_util_pmu_bison_o := test -f $(PERF_O)/util/pmu-bison.o > > define test_dest_files > for file in $(1); do \ > @@ -244,7 +246,7 @@ test_make_perf_o_O := test -f $$TMP_O/perf.o > test_make_util_map_o_O := test -f $$TMP_O/util/map.o > test_make_util_pmu_bison_o_O := test -f $$TMP_O/util/pmu-bison.o > > -test_default = test -x $(PERF)/perf > +test_default = test -x $(PERF_O)/perf > test = $(if $(test_$1),$(test_$1),$(test_default)) > > test_default_O = test -x $$TMP_O/perf > @@ -264,7 +266,7 @@ endif > > MAKEFLAGS := --no-print-directory > > -clean := @(cd $(PERF); make -s -f $(MK) clean >/dev/null) > +clean := @(cd $(PERF); make -s -f $(MK) O=$(PERF_O) clean >/dev/null) > > $(run): > $(call clean) > @@ -293,17 +295,22 @@ tarpkg: > ( eval $$cmd ) >> $@ 2>&1 && \ > rm -f $@ > > +KERNEL_O := ../.. > +ifneq ($(O),) > + KERNEL_O := $(O) > +endif > + > make_kernelsrc: > @echo "- make -C $(PARALLEL_OPT) tools/perf" > $(call clean); \ > (make -C ../.. $(PARALLEL_OPT) tools/perf) > $@ 2>&1 && \ > - test -x perf && rm -f $@ || (cat $@ ; false) > + test -x $(KERNEL_O)/tools/perf/perf && rm -f $@ || (cat $@ ; false) > > make_kernelsrc_tools: > @echo "- make -C /tools $(PARALLEL_OPT) perf" > $(call clean); \ > (make -C ../../tools $(PARALLEL_OPT) perf) > $@ 2>&1 && \ > - test -x perf && rm -f $@ || (cat $@ ; false) > + test -x $(KERNEL_O)/tools/perf/perf && rm -f $@ || (cat $@ ; false) > > all: $(run) $(run_O) tarpkg make_kernelsrc make_kernelsrc_tools > @echo OK > -- > 1.8.3.4