From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755038AbcANPop (ORCPT ); Thu, 14 Jan 2016 10:44:45 -0500 Received: from mail.kernel.org ([198.145.29.136]:37124 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750828AbcANPon (ORCPT ); Thu, 14 Jan 2016 10:44:43 -0500 Date: Thu, 14 Jan 2016 12:44:36 -0300 From: Arnaldo Carvalho de Melo To: pi3orama Cc: Wang Nan , jolsa@redhat.com, linux-kernel@vger.kernel.org, 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: <20160114154436.GV18367@kernel.org> References: <1452777243-178927-1-git-send-email-wangnan0@huawei.com> <1452777243-178927-4-git-send-email-wangnan0@huawei.com> <20160114145021.GT18367@kernel.org> <20160114145817.GU18367@kernel.org> <55C8AD45-4C6F-454E-A0E9-4BCF769EE74E@163.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <55C8AD45-4C6F-454E-A0E9-4BCF769EE74E@163.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 11:08:11PM +0800, pi3orama escreveu: > > > 发自我的 iPhone > > > 在 2016年1月14日,下午10:58,Arnaldo Carvalho de Melo 写道: > > > > Em Thu, Jan 14, 2016 at 11:50:21AM -0300, Arnaldo Carvalho de Melo escreveu: > >> 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: > > > > Also, while trying to get this to work, I found these places lacking the > > O= prefixing, right? > > > > > > diff --git a/tools/perf/tests/make b/tools/perf/tests/make > > index e74c86b00c31..67842900482e 100644 > > --- a/tools/perf/tests/make > > +++ b/tools/perf/tests/make > > @@ -59,7 +59,7 @@ has = $(shell which $1 2>/dev/null) > > > > # standard single make variable specified > > make_clean_all := clean all > > -make_python_perf_so := python/perf.so > > +make_python_perf_so := $(PERF_O)/python/perf.so > > make_debug := DEBUG=1 > > make_no_libperl := NO_LIBPERL=1 > > make_no_libpython := NO_LIBPYTHON=1 > > @@ -82,9 +82,9 @@ make_tags := tags > > make_cscope := cscope > > make_help := help > > make_doc := doc > > -make_perf_o := perf.o > > -make_util_map_o := util/map.o > > -make_util_pmu_bison_o := util/pmu-bison.o > > +make_perf_o := $(PERF_O)/perf.o > > +make_util_map_o := $(PERF_O)/util/map.o > > +make_util_pmu_bison_o := $(PERF_O)/util/pmu-bison.o > > make_install := install > > make_install_bin := install-bin > > make_install_doc := install-doc > > I have throughly tested this patch set, both > with and without O, many times, and see no > error related to this part of code, so I think > we don't really need this prefix. > > But maybe there's error I never noticed. > Let me check it tomorrow. Ok, but are you testing it patch after patch or just after all the patches in this series are applied? Here, with up to: I am getting 'make clean' related errors after some tests on a RHEL7.1 test machine: - make_no_libunwind: cd . && make -f Makefile DESTDIR=/tmp/tmp.CKrCzt1X85 NO_LIBUNWIND=1 find: ‘/home/acme/git/linux/tools/perf/tests/dso-data.o’: No such file or directory find: ‘/home/acme/git/linux/tools/perf/tests/.dso-data.o.cmd’: No such file or directory find: ‘/home/acme/git/linux/tools/perf/tests/pmu.o’: No such file or directory find: ‘/home/acme/git/linux/tools/perf/tests/sw-clock.o’: No such file or directory find: ‘/home/acme/git/linux/tools/perf/tests/.sample-parsing.o.cmd’: No such file or directory find: ‘/home/acme/git/linux/tools/perf/tests/attr.o’: No such file or directory - make_help: cd . && make -f Makefile DESTDIR=/tmp/tmp.9Gcw1OfooR help - make_no_slang: cd . && make -f Makefile DESTDIR=/tmp/tmp.Ce5PSg2snH NO_SLANG=1 And 'build-test' fails when it tries to run the 'make_static' target and that is not the first one to be run: - make_no_libelf: cd . && make -f Makefile DESTDIR=/tmp/tmp.tEwrxaQPOB NO_LIBELF=1 - make_no_libdw_dwarf_unwind: cd . && make -f Makefile DESTDIR=/tmp/tmp.4r7zlxeeAA NO_LIBDW_DWARF_UNWIND=1 - make_no_libnuma: cd . && make -f Makefile DESTDIR=/tmp/tmp.XuaZ3SACwX NO_LIBNUMA=1 - make_perf_o: cd . && make -f Makefile DESTDIR=/tmp/tmp.LXh3STdaiO perf.o - make_static: cd . && make -f Makefile DESTDIR=/tmp/tmp.xii2W5SLf2 LDFLAGS=-static cd . && make -f Makefile DESTDIR=/tmp/tmp.xii2W5SLf2 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.gbe874d2 CC plugin_hrtimer.o CC util/zlib.o CC util/lzma.o FLEX util/parse-events-flex.c FLEX util/pmu-flex.c CC util/pmu-bison.o CC util/parse-events.o CC util/parse-events-flex.o CC util/pmu.o CC util/pmu-flex.o LD util/libperf-in.o LD libperf-in.o AR libperf.a /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 cp: cannot stat ‘python_ext_build/lib/perf.so’: No such file or directory make[4]: *** [python/perf.so] Error 1 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' ------------------- If I try it manually, in the source tree: [acme@felicio linux]$ cd tools/perf [acme@felicio perf]$ make LDFLAGS=-static BUILD: Doing 'make -j4' parallel build GEN libtraceevent-dynamic-list LINK libperf-gtk.so /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 make[1]: *** [libperf-gtk.so] Error 1 make: *** [all] Error 2 [acme@felicio perf]$ And if I do a make clean and try again, it works: [acme@felicio perf]$ make clean CLEAN libtraceevent CLEAN libapi CLEAN libbpf CLEAN libsubcmd CLEAN libsubcmd CLEAN config CLEAN core-objs CLEAN core-progs CLEAN core-gen SUBDIR Documentation CLEAN Documentation CLEAN python [acme@felicio perf]$ make LDFLAGS=-static BUILD: Doing 'make -j4' parallel build Auto-detecting system features: ... dwarf: [ OFF ] ... glibc: [ on ] ... gtk2: [ OFF ] ... libaudit: [ OFF ] ... libbfd: [ OFF ] ... libelf: [ on ] ... libnuma: [ OFF ] ... numa_num_possible_cpus: [ OFF ] ... libperl: [ OFF ] ... libpython: [ OFF ] ... libslang: [ OFF ] ... libunwind: [ OFF ] ... libdw-dwarf-unwind: [ OFF ] ... zlib: [ OFF ] ... lzma: [ OFF ] ... get_cpuid: [ on ] ... bpf: [ on ] config/Makefile:268: No libdw DWARF unwind found, Please install elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR config/Makefile:272: No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev config/Makefile:328: DWARF support is off, BPF prologue is disabled config/Makefile:342: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR config/Makefile:360: Disabling post unwind, no support found. config/Makefile:401: No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev config/Makefile:416: slang not found, disables TUI support. Please install slang-devel or libslang-dev config/Makefile:430: GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev config/Makefile:458: Missing perl devel files. Disabling perl scripting support, please install perl-ExtUtils-Embed/libperl-dev config/Makefile:501: No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev config/Makefile:562: No bfd.h/libbfd found, please install binutils-dev[el]/zlib-static/libiberty-dev to gain symbol demangling config/Makefile:591: No liblzma found, disables xz kernel module decompression, please install xz-devel/liblzma-dev config/Makefile:604: No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev GEN common-cmds.h CC util/abspath.o CC fd/array.o CC fs/fs.o CC util/alias.o CC fs/tracing_path.o PERF_VERSION = 4.4.gbe874d2 CC event-parse.o CC util/annotate.o CC tests/llvm-src-prologue.o LD tests/perf-in.o LD perf-in.o LD libperf-in.o AR libperf.a LINK perf /home/acme/git/linux/tools/lib/traceevent/libtraceevent.a(libtraceevent-in.o): In function `load_plugin': /home/acme/git/linux/tools/lib/traceevent/event-plugin.c:304: warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking libperf.a(libperf-in.o): In function `target__parse_uid': /home/acme/git/linux/tools/perf/util/target.c:79: warning: Using 'getpwnam_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /home/acme/git/linux/tools/perf/util/target.c:91: warning: Using 'getpwuid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libpthread.a(libpthread.o): In function `sem_open': (.text+0x682b): warning: the use of `mktemp' is dangerous, better use `mkstemp' [acme@felicio perf]$ Running it again I don't see those warnings, that are for things we should fix eventually for static builds but that are not problems related to what we're trying to fix here: [acme@felicio perf]$ make LDFLAGS=-static BUILD: Doing 'make -j4' parallel build Auto-detecting system features: ... dwarf: [ OFF ] ... glibc: [ on ] ... gtk2: [ OFF ] ... libaudit: [ OFF ] ... libbfd: [ OFF ] ... libelf: [ on ] ... libnuma: [ OFF ] ... numa_num_possible_cpus: [ OFF ] ... libperl: [ OFF ] ... libpython: [ OFF ] ... libslang: [ OFF ] ... libunwind: [ OFF ] ... libdw-dwarf-unwind: [ OFF ] ... zlib: [ OFF ] ... lzma: [ OFF ] ... get_cpuid: [ on ] ... bpf: [ on ] config/Makefile:268: No libdw DWARF unwind found, Please install elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR config/Makefile:272: No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev config/Makefile:328: DWARF support is off, BPF prologue is disabled config/Makefile:342: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR config/Makefile:360: Disabling post unwind, no support found. config/Makefile:401: No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev config/Makefile:416: slang not found, disables TUI support. Please install slang-devel or libslang-dev config/Makefile:430: GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev config/Makefile:458: Missing perl devel files. Disabling perl scripting support, please install perl-ExtUtils-Embed/libperl-dev config/Makefile:501: No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev config/Makefile:562: No bfd.h/libbfd found, please install binutils-dev[el]/zlib-static/libiberty-dev to gain symbol demangling config/Makefile:591: No liblzma found, disables xz kernel module decompression, please install xz-devel/liblzma-dev config/Makefile:604: No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev [acme@felicio perf]$ - Arnaldo