SUMMARY = "DPDK" DESCRIPTION = "DPDK - a novel framework for fast packet I/O" HOMEPAGE = "http://dpdk.org" SECTION = "devel" LICENSE = "GPLv2 | LGPLv2 | BSD" LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=751419260aa954499f7abaabaa882bbe \ file://LICENSE.LGPL;md5=4fbd65380cdd255951079008b364516c \ file://lib/librte_eal/common/include/rte_version.h;beginline=1;endline=33;md5=ab6d502a4a25ded2bbabf031720bd1f4" PR = "r1" PV = "1.6.0" DEPENDS += "virtual/kernel" inherit module-base addtask make_scripts after do_patch before do_compile do_make_scripts[lockfiles] = "${TMPDIR}/kernel-scripts.lock" do_make_scripts[deptask] = "do_populate_sysroot" SRCREV = "v1.6.0r1" SRC_URI = "git://dpdk.org/git/dpdk;protocol=http;branch=1.6.0 \ file://unbreak-makefiles.patch \ file://runtest.patch \ file://run-ptest \ file://igb_ethdev_loopback.patch \ file://l2fwd-lpbk \ file://machine-flags.patch \ file://rte_kni_module_1_6.patch.x \ " DPDK_TARGET_DEFAULT = "${TARGET_ARCH}-default-linuxapp-gcc" DPDK_TARGET_IVSHMEM = "${TARGET_ARCH}-ivshmem-linuxapp-gcc" DPDK_BUILD_DIR = "build" DPDK_VAR_O = "${S}/${DPDK_BUILD_DIR}" DPDK_VAR_DESTDIR = "${WORKDIR}/install" DPDK_SRC_PATH = "/usr/src/dpdk" DPDK_INSTALL_PATH = "/opt/dpdk" S = "${WORKDIR}/git" B = "${S}" PACKAGES = "${PN}-dbg ${PN} ${PN}-mk ${PN}-scripts" PACKAGES += "${PN}-default-dbg ${PN}-default-staticdev ${PN}-default" RDEPENDS_${PN} += "pciutils" RDEPENDS_${PN}-default = "${PN}-mk ${PN}-scripts ${PN}-default-staticdev pciutils" RRECOMMENDS_${PN} += "kernel-module-uio kernel-module-pci-stub" FILES_${PN} = "${DPDK_SRC_PATH}" FILES_${PN}-dbg = "/usr/src/debug" FILES_${PN}-mk = "${DPDK_INSTALL_PATH}/mk" FILES_${PN}-scripts = "${DPDK_INSTALL_PATH}/scripts" FILES_${PN}-default = "${DPDK_INSTALL_PATH}/${TARGET_ARCH}-default-linuxapp-gcc" FILES_${PN}-default-dbg = "${DPDK_INSTALL_PATH}/${TARGET_ARCH}-default-linuxapp-gcc/app/.debug" FILES_${PN}-default-staticdev = "${DPDK_INSTALL_PATH}/${TARGET_ARCH}-default-linuxapp-gcc/lib" do_compile() { cd ${S} && oe_runmake install \ RTE_KERNELDIR=${STAGING_KERNEL_DIR} \ RTE_MACHINE=default \ prefix="" \ V=1 KBUILD_VERBOSE=1 CROSS=${TARGET_SYS}- \ O=${DPDK_VAR_O} \ T=${DPDK_TARGET_DEFAULT} \ DESTDIR=${DPDK_VAR_DESTDIR} \ MACHINE_CFLAGS_ALT="${TARGET_CC_ARCH}" #patched version of IVSHMEM target for OVS-DPDK - installed to staging only cd ${S} && git apply ${WORKDIR}/rte_kni_module_1_6.patch.x && \ oe_runmake install \ RTE_KERNELDIR=${STAGING_KERNEL_DIR} \ RTE_MACHINE=default \ prefix="" \ V=1 KBUILD_VERBOSE=1 CROSS=${TARGET_SYS}- \ O=${DPDK_VAR_O} \ T=${DPDK_TARGET_IVSHMEM} \ DESTDIR=${DPDK_VAR_DESTDIR} \ MACHINE_CFLAGS_ALT="${TARGET_CC_ARCH}" \ EXTRA_CFLAGS=-fPIC && \ git apply --reverse ${WORKDIR}/rte_kni_module_1_6.patch.x \ } do_install() { # dpdk install -d ${D}${DPDK_SRC_PATH} cd ${S} && find . -depth -not -path "./${DPDK_BUILD_DIR}*" -not -path "./patches*" -not -path "./.*" -print0 |\ cpio --null -pdlu ${D}${DPDK_SRC_PATH} # install sources to staging cd ${S} && find . -depth -not -path "./${DPDK_BUILD_DIR}*" -not -path "./patches*" -not -path "./.*" -print0 |\ cpio --null -pdlu ${STAGING_DIR_HOST}${DPDK_SRC_PATH} # install build to staging cd ${DPDK_VAR_DESTDIR} && find . -print0 | cpio --null -pdlu ${STAGING_DIR_HOST}${DPDK_INSTALL_PATH} # install build output - skip OVS-DPDK IVSHMEM install -d ${D}${DPDK_INSTALL_PATH} cd ${DPDK_VAR_DESTDIR} && find . -depth -not -path "./${DPDK_TARGET_IVSHMEM}*" -print0 |\ cpio --null -pdlu ${D}${DPDK_INSTALL_PATH} # add "scripts" directory to build output and staging, relpath.sh is needed by makefiles cp -r ${S}/scripts ${D}${DPDK_INSTALL_PATH} cp -r ${S}/scripts ${STAGING_DIR_HOST}${DPDK_INSTALL_PATH} # relpath.sh use of $prefix breaks openvswitch sed -i 's/prefix/path_prefix/g' ${STAGING_DIR_HOST}${DPDK_INSTALL_PATH}/scripts/relpath.sh } COMPATIBLE_HOST = '(x86_64.*|i.86.*)-(linux.*)' #test default target inherit ptest RDEPENDS_${PN}-ptest += "\ make \ python-pexpect \ ${PN}-default \ ${PN} \ " do_compile_ptest () { cd ${WORKDIR}/l2fwd-lpbk && oe_runmake RTE_SDK="${DPDK_VAR_DESTDIR}" \ RTE_TARGET="${DPDK_TARGET_DEFAULT}" RTE_ARCH="${TARGET_ARCH}" sed -i 's|RTE_SDK=.*|RTE_SDK=${DPDK_INSTALL_PATH}|g' ${WORKDIR}/run-ptest sed -i 's|RTE_TARGET=.*|RTE_TARGET=${DPDK_TARGET_DEFAULT}|g' ${WORKDIR}/run-ptest sed -i 's|RTE_ARCH=.*|RTE_ARCH=${TARGET_ARCH}|g' ${WORKDIR}/run-ptest } do_install_ptest () { #install l2fwd loopback app install ${WORKDIR}/l2fwd-lpbk/build/app/l2fwd-lpbk ${D}${PTEST_PATH} #install original test file to be used by autotest.py install ${DPDK_VAR_O}/${DPDK_TARGET_DEFAULT}/app/test ${D}${PTEST_PATH} }