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>,
 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),
 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
 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}
          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.
 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
 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}
 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}
 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-acl2 (= ${binary:Version}),
          librte-cfgfile2 (= ${binary:Version}),
          librte-cmdline2 (= ${binary:Version}),
-         librte-cryptodev1 (= ${binary:Version}),
+         librte-cryptodev2 (= ${binary:Version}),
          librte-distributor1 (= ${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-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-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}),
          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-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-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-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-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.
 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.
 
  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
 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.
 
  .
  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
 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.
 
  .
  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
 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.
 
  .
  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
 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
  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}
 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
  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}
 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.
 
  .
  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
 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.
 
  .
  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.
+