Re: linux-next: build failure after merge of the perf tree

Arnaldo Carvalho de Melo
2024-04-12T15:22:11Z

On Tue, Apr 02, 2024 at 09:41:16AM +1100, Stephen Rothwell wrote:
> Hi all,
>
> After merging the perf tree, today's linux-next build (native i.e. ppc64le
> perf) failed like this:
>
> make[3]: *** No rule to make target '/home/sfr/next/next/tools/include/uapi/linux/stat.h', needed by '/home/sfr/next/perf/libbpf/staticobjs/libbpf.o'. Stop.

How is this built? Using O=/home/sfr/next/perf?

> Maybe caused by commit
>
> f122b3d6d179 ("perf beauty: Introduce scrape script for the 'statx' syscall 'mask' argument")
>
> or
>
> a672af9139a8 ("tools headers: Remove almost unused copy of uapi/stat.h, add few conditional defines")
>
> or a combination of them?
>
> This is an incremental build but doing 'make -C tools/perf clean' and then
> rebuilding works, so maybe there is a dependency missing?

So I'm trying to revisit this, I did:

⬢[acme@toolbox perf-tools-next]$ rm -rf /tmp/build/$(basename $PWD)/ ; mkdir -p /tmp/build/$(basename $PWD)/
⬢[acme@toolbox perf-tools-next]$ alias m='rm -rf ~/libexec/perf-core/ ; make -k CORESIGHT=1 O=/tmp/build/$(basename $PWD)/ -C tools/perf install-bin && perf test python'
⬢[acme@toolbox perf-tools-next]$ git remote update torvalds
Fetching torvalds
⬢[acme@toolbox perf-tools-next]$ m
<SNIP>
LD /tmp/build/perf-tools-next/perf-in.o
CC /tmp/build/perf-tools-next/pmu-events/pmu-events.o
LD /tmp/build/perf-tools-next/pmu-events/pmu-events-in.o
LINK /tmp/build/perf-tools-next/perf
INSTALL binaries
INSTALL tests
INSTALL libperf-jvmti.so
INSTALL libexec
INSTALL perf-archive
INSTALL perf-iostat
INSTALL strace/groups
INSTALL perl-scripts
INSTALL python-scripts
INSTALL dlfilters
INSTALL perf_completion-script
INSTALL perf-tip
make: Leaving directory '/home/acme/git/perf-tools-next/tools/perf'
17: 'import perf' in python : Ok
⬢[acme@toolbox perf-tools-next]$

Then left this there and merged perf-tools-next:

⬢[acme@toolbox perf-tools-next]$ git merge perf-tools-next
Auto-merging MAINTAINERS
Merge made by the 'ort' strategy.
MAINTAINERS | 1 +
tools/include/uapi/asm-generic/fcntl.h | 221 -----------
tools/include/uapi/linux/openat2.h | 43 ---
tools/lib/perf/cpumap.c | 33 +-
tools/lib/perf/include/perf/cpumap.h | 16 +
tools/lib/perf/libperf.map | 4 +
<SNIP>
tools/perf/util/vdso.c | 48 +--
186 files changed, 7217 insertions(+), 3829 deletions(-)
delete mode 100644 tools/include/uapi/asm-generic/fcntl.h
delete mode 100644 tools/include/uapi/linux/openat2.h
rename tools/{ => perf/trace/beauty}/arch/x86/include/asm/irq_vectors.h (100%)
rename tools/{ => perf/trace/beauty}/arch/x86/include/uapi/asm/prctl.h (100%)
create mode 100755 tools/perf/trace/beauty/clone.sh
create mode 100644 tools/perf/trace/beauty/fs_at_flags.c
create mode 100755 tools/perf/trace/beauty/fs_at_flags.sh
rename tools/{ => perf/trace/beauty}/include/uapi/linux/fcntl.h (100%)
rename tools/{ => perf/trace/beauty}/include/uapi/linux/fs.h (100%)
rename tools/{ => perf/trace/beauty}/include/uapi/linux/mount.h (100%)
rename tools/{ => perf/trace/beauty}/include/uapi/linux/prctl.h (100%)
rename tools/{ => perf/trace/beauty}/include/uapi/linux/sched.h (100%)
rename tools/{ => perf/trace/beauty}/include/uapi/linux/stat.h (100%)
rename tools/{ => perf/trace/beauty}/include/uapi/linux/usbdevice_fs.h (100%)
rename tools/{ => perf/trace/beauty}/include/uapi/linux/vhost.h (100%)
rename tools/{ => perf/trace/beauty}/include/uapi/sound/asound.h (100%)
create mode 100755 tools/perf/trace/beauty/statx_mask.sh
create mode 100644 tools/perf/ui/browsers/annotate-data.c
create mode 100644 tools/perf/util/disasm.c
create mode 100644 tools/perf/util/disasm.h
⬢[acme@toolbox perf-tools-next]$

