From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Masahiro Yamada <masahiroy@kernel.org>,
Nicolas Schier <nicolas@fjasle.eu>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
bpf@vger.kernel.org, Nick Desaulniers <ndesaulniers@google.com>,
Andrii Nakryiko <andrii.nakryiko@gmail.com>,
Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH 0/1] Fix perf tools/lib includes
Date: Wed, 16 Nov 2022 12:23:11 -0300 [thread overview]
Message-ID: <Y3UAX3U/cpszMFE7@kernel.org> (raw)
In-Reply-To: <Y3T/fxPOvZgePIEz@kernel.org>
Em Wed, Nov 16, 2022 at 12:19:27PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Tue, Nov 15, 2022 at 11:22:10PM -0800, Ian Rogers escreveu:
> > This patch replaces the last on kernel/git/acme/linux.git branch
> > perf/tools-libs-includes and fixes the race issue by using the prepare
> > dependency. pmu-events.c needs this dependency too, as the header
> > files it includes also include libperf - using perpare as a dependency
> > rather than $(LIBPERF) is more consistent with the rest of the makefile.
> >
> > Ian Rogers (1):
> > perf build: Use tools/lib headers from install path
>
> Testing.
⬢[acme@toolbox perf]$ git log acme/perf/core.. --oneline
0a1e208afdccce71 (HEAD -> perf/tools-libs-includes) perf build: Use tools/lib headers from install path
17ca352f2aff834e perf cpumap: Tidy libperf includes
fd3f518fc1140622 perf thread_map: Reduce exposure of libperf internal API
bd560973c5d3b2a3 perf expr: Tidy hashmap dependency
84bec6f0b31fb2ac perf build: Install libsymbol locally when building
160be157eaba2a37 tool lib symbol: Add Makefile/Build
a6e8caf5db2e1db8 tools lib perf: Add missing install headers
8d1f68bd76a6517c tools lib api: Add missing install headers
ef019df01e207971 perf build: Install libtraceevent locally when building
91009a3a9913f275 perf build: Install libperf locally when building
00314c9bca8faad4 perf build: Install libapi locally when building
911920b06e6be3fa perf build: Install libsubcmd locally when building
630ae80ea1dd2536 tools lib subcmd: Add install target
a6efaa2c89bf35c3 tools lib api: Add install target
⬢[acme@toolbox perf]$
⬢[acme@toolbox perf]$ git show
commit 0a1e208afdccce7193cbe4031dfd255c89c425d6
Author: Ian Rogers <irogers@google.com>
Date: Tue Nov 15 23:22:11 2022 -0800
perf build: Use tools/lib headers from install path
Switch -I from tools/lib to the install path for the tools/lib
libraries. Add the include_headers build targets to prepare target, as
well as pmu-events.c compilation that dependes on libperf.
Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: bpf@vger.kernel.org
Link: http://lore.kernel.org/lkml/20221109184914.1357295-15-irogers@google.com
Link: http://lore.kernel.org/lkml/20221116072211.2837834-2-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index a7f6c0669fae4d24..9cc3c48f32881c8b 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -349,7 +349,6 @@ ifeq ($(DEBUG),0)
endif
endif
-INC_FLAGS += -I$(srctree)/tools/lib/perf/include
INC_FLAGS += -I$(src-perf)/util/include
INC_FLAGS += -I$(src-perf)/arch/$(SRCARCH)/include
INC_FLAGS += -I$(srctree)/tools/include/
@@ -367,7 +366,6 @@ endif
INC_FLAGS += -I$(src-perf)/util
INC_FLAGS += -I$(src-perf)
-INC_FLAGS += -I$(srctree)/tools/lib/
CORE_CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 6c1a2a3ccc38195f..dd096aba4430e3e4 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -305,6 +305,7 @@ LIBTRACEEVENT_INCLUDE = $(LIBTRACEEVENT_DESTDIR)/include
LIBTRACEEVENT = $(LIBTRACEEVENT_OUTPUT)/libtraceevent.a
export LIBTRACEEVENT
LIBTRACEEVENT_DYNAMIC_LIST = $(LIBTRACEEVENT_PLUGINS_OUTPUT)/libtraceevent-dynamic-list
+CFLAGS += -I$(LIBTRACEEVENT_OUTPUT)/include
#
# The static build has no dynsym table, so this does not work for
@@ -322,6 +323,7 @@ LIBAPI_DESTDIR = $(LIBAPI_OUTPUT)
LIBAPI_INCLUDE = $(LIBAPI_DESTDIR)/include
LIBAPI = $(LIBAPI_OUTPUT)/libapi.a
export LIBAPI
+CFLAGS += -I$(LIBAPI_OUTPUT)/include
ifneq ($(OUTPUT),)
LIBBPF_OUTPUT = $(abspath $(OUTPUT))/libbpf
@@ -331,6 +333,7 @@ endif
LIBBPF_DESTDIR = $(LIBBPF_OUTPUT)
LIBBPF_INCLUDE = $(LIBBPF_DESTDIR)/include
LIBBPF = $(LIBBPF_OUTPUT)/libbpf.a
+CFLAGS += -I$(LIBBPF_OUTPUT)/include
ifneq ($(OUTPUT),)
LIBSUBCMD_OUTPUT = $(abspath $(OUTPUT))/libsubcmd
@@ -340,6 +343,7 @@ endif
LIBSUBCMD_DESTDIR = $(LIBSUBCMD_OUTPUT)
LIBSUBCMD_INCLUDE = $(LIBSUBCMD_DESTDIR)/include
LIBSUBCMD = $(LIBSUBCMD_OUTPUT)/libsubcmd.a
+CFLAGS += -I$(LIBSUBCMD_OUTPUT)/include
ifneq ($(OUTPUT),)
LIBSYMBOL_OUTPUT = $(abspath $(OUTPUT))/libsymbol
@@ -349,6 +353,7 @@ endif
LIBSYMBOL_DESTDIR = $(LIBSYMBOL_OUTPUT)
LIBSYMBOL_INCLUDE = $(LIBSYMBOL_DESTDIR)/include
LIBSYMBOL = $(LIBSYMBOL_OUTPUT)/libsymbol.a
+CFLAGS += -I$(LIBSYMBOL_OUTPUT)/include
ifneq ($(OUTPUT),)
LIBPERF_OUTPUT = $(abspath $(OUTPUT))/libperf
@@ -359,6 +364,7 @@ LIBPERF_DESTDIR = $(LIBPERF_OUTPUT)
LIBPERF_INCLUDE = $(LIBPERF_DESTDIR)/include
LIBPERF = $(LIBPERF_OUTPUT)/libperf.a
export LIBPERF
+CFLAGS += -I$(LIBPERF_OUTPUT)/include
# python extension build directories
PYTHON_EXTBUILD := $(OUTPUT)python_ext_build/
@@ -691,7 +697,7 @@ build := -f $(srctree)/tools/build/Makefile.build dir=. obj
$(PERF_IN): prepare FORCE
$(Q)$(MAKE) $(build)=perf
-$(PMU_EVENTS_IN): FORCE
+$(PMU_EVENTS_IN): FORCE prepare
$(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=pmu-events obj=pmu-events
$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN) $(PMU_EVENTS_IN) $(LIBTRACEEVENT_DYNAMIC_LIST)
@@ -774,6 +780,12 @@ prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h archheaders $(drm_ioc
$(rename_flags_array) \
$(arch_errno_name_array) \
$(sync_file_range_arrays) \
+ $(LIBAPI) \
+ $(LIBBPF) \
+ $(LIBPERF) \
+ $(LIBSUBCMD) \
+ $(LIBSYMBOL) \
+ $(LIBTRACEEVENT) \
bpf-skel
$(OUTPUT)%.o: %.c prepare FORCE
⬢[acme@toolbox perf]$ git log --oneline -1 ; time make -C tools/perf build-test
0a1e208afdccce71 (HEAD -> perf/tools-libs-includes) perf build: Use tools/lib headers from install path
make: Entering directory '/var/home/acme/git/perf/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_static: cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 -j32 DESTDIR=/tmp/tmp.YueDE1rSyh
make_with_gtk2: cd . && make GTK2=1 -j32 DESTDIR=/tmp/tmp.YuHTyobvdL
cd . && make GTK2=1 -j32 DESTDIR=/tmp/tmp.YuHTyobvdL
BUILD: Doing 'make -j32' parallel build
HOSTCC fixdep.o
HOSTLD fixdep-in.o
LINK fixdep
Warning: Kernel ABI header at 'tools/arch/arm64/include/uapi/asm/perf_regs.h' differs from latest version at 'arch/arm64/include/uapi/asm/perf_regs.h'
diff -u tools/arch/arm64/include/uapi/asm/perf_regs.h arch/arm64/include/uapi/asm/perf_regs.h
Warning: Kernel ABI header at 'tools/arch/arm64/include/asm/cputype.h' differs from latest version at 'arch/arm64/include/asm/cputype.h'
diff -u tools/arch/arm64/include/asm/cputype.h arch/arm64/include/asm/cputype.h
Warning: Kernel ABI header at 'tools/perf/arch/powerpc/entry/syscalls/syscall.tbl' differs from latest version at 'arch/powerpc/kernel/syscalls/syscall.tbl'
diff -u tools/perf/arch/powerpc/entry/syscalls/syscall.tbl arch/powerpc/kernel/syscalls/syscall.tbl
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 ]
... zlib: [ on ]
... lzma: [ on ]
... get_cpuid: [ on ]
... bpf: [ on ]
... libaio: [ on ]
... libzstd: [ on ]
GEN common-cmds.h
CC perf-read-vdso32
CC dlfilters/dlfilter-test-api-v0.o
CC dlfilters/dlfilter-show-cycles.o
CC jvmti/libjvmti.o
CC jvmti/jvmti_agent.o
CC jvmti/libstring.o
CC jvmti/libctype.o
CC ui/gtk/browser.o
CC ui/gtk/hists.o
CC ui/gtk/setup.o
CC ui/gtk/util.o
CC ui/gtk/helpline.o
CC ui/gtk/progress.o
CC ui/gtk/annotate.o
LINK dlfilters/dlfilter-show-cycles.so
CC ui/gtk/zalloc.o
LINK dlfilters/dlfilter-test-api-v0.so
INSTALL headers
CC /var/home/acme/git/perf/tools/perf/libsubcmd/exec-cmd.o
CC /var/home/acme/git/perf/tools/perf/libsubcmd/help.o
CC /var/home/acme/git/perf/tools/perf/libsubcmd/pager.o
CC /var/home/acme/git/perf/tools/perf/libsubcmd/parse-options.o
CC /var/home/acme/git/perf/tools/perf/libsubcmd/run-command.o
CC /var/home/acme/git/perf/tools/perf/libsubcmd/sigchain.o
CC /var/home/acme/git/perf/tools/perf/libsubcmd/subcmd-config.o
LD jvmti/jvmti-in.o
INSTALL headers
In file included from ui/gtk/hists.c:2:
/var/home/acme/git/perf/tools/perf/util/include/../evlist.h:9:10: fatal error: api/fd/array.h: No such file or directory
9 | #include <api/fd/array.h>
| ^~~~~~~~~~~~~~~~
compilation terminated.
make[6]: *** [/var/home/acme/git/perf/tools/build/Makefile.build:97: ui/gtk/hists.o] Error 1
make[6]: *** Waiting for unfinished jobs....
In file included from ui/gtk/browser.c:2:
/var/home/acme/git/perf/tools/perf/util/include/../evsel.h:10:10: fatal error: internal/evsel.h: No such file or directory
10 | #include <internal/evsel.h>
| ^~~~~~~~~~~~~~~~~~
compilation terminated.
make[6]: *** [/var/home/acme/git/perf/tools/build/Makefile.build:97: ui/gtk/browser.o] Error 1
make -f /var/home/acme/git/perf/tools/build/Makefile.build dir=. obj=libsymbol V=1
CC /var/home/acme/git/perf/tools/perf/libtraceevent/event-parse.o
CC /var/home/acme/git/perf/tools/perf/libtraceevent_plugins/plugin_jbd2.o
CC /var/home/acme/git/perf/tools/perf/libtraceevent_plugins/plugin_hrtimer.o
INSTALL headers
CC /var/home/acme/git/perf/tools/perf/libtraceevent_plugins/plugin_kmem.o
CC /var/home/acme/git/perf/tools/perf/libtraceevent_plugins/plugin_kvm.o
CC /var/home/acme/git/perf/tools/perf/libtraceevent_plugins/plugin_mac80211.o
CC /var/home/acme/git/perf/tools/perf/libperf/core.o
CC /var/home/acme/git/perf/tools/perf/libperf/cpumap.o
CC /var/home/acme/git/perf/tools/perf/libperf/threadmap.o
INSTALL headers
gcc -Wp,-MD,/var/home/acme/git/perf/tools/perf/libsymbol/.kallsyms.o.d -Wp,-MT,/var/home/acme/git/perf/tools/perf/libsymbol/kallsyms.o -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow -ggdb3 -Wall -Wextra -std=gnu11 -U_FORTIFY_SOURCE -fPIC -Werror -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/var/home/acme/git/perf/tools/lib -I/var/home/acme/git/perf/tools/include -D"BUILD_STR(s)=#s" -c -o /var/home/acme/git/perf/tools/perf/libsymbol/kallsyms.o kallsyms.c
CC /var/home/acme/git/perf/tools/perf/libperf/evsel.o
LINK libperf-jvmti.so
CC /var/home/acme/git/perf/tools/perf/libperf/evlist.o
CC /var/home/acme/git/perf/tools/perf/libperf/mmap.o
MKDIR /var/home/acme/git/perf/tools/perf/libapi/fd/
LD /var/home/acme/git/perf/tools/perf/libsubcmd/libsubcmd-in.o
PERF_VERSION = 6.1.rc5.g0a1e208afdcc
CC /var/home/acme/git/perf/tools/perf/libperf/zalloc.o
LD /var/home/acme/git/perf/tools/perf/libtraceevent_plugins/plugin_jbd2-in.o
CC /var/home/acme/git/perf/tools/perf/libperf/xyarray.o
LD /var/home/acme/git/perf/tools/perf/libtraceevent_plugins/plugin_hrtimer-in.o
CC /var/home/acme/git/perf/tools/perf/libapi/fd/array.o
GEN /var/home/acme/git/perf/tools/perf/libbpf/bpf_helper_defs.h
LD /var/home/acme/git/perf/tools/perf/libtraceevent_plugins/plugin_kmem-in.o
LD /var/home/acme/git/perf/tools/perf/libtraceevent_plugins/plugin_mac80211-in.o
LD /var/home/acme/git/perf/tools/perf/libtraceevent_plugins/plugin_kvm-in.o
INSTALL /var/home/acme/git/perf/tools/perf/libbpf/include/bpf/bpf.h
next prev parent reply other threads:[~2022-11-16 15:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-16 7:22 [PATCH 0/1] Fix perf tools/lib includes Ian Rogers
2022-11-16 7:22 ` [PATCH 1/1] perf build: Use tools/lib headers from install path Ian Rogers
2022-11-16 15:19 ` [PATCH 0/1] Fix perf tools/lib includes Arnaldo Carvalho de Melo
2022-11-16 15:23 ` Arnaldo Carvalho de Melo [this message]
2022-11-16 16:45 ` Ian Rogers
2022-11-16 16:47 ` Ian Rogers
2022-11-16 17:21 ` Arnaldo Carvalho de Melo
2022-11-16 17:41 ` Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y3UAX3U/cpszMFE7@kernel.org \
--to=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=andrii.nakryiko@gmail.com \
--cc=bpf@vger.kernel.org \
--cc=eranian@google.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=masahiroy@kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=ndesaulniers@google.com \
--cc=nicolas@fjasle.eu \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.