diff --git a/dpdk.changes b/dpdk.changes index 44a71b5..786d41a 100644 --- a/dpdk.changes +++ b/dpdk.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Wed Jul 24 06:25:38 UTC 2024 - Jiri Slaby + +- use %autopatch even for older distros, -M *is* supported there + +------------------------------------------------------------------- +Tue Jul 16 08:47:23 UTC 2024 - Jiri Slaby + +- add kni-fix-build-with-Linux-6.10.patch to fix build against + kernel 6.8. +- update kni-fix-build-with-Linux-6.8.patch -- it is upstream now. + ------------------------------------------------------------------- Thu Jul 4 20:27:14 UTC 2024 - Bernhard Wiedemann diff --git a/dpdk.spec b/dpdk.spec index 117b733..c940ded 100644 --- a/dpdk.spec +++ b/dpdk.spec @@ -60,6 +60,7 @@ Patch1: 0002-SLE15-SP3-compatibility-patch-for-kni.patch Patch2: 0001-kni-fix-build-with-Linux-6.3.patch Patch3: 0001-kni-fix-build-with-Linux-6.5.patch Patch4: kni-fix-build-with-Linux-6.8.patch +Patch100: kni-fix-build-with-Linux-6.10.patch BuildRequires: binutils BuildRequires: doxygen BuildRequires: fdupes @@ -178,7 +179,13 @@ The DPDK Kernel NIC Interface (KNI) allows userspace applications access to the %prep # can't use %%{name} because of dpdk-thunderx -%autosetup -p1 -n dpdk-stable-%{version} +%setup -n dpdk-stable-%{version} +%if 0%{?suse_version} > 1600 +%autopatch -p1 +%else +# grr, no fs.copyfile() in the old meson in SLE (but it has old enough kernel). +%autopatch -p1 -M 99 +%endif # Skip not supported examples sed -i "/performance-thread/d" examples/meson.build diff --git a/kni-fix-build-with-Linux-6.10.patch b/kni-fix-build-with-Linux-6.10.patch new file mode 100644 index 0000000..232a818 --- /dev/null +++ b/kni-fix-build-with-Linux-6.10.patch @@ -0,0 +1,68 @@ +From: Jiri Slaby +Date: Tue, 16 Jul 2024 10:40:26 +0200 +Subject: kni: fix build with Linux 6.10 +Patch-mainline: submitted to dev@dpdk.org, <20240716084414.115852-1-jslaby@suse.cz> +References: kernel 6.10 + +6.10 removed the "support" (it was never supported [1]) of separate +source and build dirs for out of tree modules. + +KNI uses "src=" hack for that purpose. + +Instead, copy sources to the build dir and don't rely upon the +unsupported... + +Intended esp. for stable/22.11. It should go wherever kni is still in +the tree. + +[1] https://lore.kernel.org/all/CAK7LNAQ47bZpE6c6Yoz-jQS78uU611oZwU8bH+7e=p5zSyADJw@mail.gmail.com/ + +Signed-off-by: Jiri Slaby +--- + kernel/linux/kni/meson.build | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/kernel/linux/kni/meson.build b/kernel/linux/kni/meson.build +index 4c90069e..39ca2ade 100644 +--- a/kernel/linux/kni/meson.build ++++ b/kernel/linux/kni/meson.build +@@ -11,8 +11,8 @@ if run_cmd.stdout().contains('txqueue') == true + kmod_cflags = '-DHAVE_ARG_TX_QUEUE' + endif + +- +-kni_mkfile = custom_target('rte_kni_makefile', ++kni_deps = [] ++kni_deps += custom_target('rte_kni_makefile', + output: 'Makefile', + command: ['touch', '@OUTPUT@']) + +@@ -22,12 +22,15 @@ kni_sources = files( + 'Kbuild', + ) + ++foreach file : kni_sources ++ kni_deps += fs.copyfile(file) ++endforeach ++ + custom_target('rte_kni', + input: kni_sources, + output: 'rte_kni.ko', + command: ['make', '-j4', '-C', kernel_build_dir, + 'M=' + meson.current_build_dir(), +- 'src=' + meson.current_source_dir(), + ' '.join(['MODULE_CFLAGS=', kmod_cflags,'-include ']) + + dpdk_source_root + '/config/rte_config.h' + + ' -I' + dpdk_source_root + '/lib/eal/include' + +@@ -35,7 +38,7 @@ custom_target('rte_kni', + ' -I' + dpdk_build_root + + ' -I' + meson.current_source_dir(), + 'modules'] + cross_args, +- depends: kni_mkfile, ++ depends: kni_deps, + install: install, + install_dir: kernel_install_dir, + build_by_default: get_option('enable_kmods')) +-- +2.45.2 + diff --git a/kni-fix-build-with-Linux-6.8.patch b/kni-fix-build-with-Linux-6.8.patch index 0c936aa..96eb0a4 100644 --- a/kni-fix-build-with-Linux-6.8.patch +++ b/kni-fix-build-with-Linux-6.8.patch @@ -1,6 +1,12 @@ From: Jiri Slaby +Date: Tue, 12 Mar 2024 09:49:14 +0100 Subject: kni: fix build with Linux 6.8 -Patch-mainline: submitted to dev@dpdk.org, <20240312084914.92056-1-jslaby@suse.cz> +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Git-repo: git://dpdk.org/dpdk-stable +Git-commit: 15658afda05f50e69805b891ebb4d2d5c1966d44 +Patch-mainline: yes References: kernel 6.8 strlcpy() was removed in commit d26270061ae6 (string: Remove strlcpy()), use @@ -10,14 +16,20 @@ The patches fixes this: kernel/linux/kni/kni_net.c: In function ‘kni_get_drvinfo’: kernel/linux/kni/kni_net.c:835:9: error: implicit declaration of function ‘strlcpy’; did you mean ‘strscpy’? +Intended esp. for stable/22.11. It should go wherever kni is still in +the tree. + Signed-off-by: Jiri Slaby +Acked-by: Luca Boccassi --- - kernel/linux/kni/kni_net.c | 4 ++-- + kernel/linux/kni/kni_net.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) +diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c +index 779ee345..c115a728 100644 --- a/kernel/linux/kni/kni_net.c +++ b/kernel/linux/kni/kni_net.c -@@ -832,8 +832,8 @@ static const struct net_device_ops kni_n +@@ -832,8 +832,8 @@ static const struct net_device_ops kni_net_netdev_ops = { static void kni_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) { @@ -28,3 +40,6 @@ Signed-off-by: Jiri Slaby } static const struct ethtool_ops kni_net_ethtool_ops = { +-- +2.45.2 +