From: Gregory Bell <grb...@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 <grb...@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 -- _______________________________________________ kernel mailing list -- kernel@lists.fedoraproject.org To unsubscribe send an email to kernel-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/kernel@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue