diff mbox series

perf: Fix headers related build race condition

Message ID 20251008002729.1850430-1-raj.khem@gmail.com
State New
Headers show
Series perf: Fix headers related build race condition | expand

Commit Message

Khem Raj Oct. 8, 2025, 12:27 a.m. UTC
libperf specifies paths to includes in its output
directory if they exist, however install_headers target
is run in parallel to source files being built for libperf
and can race with objects being built for libperf.

This patch ensures that all headers are built/installed before
they are used.

Specifying additional include paths via EXTRA_CFLAGS is of
no consequence anymore after [1] because it now is appended to
CFLAGS, so if we are trying to do include path oderining via
EXTRA_CFLAGS it will have no effect if those paths already are
in compiler commandline

[1] https://github.com/torvalds/linux/commit/f5b07010c13c77541e8ade167d05bef3b8a63739

Signed-off-by: Khem Raj <raj.khem@gmail.com>

s
---
 meta/recipes-kernel/perf/perf.bb | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
diff mbox series

Patch

diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
index 3b9e52fdb84..f071685a4be 100644
--- a/meta/recipes-kernel/perf/perf.bb
+++ b/meta/recipes-kernel/perf/perf.bb
@@ -105,7 +105,7 @@  EXTRA_OEMAKE = '\
     LDSHARED="${CC} -shared" \
     AR="${AR}" \
     LD="${LD}" \
-    EXTRA_CFLAGS="-ldw -I${S} -I${S}/libperf/include -I${S}/tools/lib/perf/include" \
+    EXTRA_CFLAGS="-ldw -I${S}" \
     YFLAGS='-y --file-prefix-map=${WORKDIR}=${TARGET_DBGSRC_DIR}' \
     EXTRA_LDFLAGS="${PERF_EXTRA_LDFLAGS}" \
     perfexecdir=${libexecdir} \
@@ -173,8 +173,8 @@  do_compile() {
             sed -i -e 's|\$(libdir)/traceevent/plugins|\$(libdir)/traceevent_${KERNEL_VERSION}/plugins|g' ${S}/tools/perf/Makefile.config
 	# There are two copies of internal headers such as:
 	# libperf/include/internal/xyarray.h and tools/lib/perf/include/internal/xyarray.h
-	# For reproducibile binaries, we need to find one copy, hence force libperf to be created first
-	oe_runmake ${B}/libperf/libperf.a V=1
+	# For reproducibile binaries, we need to find one copy, so built the headers target first
+	oe_runmake -C ${S}/tools/lib/perf DESTDIR=${B}/libperf prefix= install_headers V=1
 	oe_runmake all V=1
 }