]> git.proxmox.com Git - openvswitch.git/blobdiff - debian/patches/0001-acinclude-Also-use-LIBS-from-dpkg-pkg-config.patch
add debian sid (ovs 2.11) "debian" directory
[openvswitch.git] / debian / patches / 0001-acinclude-Also-use-LIBS-from-dpkg-pkg-config.patch
diff --git a/debian/patches/0001-acinclude-Also-use-LIBS-from-dpkg-pkg-config.patch b/debian/patches/0001-acinclude-Also-use-LIBS-from-dpkg-pkg-config.patch
new file mode 100644 (file)
index 0000000..af649da
--- /dev/null
@@ -0,0 +1,366 @@
+From 5b5aa2d8a54c006b6c5239d04b7a751ca5ff5d44 Mon Sep 17 00:00:00 2001
+From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
+Date: Tue, 12 Feb 2019 07:29:58 +0100
+Subject: [PATCH] acinclude: Also use LIBS from dpkg pkg-config
+
+DPDK 18.11 builds using the more modern meson build system no more
+provide the -ldpdk linker script. Instead it is expected to use
+pkgconfig for linker options as well.
+
+This change will set DPDK_LIB from pkg-config (if pkg-config was
+available) and since that already carries the whole-archive flags
+around the PMDs skips the further wrapping in more whole-archive
+if that is already part of DPDK_LIB.
+
+To work reliable in all environments this needs pkg-config 0.29.1.
+We want to be able to use PKG_CHECK_MODULES_STATIC which
+is not yet available in 0.24. Therefore update pkg.m4
+to pkg-config 0.29.1.
+
+This should be backport-safe as these macro files are all versioned.
+autoconf is smart enough to check the version if you have it locally,
+and if the system's is higher, it will use that one instead.
+
+Acked-by: Luca Boccassi <bluca@debian.org>
+Acked-by: Aaron Conole <aconole@redhat.com>
+Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
+Signed-off-by: Ian Stokes <ian.stokes@intel.com>
+
+Origin: backport, https://github.com/openvswitch/ovs/commit/5b5aa2d8a54c006b6c5239d04b7a751ca5ff5d44
+Last-Update: 2019-02-14
+
+---
+ acinclude.m4 |  20 +++--
+ m4/pkg.m4    | 217 +++++++++++++++++++++++++++++++++------------------
+ 2 files changed, 153 insertions(+), 84 deletions(-)
+
+Index: openvswitch/acinclude.m4
+===================================================================
+--- openvswitch.orig/acinclude.m4
++++ openvswitch/acinclude.m4
+@@ -223,9 +223,11 @@ AC_DEFUN([OVS_CHECK_DPDK], [
+     case "$with_dpdk" in
+       yes)
+         DPDK_AUTO_DISCOVER="true"
+-        PKG_CHECK_MODULES([DPDK], [libdpdk],
+-                          [DPDK_INCLUDE="$DPDK_CFLAGS"],
+-                          [DPDK_INCLUDE="-I/usr/local/include/dpdk -I/usr/include/dpdk"])
++        PKG_CHECK_MODULES_STATIC([DPDK], [libdpdk], [
++            DPDK_INCLUDE="$DPDK_CFLAGS"
++            DPDK_LIB="$DPDK_LIBS"], [
++            DPDK_INCLUDE="-I/usr/local/include/dpdk -I/usr/include/dpdk"
++            DPDK_LIB="-ldpdk"])
+         ;;
+       *)
+         DPDK_AUTO_DISCOVER="false"
+@@ -238,11 +240,10 @@ AC_DEFUN([OVS_CHECK_DPDK], [
+            DPDK_INCLUDE="-I$DPDK_INCLUDE_PATH/dpdk"
+         fi
+         DPDK_LIB_DIR="$with_dpdk/lib"
++        DPDK_LIB="-ldpdk"
+         ;;
+     esac
+-    DPDK_LIB="-ldpdk"
+-
+     ovs_save_CFLAGS="$CFLAGS"
+     ovs_save_LDFLAGS="$LDFLAGS"
+     CFLAGS="$CFLAGS $DPDK_INCLUDE"
+@@ -377,7 +378,14 @@ AC_DEFUN([OVS_CHECK_DPDK], [
+     #
+     # These options are specified inside a single -Wl directive to prevent
+     # autotools from reordering them.
+-    DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive
++    #
++    # OTOH newer versions of dpdk pkg-config (generated with Meson)
++    # will already have flagged just the right set of libs with
++    # --whole-archive - in those cases do not wrap it once more.
++    case "$DPDK_LIB" in
++      *whole-archive*) DPDK_vswitchd_LDFLAGS=$DPDK_LIB;;
++      *) DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive
++    esac
+     AC_SUBST([DPDK_vswitchd_LDFLAGS])
+     AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.])
+   fi
+Index: openvswitch/m4/pkg.m4
+===================================================================
+--- openvswitch.orig/m4/pkg.m4
++++ openvswitch/m4/pkg.m4
+@@ -1,29 +1,60 @@
+-# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+-# serial 1 (pkg-config-0.24)
+-# 
+-# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+-#
+-# This program is free software; you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation; either version 2 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful, but
+-# WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-# General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+-#
+-# As a special exception to the GNU General Public License, if you
+-# distribute this file as part of a program that contains a
+-# configuration script generated by Autoconf, you may include it under
+-# the same distribution terms that you use for the rest of that program.
+-
+-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+-# ----------------------------------
++dnl pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
++dnl serial 11 (pkg-config-0.29.1)
++dnl
++dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
++dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
++dnl
++dnl This program is free software; you can redistribute it and/or modify
++dnl it under the terms of the GNU General Public License as published by
++dnl the Free Software Foundation; either version 2 of the License, or
++dnl (at your option) any later version.
++dnl
++dnl This program is distributed in the hope that it will be useful, but
++dnl WITHOUT ANY WARRANTY; without even the implied warranty of
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++dnl General Public License for more details.
++dnl
++dnl You should have received a copy of the GNU General Public License
++dnl along with this program; if not, write to the Free Software
++dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++dnl 02111-1307, USA.
++dnl
++dnl As a special exception to the GNU General Public License, if you
++dnl distribute this file as part of a program that contains a
++dnl configuration script generated by Autoconf, you may include it under
++dnl the same distribution terms that you use for the rest of that
++dnl program.
++
++dnl PKG_PREREQ(MIN-VERSION)
++dnl -----------------------
++dnl Since: 0.29
++dnl
++dnl Verify that the version of the pkg-config macros are at least
++dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
++dnl installed version of pkg-config, this checks the developer's version
++dnl of pkg.m4 when generating configure.
++dnl
++dnl To ensure that this macro is defined, also add:
++dnl m4_ifndef([PKG_PREREQ],
++dnl     [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
++dnl
++dnl See the "Since" comment for each macro you use to see what version
++dnl of the macros you require.
++m4_defun([PKG_PREREQ],
++[m4_define([PKG_MACROS_VERSION], [0.29.1])
++m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
++    [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
++])dnl PKG_PREREQ
++
++dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
++dnl ----------------------------------
++dnl Since: 0.16
++dnl
++dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
++dnl first found in the path. Checks that the version of pkg-config found
++dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
++dnl used since that's the first version where most current features of
++dnl pkg-config existed.
+ AC_DEFUN([PKG_PROG_PKG_CONFIG],
+ [m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+ m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+@@ -45,18 +76,19 @@ if test -n "$PKG_CONFIG"; then
+               PKG_CONFIG=""
+       fi
+ fi[]dnl
+-])# PKG_PROG_PKG_CONFIG
++])dnl PKG_PROG_PKG_CONFIG
+-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+-#
+-# Check to see whether a particular set of modules exists.  Similar
+-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+-#
+-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+-# only at the first occurence in configure.ac, so if the first place
+-# it's called might be skipped (such as if it is within an "if", you
+-# have to call PKG_CHECK_EXISTS manually
+-# --------------------------------------------------------------
++dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
++dnl -------------------------------------------------------------------
++dnl Since: 0.18
++dnl
++dnl Check to see whether a particular set of modules exists. Similar to
++dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
++dnl
++dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++dnl only at the first occurence in configure.ac, so if the first place
++dnl it's called might be skipped (such as if it is within an "if", you
++dnl have to call PKG_CHECK_EXISTS manually
+ AC_DEFUN([PKG_CHECK_EXISTS],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+ if test -n "$PKG_CONFIG" && \
+@@ -66,8 +98,10 @@ m4_ifvaln([$3], [else
+   $3])dnl
+ fi])
+-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+-# ---------------------------------------------
++dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
++dnl ---------------------------------------------
++dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
++dnl pkg_failed based on the result.
+ m4_define([_PKG_CONFIG],
+ [if test -n "$$1"; then
+     pkg_cv_[]$1="$$1"
+@@ -79,10 +113,11 @@ m4_define([_PKG_CONFIG],
+  else
+     pkg_failed=untried
+ fi[]dnl
+-])# _PKG_CONFIG
++])dnl _PKG_CONFIG
+-# _PKG_SHORT_ERRORS_SUPPORTED
+-# -----------------------------
++dnl _PKG_SHORT_ERRORS_SUPPORTED
++dnl ---------------------------
++dnl Internal check to see if pkg-config supports short errors.
+ AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+@@ -90,19 +125,17 @@ if $PKG_CONFIG --atleast-pkgconfig-versi
+ else
+         _pkg_short_errors_supported=no
+ fi[]dnl
+-])# _PKG_SHORT_ERRORS_SUPPORTED
++])dnl _PKG_SHORT_ERRORS_SUPPORTED
+-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+-# [ACTION-IF-NOT-FOUND])
+-#
+-#
+-# Note that if there is a possibility the first call to
+-# PKG_CHECK_MODULES might not happen, you should be sure to include an
+-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+-#
+-#
+-# --------------------------------------------------------------
++dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
++dnl   [ACTION-IF-NOT-FOUND])
++dnl --------------------------------------------------------------
++dnl Since: 0.4.0
++dnl
++dnl Note that if there is a possibility the first call to
++dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
++dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+ AC_DEFUN([PKG_CHECK_MODULES],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+@@ -156,16 +189,40 @@ else
+         AC_MSG_RESULT([yes])
+       $3
+ fi[]dnl
+-])# PKG_CHECK_MODULES
++])dnl PKG_CHECK_MODULES
+-# PKG_INSTALLDIR(DIRECTORY)
+-# -------------------------
+-# Substitutes the variable pkgconfigdir as the location where a module
+-# should install pkg-config .pc files. By default the directory is
+-# $libdir/pkgconfig, but the default can be changed by passing
+-# DIRECTORY. The user can override through the --with-pkgconfigdir
+-# parameter.
++dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
++dnl   [ACTION-IF-NOT-FOUND])
++dnl ---------------------------------------------------------------------
++dnl Since: 0.29
++dnl
++dnl Checks for existence of MODULES and gathers its build flags with
++dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
++dnl and VARIABLE-PREFIX_LIBS from --libs.
++dnl
++dnl Note that if there is a possibility the first call to
++dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
++dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
++dnl configure.ac.
++AC_DEFUN([PKG_CHECK_MODULES_STATIC],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++_save_PKG_CONFIG=$PKG_CONFIG
++PKG_CONFIG="$PKG_CONFIG --static"
++PKG_CHECK_MODULES($@)
++PKG_CONFIG=$_save_PKG_CONFIG[]dnl
++])dnl PKG_CHECK_MODULES_STATIC
++
++
++dnl PKG_INSTALLDIR([DIRECTORY])
++dnl -------------------------
++dnl Since: 0.27
++dnl
++dnl Substitutes the variable pkgconfigdir as the location where a module
++dnl should install pkg-config .pc files. By default the directory is
++dnl $libdir/pkgconfig, but the default can be changed by passing
++dnl DIRECTORY. The user can override through the --with-pkgconfigdir
++dnl parameter.
+ AC_DEFUN([PKG_INSTALLDIR],
+ [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+ m4_pushdef([pkg_description],
+@@ -176,16 +233,18 @@ AC_ARG_WITH([pkgconfigdir],
+ AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+ m4_popdef([pkg_default])
+ m4_popdef([pkg_description])
+-]) dnl PKG_INSTALLDIR
++])dnl PKG_INSTALLDIR
+-# PKG_NOARCH_INSTALLDIR(DIRECTORY)
+-# -------------------------
+-# Substitutes the variable noarch_pkgconfigdir as the location where a
+-# module should install arch-independent pkg-config .pc files. By
+-# default the directory is $datadir/pkgconfig, but the default can be
+-# changed by passing DIRECTORY. The user can override through the
+-# --with-noarch-pkgconfigdir parameter.
++dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
++dnl --------------------------------
++dnl Since: 0.27
++dnl
++dnl Substitutes the variable noarch_pkgconfigdir as the location where a
++dnl module should install arch-independent pkg-config .pc files. By
++dnl default the directory is $datadir/pkgconfig, but the default can be
++dnl changed by passing DIRECTORY. The user can override through the
++dnl --with-noarch-pkgconfigdir parameter.
+ AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+ [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+ m4_pushdef([pkg_description],
+@@ -196,13 +255,15 @@ AC_ARG_WITH([noarch-pkgconfigdir],
+ AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+ m4_popdef([pkg_default])
+ m4_popdef([pkg_description])
+-]) dnl PKG_NOARCH_INSTALLDIR
++])dnl PKG_NOARCH_INSTALLDIR
+-# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+-# -------------------------------------------
+-# Retrieves the value of the pkg-config variable for the given module.
++dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
++dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
++dnl -------------------------------------------
++dnl Since: 0.28
++dnl
++dnl Retrieves the value of the pkg-config variable for the given module.
+ AC_DEFUN([PKG_CHECK_VAR],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+ AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+@@ -211,4 +272,4 @@ _PKG_CONFIG([$1], [variable="][$3]["], [
+ AS_VAR_COPY([$1], [pkg_cv_][$1])
+ AS_VAR_IF([$1], [""], [$5], [$4])dnl
+-])# PKG_CHECK_VAR
++])dnl PKG_CHECK_VAR