From 9b45dfcc76945423904d436b6a352864f04a577c Mon Sep 17 00:00:00 2001 From: Felix Moessbauer Date: Wed, 18 Aug 2021 06:21:20 +0000 Subject: [PATCH] fix ABI incompatibility that crashes OVS when enabling LLDP This fix ensures that the libofproto is also placed in the update-alternatives to ensure that the library is build with the same defines (e.g. NETDEV_DPDK) as the ovs-vswitchd binary. Previously, even the ovs-vswitchd build with DPDK used the libofproto without DPDK support. closes: #992406 --- debian/openvswitch-common.postinst.in | 3 ++- debian/openvswitch-switch-dpdk.postinst.in | 3 ++- debian/rules | 13 +++++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/debian/openvswitch-common.postinst.in b/debian/openvswitch-common.postinst.in index 43df5b886..b75b2e9ed 100644 --- a/debian/openvswitch-common.postinst.in +++ b/debian/openvswitch-common.postinst.in @@ -4,7 +4,8 @@ set -e if [ "${1}" = "configure" ] ; then update-alternatives --install /usr/sbin/ovs-vswitchd ovs-vswitchd /usr/lib/openvswitch-common/ovs-vswitchd 100 \ - --slave /usr/lib/%%MULTIARCH_TRIPLETT%%/libopenvswitch-2.15.so.0.0.0 libopenvswitch.so /usr/lib/openvswitch-common/libopenvswitch-2.15.so.0.0.0 + --slave /usr/lib/%%MULTIARCH_TRIPLETT%%/libopenvswitch-2.15.so.0.0.0 libopenvswitch.so /usr/lib/openvswitch-common/libopenvswitch-2.15.so.0.0.0 \ + --slave /usr/lib/%%MULTIARCH_TRIPLETT%%/libofproto-2.15.so.0.0.0 libofproto.so /usr/lib/openvswitch-common/libofproto-2.15.so.0.0.0 fi #DEBHELPER# diff --git a/debian/openvswitch-switch-dpdk.postinst.in b/debian/openvswitch-switch-dpdk.postinst.in index 4bbc279e3..85d231d27 100644 --- a/debian/openvswitch-switch-dpdk.postinst.in +++ b/debian/openvswitch-switch-dpdk.postinst.in @@ -4,7 +4,8 @@ set -e if [ "${1}" = "configure" ] ; then update-alternatives --install /usr/sbin/ovs-vswitchd ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk 200 \ - --slave /usr/lib/%%MULTIARCH_TRIPLETT%%/libopenvswitch-2.15.so.0.0.0 libopenvswitch.so /usr/lib/openvswitch-switch-dpdk/libopenvswitch-2.15.so.0.0.0 + --slave /usr/lib/%%MULTIARCH_TRIPLETT%%/libopenvswitch-2.15.so.0.0.0 libopenvswitch.so /usr/lib/openvswitch-switch-dpdk/libopenvswitch-2.15.so.0.0.0 \ + --slave /usr/lib/%%MULTIARCH_TRIPLETT%%/libofproto-2.15.so.0.0.0 libofproto.so /usr/lib/openvswitch-switch-dpdk/libofproto-2.15.so.0.0.0 fi #DEBHELPER# diff --git a/debian/rules b/debian/rules index c8edc01a6..9913367cf 100755 --- a/debian/rules +++ b/debian/rules @@ -207,6 +207,9 @@ override_dh_auto_install-arch: $(CURDIR)/debian/openvswitch-common/usr/lib/openvswitch-common/ovs-vswitchd mv $(CURDIR)/debian/tmp/usr/lib/*/libopenvswitch-2.15.so.0.0.0 \ $(CURDIR)/debian/openvswitch-common/usr/lib/openvswitch-common/libopenvswitch-2.15.so.0.0.0 + mv $(CURDIR)/debian/tmp/usr/lib/*/libofproto-2.15.so.0.0.0 \ + $(CURDIR)/debian/openvswitch-common/usr/lib/openvswitch-common/libofproto-2.15.so.0.0.0 + override_dh_auto_install-indep: $(MAKE) -C _debian DESTDIR=$(CURDIR)/debian/tmp install @@ -218,7 +221,10 @@ override_dh_auto_install-indep: override_dh_install: install -D -m 0644 utilities/ovs-vsctl-bashcomp.bash $(CURDIR)/debian/openvswitch-switch/usr/share/bash-completion/completions/ovs-vsctl - dh_install --exclude=usr/sbin/ovs-vswitchd --exclude=usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libopenvswitch-2.15.so.0.0.0 + dh_install --exclude=usr/sbin/ovs-vswitchd \ + --exclude=usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libopenvswitch-2.15.so.0.0.0 \ + --exclude=usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libofproto-2.15.so.0.0.0 + rm -f $(CURDIR)/debian/tmp/usr/lib/*/*.la dh_installman --language=C @@ -227,6 +233,7 @@ override_dh_install: # remove the files managed via update-alternatives rm -f $(CURDIR)/debian/tmp/usr/sbin/ovs-vswitchd rm -f $(CURDIR)/debian/tmp/usr/lib/*/libopenvswitch-2.15.so.0.0.0 + rm -f $(CURDIR)/debian/tmp/usr/lib/*/libofproto-2.15.so.0.0.0 dh_missing --fail-missing # openvswitch-switch @@ -238,6 +245,8 @@ ifneq (,$(filter i386 amd64 ppc64el arm64, $(DEB_HOST_ARCH))) $(CURDIR)/debian/openvswitch-switch-dpdk/usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk install -v -D _dpdk/lib/.libs/libopenvswitch-2.15.so.0.0.0 \ $(CURDIR)/debian/openvswitch-switch-dpdk/usr/lib/openvswitch-switch-dpdk/libopenvswitch-2.15.so.0.0.0 + install -v -D _dpdk/ofproto/.libs/libofproto-2.15.so.0.0.0 \ + $(CURDIR)/debian/openvswitch-switch-dpdk/usr/lib/openvswitch-switch-dpdk/libofproto-2.15.so.0.0.0 endif override_dh_installinit: @@ -254,7 +263,7 @@ override_dh_strip: dh_strip --dbg-package=openvswitch-dbg override_dh_shlibdeps: - dh_shlibdeps -l$(CURDIR)/_debian/lib/.libs + dh_shlibdeps -l$(CURDIR)/_debian/lib/.libs:$(CURDIR)/_debian/ofproto/.libs override_dh_installman: echo "Do nothing..." -- GitLab