Re: [PATCH v3 0/9] perf build: Make build-test faster

From: Arnaldo Carvalho de Melo
Date: Fri Jan 15 2016 - 09:36:45 EST


Em Fri, Jan 15, 2016 at 11:20:05AM +0100, Jiri Olsa escreveu:
> On Fri, Jan 15, 2016 at 04:00:12AM +0000, Wang Nan wrote:
> > Utilise Jiri's feature-dump make target to avoid make build-test check
> > features too many times.
> >
> > v2 -> v3: add $(O_OPT) to 'make clean' to ensure the correctness of
> > config-clean.
> >
> > Jiri Olsa (2):
> > perf build: Add feature-dump target
> > perf build: Introduce FEATURES_DUMP make variable
> >
> > Wang Nan (7):
> > perf build: Set parallel making options build-test
> > perf build: Pass O option to Makefile.perf in build-test
> > perf build: Test correct path of perf in build-test
> > perf build: Pass O option to kernel makefile in build-test
> > tools build: Allow subprojects select all feature checkers
> > perf build: Select all feature checkers for feature-dump
> > perf build: Use feature dump file for build-test
> >
> > tools/build/Makefile.feature | 21 ++++++++++-
> > tools/perf/Makefile.perf | 34 +++++++++++++++++-
> > tools/perf/config/Makefile | 4 +++
> > tools/perf/tests/make | 86 ++++++++++++++++++++++++++++++++++++--------
> > 4 files changed, 128 insertions(+), 17 deletions(-)
>
> got error on:
>
> [jolsa@krava perf]$ make -f tests/make
> Testing Makefile
> readlink: missing operand
> Try 'readlink --help' for more information.
> - /BUILD_TEST_FEATURE_DUMP: cd . && make FEATURE_DUMP_COPY=/BUILD_TEST_FEATURE_DUMP feature-dump
> cd . && make FEATURE_DUMP_COPY=/BUILD_TEST_FEATURE_DUMP feature-dump
> tests/make:329: recipe for target '/BUILD_TEST_FEATURE_DUMP' failed
> make[1]: *** [/BUILD_TEST_FEATURE_DUMP] Error 2
> tests/make:7: recipe for target 'all' failed
> make: *** [all] Error 2

You mean with all patches applied, right? I haven't got that far, first
and second patches are ok by now, I'm failing at patch 3, checking if
setting up the python stuff to honour O= is in a later patch...

[acme@zoo linux]$ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf ; make -C tools/perf O=/tmp/build/perf build-test
make: Entering directory '/home/git/linux/tools/perf'
Testing Makefile
- make_no_ui: cd . && make -f Makefile DESTDIR=/tmp/tmp.RYVWn1yMBU NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
- make_tags: cd . && make -f Makefile DESTDIR=/tmp/tmp.iNjVFs9Eje tags - make_python_perf_so: cd . && make -f Makefile DESTDIR=/tmp/tmp.mvHDSUV1pl python/perf.so
cd . && make -f Makefile DESTDIR=/tmp/tmp.mvHDSUV1pl python/perf.so
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 ]

make[4]: Nothing to be done for 'python/perf.so'.
test: test -f /tmp/build/perf/python/perf.so
tests/make:272: recipe for target 'make_python_perf_so' failed
make[2]: *** [make_python_perf_so] Error 1
tests/make:7: recipe for target 'all' failed
make[1]: *** [all] Error 2
Makefile:81: recipe for target 'build-test' failed
make: *** [build-test] Error 2
make: Leaving directory '/home/git/linux/tools/perf'
[acme@zoo linux]$ find . -name "*.so"
./tools/perf/python_ext_build/lib/perf.so
./tools/perf/python/perf.so
[acme@zoo linux]$

I.e. the test -f follows O=, but the process to generate python/perf.so
doesn't and ends up pollutting the source tree.

- Arnaldo