From: Gregory Bell grbell@redhat.com
samples/bpf: fix build
Moving bootstrap bpftool build into a function then pass bootstrap bpftool to samples/bpf Makefile instead of rebuilding during the samples/bpf make process. If bpftool is not already built then build right before samples/bpf build and pass to samples/bpf. Always pass vmlinux.h to samples/bpf by setting RPM_VMLINUX_H variable depending on current build. If the kernel is built with debuginfo it is located at RPM_BUILD_ROOT/DevelDir/vmlinux.h. In the case of tools only build it is at DevelDir/vmlinux.h
Signed-off-by: Gregory Bell grbell@redhat.com
diff --git a/redhat/kernel.spec.template b/redhat/kernel.spec.template index blahblah..blahblah 100644 --- a/redhat/kernel.spec.template +++ b/redhat/kernel.spec.template @@ -2185,6 +2185,13 @@ InitBuildVars() { fi }
+#Build bootstrap bpftool +BuildBpftool(){ + export BPFBOOTSTRAP_CFLAGS=$(echo "%{__global_compiler_flags}" | sed -r "s/-specs=[^\ ]+/redhat-annobin-cc1//") + export BPFBOOTSTRAP_LDFLAGS=$(echo "%{__global_ldflags}" | sed -r "s/-specs=[^\ ]+/redhat-annobin-cc1//") + CFLAGS="" LDFLAGS="" make EXTRA_CFLAGS="${BPFBOOTSTRAP_CFLAGS}" EXTRA_CXXFLAGS="${BPFBOOTSTRAP_CFLAGS}" EXTRA_LDFLAGS="${BPFBOOTSTRAP_LDFLAGS}" %{?make_opts} %{?clang_make_opts} V=1 -C tools/bpf/bpftool bootstrap +} + BuildKernel() { %{log_msg "BuildKernel for $4"} MakeTarget=$1 @@ -2912,10 +2919,7 @@ BuildKernel() { if [ "$Variant" != "zfcpdump" ]; then %{log_msg "Build the bootstrap bpftool to generate vmlinux.h"} # Build the bootstrap bpftool to generate vmlinux.h - export BPFBOOTSTRAP_CFLAGS=$(echo "%{__global_compiler_flags}" | sed -r "s/-specs=[^\ ]+/redhat-annobin-cc1//") - export BPFBOOTSTRAP_LDFLAGS=$(echo "%{__global_ldflags}" | sed -r "s/-specs=[^\ ]+/redhat-annobin-cc1//") - CFLAGS="" LDFLAGS="" make EXTRA_CFLAGS="${BPFBOOTSTRAP_CFLAGS}" EXTRA_CXXFLAGS="${BPFBOOTSTRAP_CFLAGS}" EXTRA_LDFLAGS="${BPFBOOTSTRAP_LDFLAGS}" %{?make_opts} %{?clang_make_opts} V=1 -C tools/bpf/bpftool bootstrap - + BuildBpftool tools/bpf/bpftool/bootstrap/bpftool btf dump file vmlinux format c > $RPM_BUILD_ROOT/$DevelDir/vmlinux.h fi %endif @@ -3152,7 +3156,10 @@ pushd tools/tracing/rtla popd %endif
-if [ -f $DevelDir/vmlinux.h ]; then +#set RPM_VMLINUX_H +if [ -f $RPM_BUILD_ROOT/$DevelDir/vmlinux.h ]; then + RPM_VMLINUX_H=$RPM_BUILD_ROOT/$DevelDir/vmlinux.h +elif [ -f $DevelDir/vmlinux.h ]; then RPM_VMLINUX_H=$DevelDir/vmlinux.h fi echo "${RPM_VMLINUX_H}" > ../vmlinux_h_path @@ -3173,8 +3180,13 @@ if [ ! -f include/generated/autoconf.h ]; then %{make} %{?_smp_mflags} modules_prepare fi
+# Build BPFtool for samples/bpf +if [ ! -f tools/bpf/bpftool/bootstrap/bpftool ]; then + BuildBpftool +fi + %{log_msg "build samples/bpf"} -%{make} %{?_smp_mflags} ARCH=$Arch V=1 M=samples/bpf/ VMLINUX_H="${RPM_VMLINUX_H}" || true +%{make} %{?_smp_mflags} ARCH=$Arch BPFTOOL=$(pwd)/tools/bpf/bpftool/bootstrap/bpftool V=1 M=samples/bpf/ VMLINUX_H="${RPM_VMLINUX_H}" || true
pushd tools/testing/selftests # We need to install here because we need to call make with ARCH set which
-- https://gitlab.com/cki-project/kernel-ark/-/merge_requests/3812
From: Viktor Malik on gitlab.com https://gitlab.com/cki-project/kernel-ark/-/merge_requests/3812#note_2432910...
@jstancek this replaces !3738, could you please have a look?
From: Jan Stancek on gitlab.com https://gitlab.com/cki-project/kernel-ark/-/merge_requests/3812#note_2433091...
Will do.
kernel@lists.fedoraproject.org