X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Ftools%2Fdisk-image-builder%2Fnested%2Fbuildroot-patches%2Fdpdk.patch;fp=resources%2Ftools%2Fdisk-image-builder%2Fnested%2Fbuildroot-patches%2Fdpdk.patch;h=0000000000000000000000000000000000000000;hp=be10b6524e4842a80b4300dad37e61598521857c;hb=2c1809bfabcef9d74e9a7da58a694a320733a64f;hpb=d653bff621c44d0af1f4dcb786e9830362cdac38 diff --git a/resources/tools/disk-image-builder/nested/buildroot-patches/dpdk.patch b/resources/tools/disk-image-builder/nested/buildroot-patches/dpdk.patch deleted file mode 100644 index be10b6524e..0000000000 --- a/resources/tools/disk-image-builder/nested/buildroot-patches/dpdk.patch +++ /dev/null @@ -1,220 +0,0 @@ -diff --git a/package/Config.in b/package/Config.in -index 6fc0466..ab38a76 100644 ---- a/package/Config.in -+++ b/package/Config.in -@@ -1095,6 +1095,7 @@ menu "Networking" - source "package/cgic/Config.in" - source "package/cppzmq/Config.in" - source "package/czmq/Config.in" -+ source "package/dpdk/Config.in" - source "package/filemq/Config.in" - source "package/flickcurl/Config.in" - source "package/fmlib/Config.in" -diff --git a/package/dpdk/Config.in b/package/dpdk/Config.in -new file mode 100644 -index 0000000..a42271e ---- /dev/null -+++ b/package/dpdk/Config.in -@@ -0,0 +1,55 @@ -+config BR2_PACKAGE_DPDK -+ bool "dpdk" -+ depends on (BR2_i386 && !BR2_x86_i386 && !BR2_x86_i486 \ -+ && !BR2_x86_i586 && !BR2_x86_x1000) \ -+ || BR2_x86_64 || BR2_ARM_CPU_ARMV7A || BR2_aarch64 \ -+ || BR2_aarch64_be -+ depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC -+ depends on BR2_TOOLCHAIN_HAS_SYNC_1 -+ depends on BR2_TOOLCHAIN_HAS_SYNC_2 -+ depends on BR2_TOOLCHAIN_HAS_SYNC_4 -+ depends on BR2_TOOLCHAIN_HAS_SYNC_8 -+ depends on BR2_PACKAGE_NUMACTL -+ help -+ DPDK is a set of libraries and drivers for fast packet processing. It -+ was designed to run on any processors, however, Intel x86 has been the -+ first CPU to be supported. Ports for other CPUs like IBM Power 8 and -+ ARM are under progress. It runs mostly in Linux userland. A FreeBSD -+ port is now available for a subset of DPDK features. -+ -+ Notes: -+ * To build the included Linux Kernel drivers, it is necessary to -+ enable CONFIG_PCI_MSI, CONFIG_UIO. -+ * To build the PCAP PMD properly, you need to enable the libpcap -+ manually. -+ * You may need to install the python2 interpreter if you want to use -+ scripts dpdk_nic_bind.py and cpu_layout.py -+ -+ http://www.dpdk.org/ -+ -+if BR2_PACKAGE_DPDK -+ -+config BR2_PACKAGE_DPDK_CONFIG -+ string "Configuration" -+ default "i686-native-linuxapp-gcc" \ -+ if BR2_x86_i686 -+ default "x86_64-native-linuxapp-gcc" \ -+ if BR2_x86_64 -+ default "arm-armv7a-linuxapp-gcc" \ -+ if BR2_ARM_CPU_ARMV7A -+ default "arm64-armv8a-linuxapp-gcc" \ -+ if BR2_aarch64 || BR2_aarch64_be -+ -+config BR2_PACKAGE_DPDK_TEST -+ bool "Install tests suite" -+ select BR2_PACKAGE_PYTHON_PEXPECT if BR2_PACKAGE_PYTHON -+ help -+ Install all DPDK tests. If you want to run the tests by the included -+ autotest.py script you need to enable python manually. -+ -+config BR2_PACKAGE_DPDK_EXAMPLES -+ bool "Build & install examples" -+ help -+ Build and install all examples selected by the current configuration. -+ -+endif -diff --git a/package/dpdk/dpdk.hash b/package/dpdk/dpdk.hash -new file mode 100644 -index 0000000..1c47f19 ---- /dev/null -+++ b/package/dpdk/dpdk.hash -@@ -0,0 +1,2 @@ -+# Locally calculated -+sha256 3a08addbff45c636538514e9a5838fb91ea557661a4c071e03a9a6987d46e5b6 dpdk-17.08.tar.gz -diff --git a/package/dpdk/dpdk.mk b/package/dpdk/dpdk.mk -new file mode 100644 -index 0000000..02860fd ---- /dev/null -+++ b/package/dpdk/dpdk.mk -@@ -0,0 +1,133 @@ -+################################################################################ -+# -+# dpdk -+# -+################################################################################ -+ -+DPDK_VERSION = 17.08 -+DPDK_SITE = http://fast.dpdk.org/rel -+DPDK_SOURCE = dpdk-$(DPDK_VERSION).tar.gz -+ -+DPDK_LICENSE = BSD (core), GPLv2+ (Linux drivers) -+DPDK_LICENSE_FILES = GNUmakefile LICENSE.GPL -+DPDK_INSTALL_STAGING = YES -+ -+DPDK_DEPENDENCIES += linux -+ifeq ($(BR2_PACKAGE_NUMACTL),y) -+DPDK_DEPENDENCIES += numactl -+endif -+ -+ifeq ($(BR2_PACKAGE_LIBPCAP),y) -+DPDK_DEPENDENCIES += libpcap -+endif -+ -+ifeq ($(BR2_SHARED_LIBS),y) -+define DPDK_ENABLE_SHARED_LIBS -+ $(call KCONFIG_ENABLE_OPT,CONFIG_RTE_BUILD_SHARED_LIB,\ -+ $(@D)/build/.config) -+endef -+ -+DPDK_POST_CONFIGURE_HOOKS += DPDK_ENABLE_SHARED_LIBS -+endif -+ -+# We're building a kernel module without using the kernel-module infra, -+# so we need to tell we want module support in the kernel -+ifeq ($(BR2_PACKAGE_DPDK),y) -+LINUX_NEEDS_MODULES = y -+endif -+ -+DPDK_CONFIG = $(call qstrip,$(BR2_PACKAGE_DPDK_CONFIG)) -+ -+ifeq ($(BR2_PACKAGE_DPDK_EXAMPLES),y) -+# Build of DPDK examples is not very straight-forward. It requires to have -+# the SDK and runtime installed on same place to reference it by RTE_SDK. -+# We place it locally in the build directory. -+# In additition, some examples seem to have a dependency on the ethtool -+# example that may not be met when building in parallel for the first -+# time. As a (dirty) workaround, we build twice. -+define DPDK_BUILD_EXAMPLES -+ $(INSTALL) -m 0755 -D -d $(TARGET_DIR)/usr/bin -+ $(INSTALL) -m 0755 -D $(@D)/build/app/testpmd $(TARGET_DIR)/usr/bin -+# $(MAKE) -C $(@D) DESTDIR=$(@D)/examples-sdk \ -+# CROSS=$(TARGET_CROSS) install-sdk install-runtime -+# $(MAKE) -C $(@D) RTE_KERNELDIR=$(LINUX_DIR) CROSS=$(TARGET_CROSS) \ -+# RTE_SDK=$(@D)/examples-sdk/usr/local/share/dpdk \ -+# T=$(DPDK_CONFIG) examples || echo "Failed, building again" -+# $(MAKE) -C $(@D) RTE_KERNELDIR=$(LINUX_DIR) CROSS=$(TARGET_CROSS) \ -+# RTE_SDK=$(@D)/examples-sdk/usr/local/share/dpdk \ -+# T=$(DPDK_CONFIG) examples -+endef -+ -+DPDK_EXAMPLES_PATH = $(@D)/examples-sdk/usr/local/share/dpdk/examples -+ -+# Installation of examples is not supported in DPDK so we do it explicitly -+# here. As the binaries and libraries do not have a single or regular location -+# where to find them after build, we search for them by find. -+define DPDK_INSTALL_EXAMPLES -+# $(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/local/bin -+# $(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/local/lib -+# for f in `find $(DPDK_EXAMPLES_PATH) -executable -type f \ -+# -name '[a-z]*.so*' | grep '\/lib\/.*'`; do \ -+# $(INSTALL) -m 0755 -D $$f \ -+# $(TARGET_DIR)/usr/local/lib/`basename $$f`;\ -+# done -+# for f in `find $(DPDK_EXAMPLES_PATH) -executable -type f \ -+# ! -name '*.so*' | grep '\/app\/.*'`; do \ -+# $(INSTALL) -m 0755 -D $$f \ -+# $(TARGET_DIR)/usr/local/bin/`basename $$f`;\ -+# done -+endef -+ -+define DPDK_INSTALL_KMOD -+ $(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/local/kmod -+ for f in `find $(@D)/build/kmod -name '*.ko'` ; do \ -+ $(INSTALL) -m 0755 -D $$f \ -+ $(TARGET_DIR)/usr/local/kmod/`basename $$f`; \ -+ done -+endef -+ -+# Build of the power example is broken (at least for 16.04). -+define DPDK_DISABLE_POWER -+ $(call KCONFIG_DISABLE_OPT,CONFIG_RTE_LIBRTE_POWER,\ -+ $(@D)/build/.config) -+endef -+ -+DPDK_POST_CONFIGURE_HOOKS += DPDK_DISABLE_POWER -+endif -+ -+define DPDK_CONFIGURE_CMDS -+ $(MAKE) -C $(@D) T=$(DPDK_CONFIG) RTE_KERNELDIR=$(LINUX_DIR) \ -+ CROSS=$(TARGET_CROSS) config -+endef -+ -+define DPDK_BUILD_CMDS -+ $(TARGET_MAKE_ENV) LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) \ -+ DBM_INCLUDE="$(STAGING_DIR)/usr/include" \ -+ CCOPTS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \ -+ SHARED_LIBS="$(if $(BR2_STATIC_LIBS),n,y)" -C $(@D) \ -+ RTE_KERNELDIR=$(LINUX_DIR) CROSS=$(TARGET_CROSS) -+ $(DPDK_BUILD_EXAMPLES) -+endef -+ -+define DPDK_INSTALL_STAGING_CMDS -+ $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) prefix=/usr \ -+ CROSS=$(TARGET_CROSS) install-sdk -+endef -+ -+ifeq ($(BR2_PACKAGE_DPDK_TEST),y) -+define DPDK_INSTALL_TARGET_TEST -+ $(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/dpdk -+ $(INSTALL) -m 0755 -D $(@D)/build/app/test $(TARGET_DIR)/usr/dpdk -+ $(INSTALL) -m 0755 -D $(@D)/app/test/*.py $(TARGET_DIR)/usr/dpdk -+endef -+endif -+ -+define DPDK_INSTALL_TARGET_CMDS -+ $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) prefix=/usr \ -+ CROSS=$(TARGET_CROSS) install-runtime -+ $(DPDK_INSTALL_KMOD) -+ $(DPDK_INSTALL_TARGET_TEST) -+ $(DPDK_INSTALL_EXAMPLES) -+endef -+ -+$(eval $(generic-package))