From 1b6242fc583a6b871304fb995af6dc211b58f69b Mon Sep 17 00:00:00 2001 From: Adrian Dudau Date: Thu, 26 Jun 2014 13:48:23 +0200 Subject: initial commit for Enea Linux 4.0 Migrated from the internal git server on the daisy-enea branch Signed-off-by: Adrian Dudau --- recipes-networking/dpdk/dpdk_git.bb | 139 ++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 recipes-networking/dpdk/dpdk_git.bb (limited to 'recipes-networking/dpdk/dpdk_git.bb') diff --git a/recipes-networking/dpdk/dpdk_git.bb b/recipes-networking/dpdk/dpdk_git.bb new file mode 100644 index 0000000..ed4c2b3 --- /dev/null +++ b/recipes-networking/dpdk/dpdk_git.bb @@ -0,0 +1,139 @@ +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} +} + -- cgit v1.2.3-54-g00ecf