fix library availability/dependency
[deb_dpdk.git] / debian / control
index 5112293..1d75a9e 100644 (file)
@@ -2,6 +2,8 @@ Source: dpdk
 Priority: optional
 Maintainer: deb_dpdk Packagers <deb-dpdk@lists.fd.io>
 Uploaders: Luca Boccassi <luca.boccassi@gmail.com>,
+           Christian Ehrhardt <christian.ehrhardt@canonical.com>,
+           Santiago Ruano Rincón <santiagorr@riseup.net>
 Build-Depends: debhelper (>= 9),
                dh-python,
                dh-systemd (>= 1.5),
@@ -27,13 +29,38 @@ Vcs-Browser: https://gerrit.fd.io/r/gitweb?p=deb_dpdk.git
 Package: dpdk
 Section: admin
 Architecture: amd64 arm64 i386 ppc64el
-Depends: libdpdk-dev (= ${binary:Version}),
+Depends: hwdata,
          lsb-base (>= 3.2-14),
          pciutils,
          ${misc:Depends},
          ${python:Depends},
          ${shlibs:Depends}
-Suggests: linux-image-generic
+Recommends: dpdk-igb-uio-dkms (= ${binary:Version}) [arm64],
+            dpdk-rte-kni-dkms (= ${binary:Version}) [arm64],
+            librte-pmd-af-packet1 (= ${binary:Version}),
+            librte-pmd-bnxt1 (= ${binary:Version}),
+            librte-pmd-bond1 (= ${binary:Version}),
+            librte-pmd-cxgbe1 (= ${binary:Version}),
+            librte-pmd-e1000-1 (= ${binary:Version}),
+            librte-pmd-ena1 (= ${binary:Version}),
+            librte-pmd-enic1 (= ${binary:Version}) [amd64 arm64 i386],
+            librte-pmd-fm10k1 (= ${binary:Version}) [amd64 i386],
+            librte-pmd-i40e1 (= ${binary:Version}),
+            librte-pmd-ixgbe1 (= ${binary:Version}) [amd64 arm64 i386],
+            librte-pmd-null-crypto1 (= ${binary:Version}),
+            librte-pmd-null1 (= ${binary:Version}),
+            librte-pmd-pcap1 (= ${binary:Version}),
+            librte-pmd-qede1 (= ${binary:Version}),
+            librte-pmd-ring2 (= ${binary:Version}),
+            librte-pmd-vhost1 (= ${binary:Version}),
+            librte-pmd-virtio1 (= ${binary:Version}),
+            librte-pmd-vmxnet3-uio1 (= ${binary:Version}) [amd64 arm64 i386],
+            librte-pmd-xenvirt1 (= ${binary:Version}) [amd64 arm64 i386]
+Suggests: dpdk-doc,
+          dpdk-igb-uio-dkms (= ${binary:Version}),
+          dpdk-rte-kni-dkms (= ${binary:Version}),
+          linux-image-generic,
+          python-pyelftools,
 Description: Data Plane Development Kit (runtime)
  DPDK is a set of libraries for fast packet processing. Applications run
  in user-space and communicate directly with dedicated network interfaces.
@@ -54,6 +81,7 @@ Description: Data Plane Development Kit (development files)
 Package: dpdk-doc
 Section: doc
 Architecture: all
+Multi-Arch: foreign
 Homepage: http://dpdk.org/doc/guides/index.html
 Depends: libjs-jquery, libjs-underscore, ${misc:Depends}, ${python:Depends}
 Recommends: python, ${python:Recommends}
@@ -96,24 +124,24 @@ Section: libdevel
 Architecture: amd64 arm64 i386 ppc64el
 Multi-Arch: same
 Pre-Depends: ${misc:Pre-Depends}
-Depends: ${misc:Depends},
-         libpcap-dev,
-         libethdev4 (= ${binary:Version}),
+Depends: libpcap-dev,
          librte-acl2 (= ${binary:Version}),
          librte-cfgfile2 (= ${binary:Version}),
          librte-cmdline2 (= ${binary:Version}),
-         librte-cryptodev1 (= ${binary:Version}),
+         librte-cryptodev2 (= ${binary:Version}),
          librte-distributor1 (= ${binary:Version}),
-         librte-eal2 (= ${binary:Version}),
+         librte-eal3 (= ${binary:Version}),
+         librte-ethdev5 (= ${binary:Version}),
          librte-hash2 (= ${binary:Version}),
          librte-ip-frag1 (= ${binary:Version}),
          librte-jobstats1 (= ${binary:Version}),
-         librte-kni2 (= ${binary:Version}) [amd64 arm64],
+         librte-kni2 (= ${binary:Version}) [amd64 arm64 ppc64el],
          librte-kvargs1 (= ${binary:Version}),
          librte-lpm2 (= ${binary:Version}),
          librte-mbuf2 (= ${binary:Version}),
          librte-mempool2 (= ${binary:Version}),
          librte-meter1 (= ${binary:Version}),
+         librte-net1 (= ${binary:Version}),
          librte-pdump1 (= ${binary:Version}),
          librte-pipeline3 (= ${binary:Version}),
          librte-pmd-af-packet1 (= ${binary:Version}),
@@ -124,11 +152,12 @@ Depends: ${misc:Depends},
          librte-pmd-ena1 (= ${binary:Version}),
          librte-pmd-enic1 (= ${binary:Version}) [amd64 arm64 i386],
          librte-pmd-fm10k1 (= ${binary:Version}) [amd64 i386],
