commit 32e1e56a79d1de14e947b983121828a73fbc65b7 Author: MSVSphere Packaging Team Date: Fri Sep 22 20:53:14 2023 +0300 import xdp-tools-1.4.0-1.el9 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d2fe3c3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/xdp-tools-1.4.0.tar.gz diff --git a/.xdp-tools.metadata b/.xdp-tools.metadata new file mode 100644 index 0000000..96ed339 --- /dev/null +++ b/.xdp-tools.metadata @@ -0,0 +1 @@ +52041558a7e1060d255c9d8a023bdd586c20973e SOURCES/xdp-tools-1.4.0.tar.gz diff --git a/SOURCES/xdp-tools-1.4.0-configure-Don-t-fail-on-missing-bpftool.patch b/SOURCES/xdp-tools-1.4.0-configure-Don-t-fail-on-missing-bpftool.patch new file mode 100644 index 0000000..b73d747 --- /dev/null +++ b/SOURCES/xdp-tools-1.4.0-configure-Don-t-fail-on-missing-bpftool.patch @@ -0,0 +1,117 @@ +From 7760d84998f1fd042b3842f598296efe264fc385 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= +Date: Thu, 9 Feb 2023 17:57:41 +0100 +Subject: [PATCH] configure: Don't fail on missing bpftool +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Instead of bailing out of configure if bpftool is not found, just disable +compilation of the tools that require it (i.e., xdp-bench, xdp-monitor and +xdp-trafficgen which use BPF skeletons). + +Signed-off-by: Toke Høiland-Jørgensen +--- + Makefile | 8 +++++++- + configure | 9 +++++---- + lib/testing/test-tool.c | 4 ++++ + lib/util/util.mk | 13 +++++++++++-- + 4 files changed, 27 insertions(+), 7 deletions(-) + +diff --git a/Makefile b/Makefile +index 5c22e854db8d..d5dc21fb076c 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,8 +14,14 @@ MAKEFLAGS += --no-print-directory + endif + + include version.mk ++include config.mk ++ ++UTILS := xdp-filter xdp-loader xdp-dump ++ ++ifneq ($(BPFTOOL),) ++UTILS += xdp-bench xdp-monitor xdp-trafficgen ++endif + +-UTILS := xdp-filter xdp-loader xdp-dump xdp-bench xdp-monitor xdp-trafficgen + SUBDIRS := lib $(UTILS) + .PHONY: check_submodule help clobber distclean clean install test libxdp $(SUBDIRS) + +diff --git a/configure b/configure +index c32790cc361d..4bdb66b8b761 100755 +--- a/configure ++++ b/configure +@@ -71,7 +71,7 @@ check_toolchain() + CLANG=$(find_tool clang "$CLANG") + LLC=$(find_tool llc "$LLC") + +- for TOOL in $PKG_CONFIG $CC $LD $OBJCOPY $CLANG $LLC $M4 $BPFTOOL; do ++ for TOOL in $PKG_CONFIG $CC $LD $OBJCOPY $CLANG $LLC $M4; do + if [ ! $(command -v ${TOOL} 2>/dev/null) ]; then + echo "*** ERROR: Cannot find tool ${TOOL}" ; + exit 1; +@@ -108,12 +108,12 @@ check_toolchain() + exit 1 + fi + +- if $BPFTOOL gen help 2>&1 | grep 'gen skeleton.*name' > /dev/null; then ++ if command -v $BPFTOOL &>/dev/null && $BPFTOOL gen help 2>&1 | grep 'gen skeleton.*name' > /dev/null; then + bpftool_version=$($BPFTOOL version | head -n 1) + echo "using $bpftool_version" + else +- echo "bpftool doesn't support skeleton generation" +- exit 1 ++ echo "bpftool not found or doesn't support skeleton generation; not building all tools" ++ BPFTOOL= + fi + + if [ -z "$ARCH_INCLUDES" ]; then +@@ -134,6 +134,7 @@ check_toolchain() + echo "EMACS:=${EMACS}" >>$CONFIG + echo "ARCH_INCLUDES:=$ARCH_INCLUDES" >> $CONFIG + echo "BPFTOOL:=${BPFTOOL}" >> $CONFIG ++ [ -n "$BPFTOOL" ] && echo "HAVE_FEATURES+=BPFTOOL" >>"$CONFIG" + } + + check_zlib() +diff --git a/lib/testing/test-tool.c b/lib/testing/test-tool.c +index 3dd5270af95f..95f76cb36573 100644 +--- a/lib/testing/test-tool.c ++++ b/lib/testing/test-tool.c +@@ -205,10 +205,14 @@ int do_probe(const void *cfg, __unused const char *pin_root_path) + + switch (opt->action) { + case PROBE_CPUMAP_PROGRAM: ++#ifdef HAVE_BPFTOOL + res = sample_probe_cpumap_compat(); ++#endif + break; + case PROBE_XDP_LOAD_BYTES: ++#ifdef HAVE_BPFTOOL + res = sample_probe_xdp_load_bytes(); ++#endif + break; + default: + return EXIT_FAILURE; +diff --git a/lib/util/util.mk b/lib/util/util.mk +index 2b6a2e08af3b..6c9ebaf00f77 100644 +--- a/lib/util/util.mk ++++ b/lib/util/util.mk +@@ -1,2 +1,11 @@ +-UTIL_OBJS := params.o logging.o util.o stats.o xpcapng.o xdp_sample.o +-UTIL_BPF_OBJS := xdp_sample.bpf.o xdp_load_bytes.bpf.o ++LIB_DIR ?= .. ++include $(LIB_DIR)/defines.mk ++ ++UTIL_OBJS := params.o logging.o util.o stats.o xpcapng.o ++UTIL_BPF_OBJS := ++ ++ifneq ($(BPFTOOL),) ++UTIL_OBJS += xdp_sample.o ++UTIL_BPF_OBJS += xdp_sample.bpf.o xdp_load_bytes.bpf.o ++endif ++ +-- +2.41.0 + diff --git a/SPECS/xdp-tools.spec b/SPECS/xdp-tools.spec new file mode 100644 index 0000000..97fd1cb --- /dev/null +++ b/SPECS/xdp-tools.spec @@ -0,0 +1,197 @@ +Name: xdp-tools +Version: 1.4.0 +Release: 1%{?dist} +Summary: Utilities and example programs for use with XDP +%global _soversion 1.4.0 + +License: GPLv2 +URL: https://github.com/xdp-project/%{name} +Source0: https://github.com/xdp-project/%{name}/releases/download/v%{version}/xdp-tools-%{version}.tar.gz +Patch0: xdp-tools-1.4.0-configure-Don-t-fail-on-missing-bpftool.patch + +BuildRequires: libbpf-devel +BuildRequires: elfutils-libelf-devel +BuildRequires: zlib-devel +BuildRequires: libpcap-devel +BuildRequires: clang >= 10.0.0 +BuildRequires: llvm >= 10.0.0 +BuildRequires: make +BuildRequires: gcc +BuildRequires: pkgconfig +BuildRequires: m4 +BuildRequires: emacs-nox +BuildRequires: wireshark-cli + +%ifnarch i686 +BuildRequires: bpftool +%endif + +# Always keep xdp-tools and libxdp packages in sync +Requires: libxdp = %{version}-%{release} + +# find-debuginfo produces empty debugsourcefiles.list +# disable the debug package to avoid rpmbuild error'ing out because of this +%global debug_package %{nil} +%global _hardened_build 1 + +%description +Utilities and example programs for use with XDP + +%package -n libxdp +Summary: XDP helper library +Requires: kernel-headers + +%package -n libxdp-devel +Summary: Development files for libxdp +Requires: kernel-headers +Requires: libxdp = %{version}-%{release} + +%package -n libxdp-static +Summary: Static library files for libxdp +Requires: kernel-headers +Requires: libxdp-devel = %{version}-%{release} + +%description -n libxdp +The libxdp package contains the libxdp library for managing XDP programs, +used by the %{name} package + +%description -n libxdp-devel +The libxdp-devel package contains headers used for building XDP programs using +libxdp. + +%description -n libxdp-static +The libxdp-static package contains the static library version of libxdp. + +%prep +%autosetup -p1 -n %{name}-%{version} + + +%build +export CFLAGS='%{build_cflags}' +export LDFLAGS='%{build_ldflags}' +export LIBDIR='%{_libdir}' +export RUNDIR='%{_rundir}' +export CLANG=%{_bindir}/clang +export LLC=%{_bindir}/llc +export PRODUCTION=1 +export DYNAMIC_LIBXDP=1 +export FORCE_SYSTEM_LIBBPF=1 +export FORCE_EMACS=1 +./configure +make %{?_smp_mflags} V=1 + +%install +export DESTDIR='%{buildroot}' +export SBINDIR='%{_sbindir}' +export LIBDIR='%{_libdir}' +export RUNDIR='%{_rundir}' +export MANDIR='%{_mandir}' +export DATADIR='%{_datadir}' +export HDRDIR='%{_includedir}/xdp' +make install V=1 + +%files +%{_sbindir}/xdp-filter +%{_sbindir}/xdp-loader +%{_sbindir}/xdpdump +%ifnarch i686 +%{_sbindir}/xdp-bench +%{_sbindir}/xdp-monitor +%{_sbindir}/xdp-trafficgen +%endif +%{_mandir}/man8/* +%{_libdir}/bpf/xdpfilt_*.o +%{_libdir}/bpf/xdpdump_*.o +%{_datadir}/xdp-tools/ +%license LICENSES/* + +%files -n libxdp +%{_libdir}/libxdp.so.1 +%{_libdir}/libxdp.so.%{_soversion} +%{_libdir}/bpf/xdp-dispatcher.o +%{_libdir}/bpf/xsk_def_xdp_prog*.o +%{_mandir}/man3/* +%license LICENSES/* + +%files -n libxdp-static +%{_libdir}/libxdp.a + +%files -n libxdp-devel +%{_includedir}/xdp/*.h +%{_libdir}/libxdp.so +%{_libdir}/pkgconfig/libxdp.pc + +%changelog +* Thu Jul 6 2023 Toke Høiland-Jørgensen 1.4.0-1 +- Upstream version bump + +* Thu Feb 23 2023 Toke Høiland-Jørgensen 1.3.1-1 +- Upstream version bump + +* Thu Feb 9 2023 Toke Høiland-Jørgensen 1.3.0-2 +- Restore building on i686, by patching the build to exclude the bits that require bpftool + +* Tue Feb 7 2023 Toke Høiland-Jørgensen 1.3.0-1 +- Upstream version bump +- Don't build on i686 (because of missing bpftool) + +* Thu Feb 2 2023 Toke Høiland-Jørgensen 1.2.9-1 +- Upstream version bump + +* Tue Aug 16 2022 Toke Høiland-Jørgensen 1.2.6-1 +- Upstream version bump + +* Thu Feb 17 2022 Toke Høiland-Jørgensen 1.2.3-1 +- Upstream version bump + +* Mon Jan 31 2022 Toke Høiland-Jørgensen 1.2.2-1 +- Upstream version bump + +* Thu Jan 13 2022 Toke Høiland-Jørgensen 1.2.1-1 +- Upstream version bump + +* Thu Aug 19 2021 Toke Høiland-Jørgensen 1.2.0-1 +- Upstream version bump + +* Tue Aug 10 2021 Mohan Boddu - 1.1.1-3 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Fri Apr 16 2021 Mohan Boddu - 1.1.1-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Wed Feb 3 2021 Toke Høiland-Jørgensen 1.1.1-1 +- Upstream version bump + +* Wed Jan 27 2021 Fedora Release Engineering - 1.1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jan 4 2021 Toke Høiland-Jørgensen 1.1.0-1 +- Upstream version bump + +* Thu Aug 20 2020 Toke Høiland-Jørgensen 1.0.1-1 +- Upstream version bump + +* Tue Aug 18 2020 Toke Høiland-Jørgensen 1.0.0-1 +- Upstream version bump + +* Wed Jul 29 2020 Fedora Release Engineering - 1.0.0~beta3-0.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 15 2020 Eelco Chaudron 1.0.0~beta3-0.1 +- Upstream version bump + +* Fri Jul 10 2020 Toke Høiland-Jørgensen 1.0.0~beta2-0.1 +- Upstream version bump + +* Mon Jun 15 2020 Toke Høiland-Jørgensen 1.0.0~beta1-0.1 +- Upstream version bump + +* Mon Apr 6 2020 Toke Høiland-Jørgensen 0.0.3-1 +- Upstream update, add libxdp sub-packages + +* Thu Nov 21 2019 Toke Høiland-Jørgensen 0.0.2-1 +- Upstream update + +* Fri Nov 8 2019 Toke Høiland-Jørgensen 0.0.1-1 +- Initial release