Generate libdpdk-dev dependencies and dpdk recommends
[deb_dpdk.git] / debian / control
index 5a7e68d..57f41d7 100644 (file)
@@ -3,7 +3,7 @@ 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>,
+           Santiago Ruano Rincón <santiagorr@riseup.net>
 Build-Depends: debhelper (>= 9),
                dh-python,
                dh-systemd (>= 1.5),
@@ -20,7 +20,7 @@ Build-Depends: debhelper (>= 9),
                python-sphinx-rtd-theme,
                texlive-fonts-recommended,
                texlive-latex-extra
-Standards-Version: 3.9.8
+Standards-Version: 4.0.0
 Section: libs
 Homepage: http://www.dpdk.org
 Vcs-Git: https://gerrit.fd.io/r/deb_dpdk
@@ -29,33 +29,18 @@ Vcs-Browser: https://gerrit.fd.io/r/gitweb?p=deb_dpdk.git
 Package: dpdk
 Section: admin
 Architecture: amd64 arm64 i386 ppc64el
-Depends: lsb-base (>= 3.2-14),
+Depends: hwdata,
+         lsb-base (>= 3.2-14),
          pciutils,
-         python-pyelftools,
-         hwdata,
          ${misc:Depends},
          ${python:Depends},
          ${shlibs:Depends}
-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}) [amd64 i386],
-         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-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: linux-image-generic, dpdk-igb-uio-dkms (= ${binary:Version}), dpdk-rte-kni-dkms (= ${binary:Version})
+Recommends: ${librte:Recommends},
+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.
@@ -119,52 +104,9 @@ Section: libdevel
 Architecture: amd64 arm64 i386 ppc64el
 Multi-Arch: same
 Pre-Depends: ${misc:Pre-Depends}
-Depends: ${misc:Depends},
-         libpcap-dev,
-         libethdev4 (= ${binary:Version}),
-         librte-acl2 (= ${binary:Version}),
-         librte-cfgfile2 (= ${binary:Version}),
-         librte-cmdline2 (= ${binary:Version}),
-         librte-cryptodev1 (= ${binary:Version}),
-         librte-distributor1 (= ${binary:Version}),
-         librte-eal2 (= ${binary:Version}),
-         librte-hash2 (= ${binary:Version}),
-         librte-ip-frag1 (= ${binary:Version}),
-         librte-jobstats1 (= ${binary:Version}),
-         librte-kni2 (= ${binary:Version}) [amd64 arm64],
-         librte-kvargs1 (= ${binary:Version}),
-         librte-lpm2 (= ${binary:Version}),
-         librte-mbuf2 (= ${binary:Version}),
-         librte-mempool2 (= ${binary:Version}),
-         librte-meter1 (= ${binary:Version}),
-         librte-pdump1 (= ${binary:Version}),
-         librte-pipeline3 (= ${binary:Version}),
-         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}) [amd64 i386],
-         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-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],
-         librte-port3 (= ${binary:Version}),
-         librte-power1 (= ${binary:Version}),
-         librte-reorder1 (= ${binary:Version}),
-         librte-ring1 (= ${binary:Version}),
-         librte-sched1 (= ${binary:Version}),
-         librte-table2 (= ${binary:Version}),
-         librte-timer1 (= ${binary:Version}),
-         librte-vhost3 (= ${binary:Version})
+Depends: libpcap-dev,
+         ${librte:Depends},
+         ${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.
@@ -173,7 +115,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
@@ -224,7 +166,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
@@ -250,7 +192,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
@@ -393,6 +335,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
@@ -484,7 +444,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}
@@ -497,7 +457,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}
@@ -626,6 +586,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
@@ -742,3 +718,77 @@ Description: Data Plane Development Kit (librte_pdump runtime library)
  .
  This package contains the runtime libraries for librte_pdump.
 
+Package: librte-pmd-thunderx-nicvf1
+Architecture: amd64 arm64 i386 ppc64el
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Conflicts: libdpdk
+Description: Data Plane Development Kit (librte_pmd_thunderx_nicvf 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_thunderx_nicvf.
+
+# 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 compatibility 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 compatibility link for an older version of 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 compatibility link for an older version of the
+ runtime libraries for librte_eal.
+