forked from pool/openvswitch
Dirk Mueller
67f6e49df3
- Add %check directive to run the openvswitch testsuite on demand. The openvswitch contains hundreds of tests covering simple and complex openvswitch configuration so it's beneficial to run them during package builds. However, running the testsuite is not enabled by default. Also add the following upstream patch: * 0001-Remove-broken-pipe-warning-logs-from-ovsdb-server.lo.patch - Build a DPDK-enabled Open vSwitch (fate#319170) * Apply the following changes to the openvswitch.spec file - Add support for building with DPDK capabilities - Add conflicts between the two packages. - Add new 'open_virtual_switch-*' capabilities for openvswitch, openvswitch-switch, openvswitch-test packages which can be used by reverse dependencies to select between the two openvswitch implementations. * Add pre_checkin.sh to generate the openvswitch_dpdk.spec file based on the openvswitch.spec one. * Add upstream openvswitch-2.5.0-detect-dpdk-installation.patch patch to detect and link against a DPDK installation. OBS-URL: https://build.opensuse.org/request/show/402853 OBS-URL: https://build.opensuse.org/package/show/network/openvswitch?expand=0&rev=91
149 lines
5.0 KiB
Diff
149 lines
5.0 KiB
Diff
From 40b5ea86319f803cc4f5df6754b2cd1556f6bd94 Mon Sep 17 00:00:00 2001
|
|
From: Bhanuprakash Bodireddy <bhanuprakash.bodireddy@intel.com>
|
|
Date: Tue, 12 Apr 2016 11:44:15 +0100
|
|
Subject: [PATCH] acinclude: Autodetect DPDK location when configuring OVS
|
|
|
|
When using DPDK datapath, the OVS configure script requires the DPDK
|
|
build directory passed on --with-dpdk. This can be avoided if DPDK
|
|
library, headers are in standard compiler search paths.
|
|
|
|
This patch fixes the problem by searching for DPDK libraries in standard
|
|
locations and configure OVS sources for dpdk datapath.
|
|
|
|
If the install location is manually specified in "--with-dpdk"
|
|
autodiscovery shall be skipped.
|
|
|
|
Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodireddy@intel.com>
|
|
Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
|
|
---
|
|
AUTHORS | 1 +
|
|
acinclude.m4 | 76 +++++++++++++++++++++++++++++++++++++++++-------------------
|
|
2 files changed, 53 insertions(+), 24 deletions(-)
|
|
|
|
diff --git a/acinclude.m4 b/acinclude.m4
|
|
index f345c31..acd7ce7 100644
|
|
--- a/acinclude.m4
|
|
+++ b/acinclude.m4
|
|
@@ -163,27 +163,50 @@ AC_DEFUN([OVS_CHECK_DPDK], [
|
|
[AC_HELP_STRING([--with-dpdk=/path/to/dpdk],
|
|
[Specify the DPDK build directory])])
|
|
|
|
- if test X"$with_dpdk" != X; then
|
|
- RTE_SDK=$with_dpdk
|
|
+ AC_MSG_CHECKING([whether dpdk datapath is enabled])
|
|
+ if test -z "$with_dpdk" || test "$with_dpdk" = no; then
|
|
+ AC_MSG_RESULT([no])
|
|
+ DPDKLIB_FOUND=false
|
|
+ else
|
|
+ AC_MSG_RESULT([yes])
|
|
+ case "$with_dpdk" in
|
|
+ yes)
|
|
+ DPDK_AUTO_DISCOVER="true"
|
|
+ DPDK_INCLUDE="/usr/local/include/dpdk -I/usr/include/dpdk"
|
|
+ ;;
|
|
+ *)
|
|
+ DPDK_AUTO_DISCOVER="false"
|
|
+ DPDK_INCLUDE="$with_dpdk/include"
|
|
+ # If 'with_dpdk' is passed install directory, point to headers
|
|
+ # installed in $DESTDIR/$prefix/include/dpdk
|
|
+ AC_CHECK_FILE([$DPDK_INCLUDE/rte_config.h], [],
|
|
+ [AC_CHECK_FILE([$DPDK_INCLUDE/dpdk/rte_config.h],
|
|
+ [DPDK_INCLUDE=$DPDK_INCLUDE/dpdk], [])])
|
|
+ DPDK_LIB_DIR="$with_dpdk/lib"
|
|
+ ;;
|
|
+ esac
|
|
|
|
- DPDK_INCLUDE=$RTE_SDK/include
|
|
- DPDK_LIB_DIR=$RTE_SDK/lib
|
|
DPDK_LIB="-ldpdk"
|
|
DPDK_EXTRA_LIB=""
|
|
- RTE_SDK_FULL=`readlink -f $RTE_SDK`
|
|
-
|
|
- AC_COMPILE_IFELSE(
|
|
- [AC_LANG_PROGRAM([#include <$RTE_SDK_FULL/include/rte_config.h>
|
|
-#if !RTE_LIBRTE_VHOST_USER
|
|
-#error
|
|
-#endif], [])],
|
|
- [], [AC_DEFINE([VHOST_CUSE], [1], [DPDK vhost-cuse support enabled, vhost-user disabled.])
|
|
- DPDK_EXTRA_LIB="-lfuse"])
|
|
|
|
ovs_save_CFLAGS="$CFLAGS"
|
|
ovs_save_LDFLAGS="$LDFLAGS"
|
|
- LDFLAGS="$LDFLAGS -L$DPDK_LIB_DIR"
|
|
CFLAGS="$CFLAGS -I$DPDK_INCLUDE"
|
|
+ if test "$DPDK_AUTO_DISCOVER" = "false"; then
|
|
+ LDFLAGS="$LDFLAGS -L${DPDK_LIB_DIR}"
|
|
+ fi
|
|
+
|
|
+ AC_COMPILE_IFELSE([
|
|
+ AC_LANG_PROGRAM(
|
|
+ [
|
|
+ #include <rte_config.h>
|
|
+#if !RTE_LIBRTE_VHOST_USER
|
|
+#error
|
|
+#endif
|
|
+ ], [])
|
|
+ ], [],
|
|
+ [AC_DEFINE([VHOST_CUSE], [1], [DPDK vhost-cuse support enabled, vhost-user disabled.])
|
|
+ DPDK_EXTRA_LIB="-lfuse"])
|
|
|
|
# On some systems we have to add -ldl to link with dpdk
|
|
#
|
|
@@ -192,7 +215,7 @@ AC_DEFUN([OVS_CHECK_DPDK], [
|
|
# Before each attempt the search cache must be unset,
|
|
# otherwise autoconf will stick with the old result
|
|
|
|
- found=false
|
|
+ DPDKLIB_FOUND=false
|
|
save_LIBS=$LIBS
|
|
for extras in "" "-ldl"; do
|
|
LIBS="$DPDK_LIB $extras $save_LIBS $DPDK_EXTRA_LIB"
|
|
@@ -201,17 +224,25 @@ AC_DEFUN([OVS_CHECK_DPDK], [
|
|
#include <rte_eal.h>],
|
|
[int rte_argc; char ** rte_argv;
|
|
rte_eal_init(rte_argc, rte_argv);])],
|
|
- [found=true])
|
|
- if $found; then
|
|
+ [DPDKLIB_FOUND=true])
|
|
+ if $DPDKLIB_FOUND; then
|
|
break
|
|
fi
|
|
done
|
|
- if $found; then :; else
|
|
- AC_MSG_ERROR([cannot link with dpdk])
|
|
+
|
|
+ # If linking unsuccessful
|
|
+ if test "$DPDKLIB_FOUND" = "false" ; then
|
|
+ if $DPDK_AUTO_DISCOVER; then
|
|
+ AC_MSG_ERROR([Could not find DPDK library in default search path, Use --with-dpdk to specify the DPDK library installed in non-standard location])
|
|
+ else
|
|
+ AC_MSG_ERROR([Could not find DPDK libraries in $DPDK_LIB_DIR])
|
|
+ fi
|
|
fi
|
|
CFLAGS="$ovs_save_CFLAGS"
|
|
LDFLAGS="$ovs_save_LDFLAGS"
|
|
- OVS_LDFLAGS="$OVS_LDFLAGS -L$DPDK_LIB_DIR"
|
|
+ if test "$DPDK_AUTO_DISCOVER" = "false"; then
|
|
+ OVS_LDFLAGS="$OVS_LDFLAGS -L$DPDK_LIB_DIR"
|
|
+ fi
|
|
OVS_CFLAGS="$OVS_CFLAGS -I$DPDK_INCLUDE"
|
|
OVS_ENABLE_OPTION([-mssse3])
|
|
|
|
@@ -226,12 +257,9 @@ AC_DEFUN([OVS_CHECK_DPDK], [
|
|
DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive
|
|
AC_SUBST([DPDK_vswitchd_LDFLAGS])
|
|
AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.])
|
|
-
|
|
- else
|
|
- RTE_SDK=
|
|
fi
|
|
|
|
- AM_CONDITIONAL([DPDK_NETDEV], test -n "$RTE_SDK")
|
|
+ AM_CONDITIONAL([DPDK_NETDEV], test "$DPDKLIB_FOUND" = true)
|
|
])
|
|
|
|
dnl OVS_GREP_IFELSE(FILE, REGEX, [IF-MATCH], [IF-NO-MATCH])
|
|
--
|
|
2.8.2
|
|
|