And:

⬢[acme@toolbox perf-tools-next]$ m
rm: cannot remove '/home/acme/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/__pycache__/Core.cpython-312.pyc': Permission denied
make: Entering directory '/home/acme/git/perf-tools-next/tools/perf'
BUILD: Doing 'make -j28' parallel build
Warning: Kernel ABI header differences:
<SNIP>
Auto-detecting system features:
... dwarf: [ on ]
... dwarf_getlocations: [ on ]
... glibc: [ on ]
... libbfd: [ on ]
... libbfd-buildid: [ on ]
... libcap: [ on ]
... libelf: [ on ]
... libnuma: [ on ]
... numa_num_possible_cpus: [ on ]
... libperl: [ on ]
... libpython: [ on ]
... libcrypto: [ on ]
... libunwind: [ on ]
... libdw-dwarf-unwind: [ on ]
... libcapstone: [ on ]
... zlib: [ on ]
... lzma: [ on ]
... get_cpuid: [ on ]
... bpf: [ on ]
... libaio: [ on ]
... libzstd: [ on ]

GEN /tmp/build/perf-tools-next/common-cmds.h
LINK /tmp/build/perf-tools-next/libperf-jvmti.so
INSTALL /tmp/build/perf-tools-next/libsubcmd/include/subcmd/run-command.h
<SNIP>
INSTALL libbpf_headers
LD /tmp/build/perf-tools-next/libperf/libperf-in.o
CLANG /tmp/build/perf-tools-next/util/bpf_skel/.tmp/augmented_raw_syscalls.bpf.o
AR /tmp/build/perf-tools-next/libperf/libperf.a
GENSKEL /tmp/build/perf-tools-next/util/bpf_skel/augmented_raw_syscalls.skel.h
GEN /tmp/build/perf-tools-next/python/perf.cpython-312-x86_64-linux-gnu.so
GEN /tmp/build/perf-tools-next/pmu-events/pmu-events.c
CC /tmp/build/perf-tools-next/builtin-bench.o
CC /tmp/build/perf-tools-next/builtin-annotate.o
<SNIP>
CC /tmp/build/perf-tools-next/util/bpf-event.o
CC /tmp/build/perf-tools-next/util/bpf-utils.o
CC /tmp/build/perf-tools-next/util/pfm.o
LD /tmp/build/perf-tools-next/util/scripting-engines/perf-in.o
LD /tmp/build/perf-tools-next/util/perf-in.o
LD /tmp/build/perf-tools-next/perf-in.o
CC /tmp/build/perf-tools-next/pmu-events/pmu-events.o
LD /tmp/build/perf-tools-next/pmu-events/pmu-events-in.o
LINK /tmp/build/perf-tools-next/perf
INSTALL binaries
INSTALL tests
INSTALL libperf-jvmti.so
INSTALL libexec
INSTALL perf-archive
INSTALL perf-iostat
INSTALL strace/groups
INSTALL perl-scripts
INSTALL python-scripts
INSTALL dlfilters
INSTALL perf_completion-script
INSTALL perf-tip
make: Leaving directory '/home/acme/git/perf-tools-next/tools/perf'
17: 'import perf' in python : Ok
⬢[acme@toolbox perf-tools-next]$

⬢[acme@toolbox perf-tools-next]$ ls -la tools/include/uapi/linux/stat.h
ls: cannot access 'tools/include/uapi/linux/stat.h': No such file or directory
⬢[acme@toolbox perf-tools-next]$

I'm not being able to reproduce that problem, can you see where am I
doing some mistake in the above steps?

Thanks,

- Arnaldo