aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Ehrhardt <christian.ehrhardt@canonical.com>2017-02-07 15:00:39 +0100
committerChristian Ehrhardt <christian.ehrhardt@canonical.com>2017-02-07 15:48:12 +0100
commit59b0879e6beaf61f707ac4b44aac8fa90146b125 (patch)
tree504986caef563421cd60b7eff1bea6433879031d
parent1e347795ba76a1657040db950a039f7c7ba95394 (diff)
provide old ABI levels via backward compatibility of new DPDK libraries.
The cross dependencies in DPDK libraries would force us to conflict with older ABI versions to avoid double ld.so resolution (https://lists.ubuntu.com/archives/ubuntu-devel/2017-February/039659.html) The conflicts would make the old versions and thereby the dependent applications non-installable until there is a rebuild (as other updates would do). But for our case that would deny most benefits of version named libraries. Instead of adding a conflicts - whenever possible - provide a backward compatible wrapper symlinking to the new (ABI compatible) implementation. Change-Id: If9fa9cb9474ad0ac555bdf1a0c72f701ddaf2926 Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
-rw-r--r--debian/control63
-rw-r--r--debian/libethdev4.links.in1
-rw-r--r--debian/librte-cryptodev1.links.in1
-rw-r--r--debian/librte-eal2.links.in1
-rwxr-xr-xdebian/rules15
5 files changed, 81 insertions, 0 deletions
diff --git a/debian/control b/debian/control
index 5160a70f..37c14d33 100644
--- a/debian/control
+++ b/debian/control
@@ -782,3 +782,66 @@ Description: Data Plane Development Kit (librte_pdump runtime library)
in user-space and communicate directly with dedicated network interfaces.
.
This package contains the runtime libraries for librte_pdump.
+
+# All following packages are for ABI compatibility to older releases.
+# Newer DPDK versions are ABI compatible to older ones for at least one release
+# and more if maintainable.
+#
+# The cross dependencies in DPDK libraries would otherwise force us to conflict
+# with older ABI versions to avoid double ld.so resolution
+# (https://lists.ubuntu.com/archives/ubuntu-devel/2017-February/039659.html).
+#
+# But the conflicts in debian/control would make the old versions and thereby
+# the dependent applications non-installable until there is a rebuild (as other
+# updates would do).
+# But for our case that would deny most benefits of version named libraries
+# (e.g. the ability to have both).
+#
+# Instead of adding conflicts fields - whenever possible - provide a backward
+# compatible wrapper symlinking to the new (ABI compatible) implementation.
+#
+# Still as soon as (all) dependendent packages are rebuilt these compat
+# wrappers can be autoremoved (apt will take care of that)
+
+Package: libethdev4
+Architecture: amd64 arm64 i386 ppc64el
+Multi-Arch: same
+Homepage: http://dpdk.org/doc/api/rte__ethdev_8h.html
+Pre-Depends: ${misc:Pre-Depends}
+Depends: librte-ethdev5, ${misc:Depends}, ${shlibs:Depends}
+Conflicts: libdpdk0
+Description: Data Plane Development Kit (libethdev runtime library)
+ DPDK is a set of libraries for fast packet processing. Applications run
+ in user-space and communicate directly with dedicated network interfaces.
+ .
+ This package contains an ABI compatbility link for an older version of the
+ runtime libraries for libethdev.
+
+Package: librte-cryptodev1
+Architecture: amd64 arm64 i386 ppc64el
+Multi-Arch: same
+Homepage: http://dpdk.org/doc/api/rte__cryptodev_8h.html
+Pre-Depends: ${misc:Pre-Depends}
+Depends: librte-cryptodev2, ${misc:Depends}, ${shlibs:Depends}
+Conflicts: libdpdk0
+Description: Data Plane Development Kit (librte-cryptodev runtime library)
+ DPDK is a set of libraries for fast packet processing. Applications run
+ in user-space and communicate directly with dedicated network interfaces.
+ .
+ This package contains an ABI compatbility link for an older version of the
+ the runtime libraries for librte_cryptodev.
+
+Package: librte-eal2
+Architecture: amd64 arm64 i386 ppc64el
+Multi-Arch: same
+Homepage: http://dpdk.org/doc/api/rte__eal_8h.html
+Pre-Depends: ${misc:Pre-Depends}
+Depends: librte-eal3, ${misc:Depends}, ${shlibs:Depends}
+Conflicts: libdpdk0
+Description: Data Plane Development Kit (librte-eal runtime library)
+ DPDK is a set of libraries for fast packet processing. Applications run
+ in user-space and communicate directly with dedicated network interfaces.
+ .
+ This package contains an ABI compatbility link for an older version of the
+ runtime libraries for librte_eal.
+
diff --git a/debian/libethdev4.links.in b/debian/libethdev4.links.in
new file mode 100644
index 00000000..6f482f9a
--- /dev/null
+++ b/debian/libethdev4.links.in
@@ -0,0 +1 @@
+usr/lib/@DEB_HOST_MULTIARCH@/librte_ethdev.so.5 usr/lib/@DEB_HOST_MULTIARCH@/libethdev.so.4
diff --git a/debian/librte-cryptodev1.links.in b/debian/librte-cryptodev1.links.in
new file mode 100644
index 00000000..ddde2520
--- /dev/null
+++ b/debian/librte-cryptodev1.links.in
@@ -0,0 +1 @@
+usr/lib/@DEB_HOST_MULTIARCH@/librte_cryptodev.so.2 usr/lib/@DEB_HOST_MULTIARCH@/librte_cryptodev.so.1
diff --git a/debian/librte-eal2.links.in b/debian/librte-eal2.links.in
new file mode 100644
index 00000000..c6cd36a3
--- /dev/null
+++ b/debian/librte-eal2.links.in
@@ -0,0 +1 @@
+usr/lib/@DEB_HOST_MULTIARCH@/librte_eal.so.3 usr/lib/@DEB_HOST_MULTIARCH@/librte_eal.so.2
diff --git a/debian/rules b/debian/rules
index 4033b17f..321f3681 100755
--- a/debian/rules
+++ b/debian/rules
@@ -126,6 +126,12 @@ override_dh_auto_clean:
sed -i '/Package: dpdk-modules-/,/`tail -n1 debian/control.modules.in`/d' debian/control
test -L config/defconfig_$(DPDK_CONFIG) && rm -f config/defconfig_$(DPDK_CONFIG) || true
+override_dh_clean:
+ dh_clean
+ rm -f debian/libethdev4.links
+ rm -f debian/librte-cryptodev1.links
+ rm -f debian/librte-eal2.links
+
override_dh_auto_configure:
# Add support for a custom defconfig file in the debian directory.
ifneq (,$(filter dpdk_config=%,$(DEB_BUILD_OPTIONS)))
@@ -264,6 +270,15 @@ ifneq (,$(KVERS))
debian/dpdk-modules-$(KVERS)/lib/modules/$(KVERS)/kernel/drivers/net
endif
+debian/libethdev4.links: debian/libethdev4.links.in
+ sed -e 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' < $< > $@
+debian/librte-cryptodev1.links: debian/librte-cryptodev1.links.in
+ sed -e 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' < $< > $@
+debian/librte-eal2.links: debian/librte-eal2.links.in
+ sed -e 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' < $< > $@
+override_dh_link: debian/libethdev4.links debian/librte-cryptodev1.links debian/librte-eal2.links
+ dh_link
+
override_dh_dkms:
dh_dkms -V $(VERSION)