-         librte-pmd-i40e1 (= ${binary:Version}) [amd64 i386],
+         librte-pmd-i40e1 (= ${binary:Version}),
          librte-pmd-ixgbe1 (= ${binary:Version}) [amd64 arm64 i386],
          librte-pmd-null-crypto1 (= ${binary:Version}),
          librte-pmd-null1 (= ${binary:Version}),
          librte-pmd-pcap1 (= ${binary:Version}),
+         librte-pmd-qede1 (= ${binary:Version}),
          librte-pmd-ring2 (= ${binary:Version}),
          librte-pmd-vhost1 (= ${binary:Version}),
          librte-pmd-virtio1 (= ${binary:Version}),
@@ -141,7 +170,8 @@ Depends: ${misc:Depends},
          librte-sched1 (= ${binary:Version}),
          librte-table2 (= ${binary:Version}),
          librte-timer1 (= ${binary:Version}),
-         librte-vhost3 (= ${binary:Version})
+         librte-vhost3 (= ${binary:Version}),
+         ${misc:Depends}
 Description: Data Plane Development Kit (basic development files)
  DPDK is a set of libraries for fast packet processing. Applications run
  in user-space and communicate directly with dedicated network interfaces.
@@ -150,7 +180,7 @@ Description: Data Plane Development Kit (basic development files)
  build external applications which will also require at least SSE3 support
  when running.
 
-Package: libethdev4
+Package: librte-ethdev5
 Architecture: amd64 arm64 i386 ppc64el
 Multi-Arch: same
 Homepage: http://dpdk.org/doc/api/rte__ethdev_8h.html
@@ -201,7 +231,7 @@ Description: Data Plane Development Kit (librte-cmdline runtime library)
  .
  This package contains the runtime libraries for librte_cmdline.
 
-Package: librte-cryptodev1
+Package: librte-cryptodev2
 Architecture: amd64 arm64 i386 ppc64el
 Multi-Arch: same
 Homepage: http://dpdk.org/doc/api/rte__cryptodev_8h.html
@@ -227,7 +257,7 @@ Description: Data Plane Development Kit (librte-distributor runtime library)
  .
  This package contains the runtime libraries for librte_distributor.
 
-Package: librte-eal2
+Package: librte-eal3
 Architecture: amd64 arm64 i386 ppc64el
 Multi-Arch: same
 Homepage: http://dpdk.org/doc/api/rte__eal_8h.html
@@ -370,6 +400,24 @@ Description: Data Plane Development Kit (librte-pipeline runtime library)
  .
  This package contains the runtime libraries for librte_pipeline.
 
+Package: librte-net1
+Architecture: amd64 arm64 i386 ppc64el
+Multi-Arch: same
+Homepage: http://dpdk.org/doc/guides/prog_guide/overview.html?highlight=librte_net#librte-net
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Conflicts: libdpdk0
+Description: Data Plane Development Kit (librte-net 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 the runtime libraries for librte_net.
+ .
+ The librte_net library is a collection of IP protocol definitions and
+ convenience macros. It is based on code from the FreeBSD* IP stack and
+ contains protocol numbers (for use in IP headers), IP-related macros,
+ IPv4/IPv6 header structures and TCP, UDP and SCTP header structures.
+
 Package: librte-pmd-af-packet1
 Architecture: amd64 arm64 i386 ppc64el
 Multi-Arch: same
@@ -461,7 +509,7 @@ Description: Data Plane Development Kit (librte-pmd-enic runtime library)
  This package contains the runtime libraries for librte_pmd_enic.
 
 Package: librte-pmd-fm10k1
-Architecture: amd64 i386 ppc64el
+Architecture: amd64 i386
 Multi-Arch: same
 Homepage: http://dpdk.org/doc/guides/nics/fm10k.html
 Pre-Depends: ${misc:Pre-Depends}
@@ -474,7 +522,7 @@ Description: Data Plane Development Kit (librte-pmd-fm10k runtime library)
  This package contains the runtime libraries for librte_pmd_fm10k.
 
 Package: librte-pmd-i40e1
-Architecture: amd64 i386
+Architecture: amd64 arm64 i386 ppc64el
 Multi-Arch: same
 Homepage: http://dpdk.org/doc/guides/nics/i40e.html
 Pre-Depends: ${misc:Pre-Depends}
@@ -603,6 +651,22 @@ Description: Data Plane Development Kit (librte-pmd-xenvirt runtime library)
  .
  This package contains the runtime libraries for librte_pmd_xenvirt.
 
+Package: librte-pmd-qede1
+Architecture: amd64 arm64 i386 ppc64el
+Multi-Arch: same
+Homepage: http://dpdk.org/doc/guides/nics/qede.html
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Conflicts: libdpdk0
+Description: Data Plane Development Kit (librte-pmd-qede 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 the runtime libraries for librte_pmd_qede which is
+ The base driver is the backend module for the QLogic FastLinQ QL4xxxx
+ 25G/40G CNA family of adapters as well as their virtual functions (VF)
+ in SR-IOV context.
+
 Package: librte-port3
 Architecture: amd64 arm64 i386 ppc64el
 Multi-Arch: same
@@ -719,3 +783,65 @@ Description: Data Plane Development Kit (librte_pdump runtime library)
  .
  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.
+