Merge branch '16.11.x' into 17.05.x 02/7202/1
authorLuca Boccassi <luca.boccassi@gmail.com>
Mon, 19 Jun 2017 12:21:21 +0000 (13:21 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Mon, 19 Jun 2017 12:21:46 +0000 (13:21 +0100)
Conflicts:
app/test-pmd/parameters.c
app/test-pmd/testpmd.c
debian/changelog
debian/control
debian/patches/fix-vhost-user-socket-permission.patch
debian/rules
doc/guides/cryptodevs/qat.rst
doc/guides/nics/thunderx.rst
doc/guides/rel_notes/release_16_11.rst
drivers/net/i40e/i40e_rxtx_vec_neon.c
drivers/net/ixgbe/ixgbe_rxtx.c
drivers/net/mlx5/mlx5_rxtx.c
drivers/net/nfp/nfp_net.c
drivers/net/qede/qede_ethdev.c
drivers/net/thunderx/nicvf_struct.h
drivers/net/virtio/virtio_ethdev.c
drivers/net/virtio/virtio_pci.c
drivers/net/virtio/virtio_pci.h
drivers/net/virtio/virtio_user/virtio_user_dev.c
drivers/net/virtio/virtio_user/virtio_user_dev.h
drivers/net/virtio/virtio_user_ethdev.c
examples/dpdk_qat/main.c
examples/performance-thread/l3fwd-thread/main.c
examples/quota_watermark/qw/init.c
lib/librte_eal/bsdapp/eal/eal_pci.c
lib/librte_eal/common/include/rte_version.h
lib/librte_vhost/socket.c
lib/librte_vhost/vhost.c
lib/librte_vhost/vhost.h
pkg/dpdk.spec
test/test/test_mempool.c

Change-Id: I04809b1bcf4ecee4c171c5acb60a8a8aac8cc4a8
Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
1  2 
debian/changelog
debian/control
debian/rules

diff --combined debian/changelog
@@@ -1,23 -1,37 +1,57 @@@
 +dpdk (17.05-1~git1) UNRELEASED; urgency=medium
 +
 +  * New Upstream release 17.05; For a full list of changes (LP: #1691661)
 +    see http://dpdk.org/doc/guides/rel_notes/release_17_05.html
 +    - adapt to use MAJOR_ABI configuration to avoid the sub-lib abi
 +      version breakage of the past.
 +    - add d/update-helper* to update d/control and d/*.symbols for new versions
 +    - adapt to new build trigger and location of tests; provide further
 +      test tools (testacl, testpipeline) together with the already
 +      provided "test" tool in /usr/share/dpdk/test/ of dpdk-dev.
 +      Note: testpmd is installed "officially" by install-sdk and therefore
 +      stays separate from other test tools.
 +    - updated library arch availability/dependency: librte-kni is
 +      available on ppc64el; librte-pmd-i40e on all arches;
 +      librte-pmd-fm10k gone on ppc64el
 +    - package the 19 new sub-libs / pmds that are now built by default
 +    - rename and update symbols files to match the update to DPDK 17.05
 +
 + -- Christian Ehrhardt <christian.ehrhardt@canonical.com>  Tue, 16 May 2017 15:38:17 +0200
 +
+ dpdk (16.11.2-1~git1) UNRELEASED; urgency=medium
+   [ Christian Ehrhardt ]
+   * Merge stable update to 16.11.2; For a list of changes
+     see http://dpdk.org/ml/archives/announce/2017-May/000131.html
+   * Dropped changes - patches that were included in 16.11.2 stable:
+     - d/p/kni-fix-build-with-kernel-4.11.patch
+     - d/p/nicvf-0002-net-thunderx-fix-32-bit-build.patch
+     - d/p/nicvf-0006-mk-fix-lib-filtering-when-linking-app.patch
+     - d/p/nicvf-0008-net-thunderx-fix-stats-access-out-of-bounds.patch
+     - d/p/nicvf-0010-net-thunderx-fix-deadlock-in-Rx-path.patch
+   [ Luca Boccassi ]
+   * Optionally generate libdpdk-dbgsym metapackage that depends on every
+     librte/PMD binary package's dbgsym. Keep it disabled by default, and
+     let users choose to enable it by passing dbgsym_meta via DEB_BUILD_OPTIONS.
+     Thanks Jan Blunck for the patch!
+   * Generate dependency list of libdpdk-dev to all librte and PMDs packages
+     dynamically at build time.
+   * Generate list of recommends for dpdk dynamically at build time.
+   * dpdk-modules-$KVERS: depend on same kernel version used to build rather than
+     just recommend - in-kernel API/ABI is not stable.
+   * Support for building packages for the new mempool framework has been added.
+     In 17.05 and newer a mempool framework was added, that has to be loaded
+     like a PMD. So any "plugin" will be linked in RTE_EAL_PMD_PATH just like
+     the PMDs. No mempool plugins are built for now, so it is currently a no-op.
+   * Drop libethdev4, librte-cryptodev1 and librte-eal2 transitional packages,
+     no longer needed.
+   * Fix some upstream documentation links in the packages metadata.
+     Thanks Chas Williams!
+   * Fix building debugging symbols for -dbgsym packages. Thanks Chas Williams!
+  -- Christian Ehrhardt <christian.ehrhardt@canonical.com>  Thu, 08 Jun 2017 10:05:44 -0600
  dpdk (16.11.1-1~git1) UNRELEASED; urgency=medium
  
    [ Christian Ehrhardt ]
      see http://dpdk.org/ml/archives/dev/2017-March/058930.html
    * dpdk.conf: add info about unwanted effects of multiple hugepage
      mountpoints
+   * d/p/dpdk-dev-v3-eal-sPAPR-IOMMU-support-in-pci-probing-for-vfio-pci-
+     in-ppc64le.patch: sPAPR IOMMU based pci probing enabled for vfio-pci
+     devices.
+   * enable librte-pmd-i40e1 for ppc64el
+     - debian/control: enable arch onpackage
+     - d/p/dpdk-dev-v4-i40e-implement-vector-PMD-for-altivec.patch: add i40e
+       PMD / vector PMD implementation and enable by default on ppc64el
+   * fix library availability/dependency
+     - librte-kni is built on ppc64el, fix dependency from libdpdk-dev
+     - librte-pmd-fm10k1 is not built on ppc64el (empty pkg atm) adapt arch
+     - librte-pmd-i40e is built on all architectures now
+   * Fix up thunderx to make arm support useful on more devices (LP: #1691659)
+     - d/p/nicvf-00[01-10]* backports of 17.02/17.05 fixes for thunderx
+     - d/control: dependencies and package for librte-pmd-thunderx-nicvf
+     - d/librte-pmd-thunderx-nicvf1.symbols: tracking library symbols
+   * fix dpdk-rte-kni dkms issues with kernel 4.11 (LP: #1691830)
+     - d/p/kni-fix-build-with-kernel-4.11.patch: fix pci_enable_msix usage
+     - d/p/kni-fix-ethtool-build-with-kernel-4.11.patch: Use new signal header
+   * ensure man pages are bundled with executables on all architectures
+   * d/p/fix-vhost-user-socket-permission.patch: updated to work with newer
+     openvswitch versions
  
    [ Luca Boccassi ]
    * Simplify debian/rules by using upstream's install target
      and Debian's multiarch dir. Thanks Jan Blunck!
    * Clarify that only the kni and igb_uio kernel modules are
      distributed exclusively under the GPL2 in debian/copyright
+   * Add new DEB_BUILD_OPTIONS "nodoc" to allow users to avoid
+     building the DPDK documentation
+   * Add new DEB_BUILD_OPTIONS "nostatic" to allow users to avoid
+     building the DPDK static libraries
+   * Add try-restart to dpdk.init script
+   * Update Standards-Version to 4.0.0
  
   -- Christian Ehrhardt <christian.ehrhardt@canonical.com>  Thu, 08 Dec 2016 16:58:37 +0100
  
diff --combined debian/control
@@@ -20,7 -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
@@@ -35,39 -35,7 +35,7 @@@ Depends: 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-packet17.05 (= ${binary:Version}),
-             librte-pmd-ark17.05 (= ${binary:Version}),
-             librte-pmd-avp17.05 (= ${binary:Version}) [amd64],
-             librte-pmd-bnxt17.05 (= ${binary:Version}),
-             librte-pmd-bond17.05 (= ${binary:Version}),
-             librte-pmd-crypto-scheduler17.05 (= ${binary:Version}),
-             librte-pmd-cxgbe17.05 (= ${binary:Version}),
-             librte-pmd-e1000-17.05 (= ${binary:Version}),
-             librte-pmd-ena17.05 (= ${binary:Version}),
-             librte-pmd-enic17.05 (= ${binary:Version}) [amd64 arm64 i386],
-             librte-pmd-fm10k17.05 (= ${binary:Version}) [amd64 i386],
-             librte-pmd-i40e17.05 (= ${binary:Version}),
-             librte-pmd-ixgbe17.05 (= ${binary:Version}) [amd64 arm64 i386],
-             librte-pmd-kni17.05 (= ${binary:Version}) [amd64 arm64 ppc64el],
-             librte-pmd-lio17.05 (= ${binary:Version}),
-             librte-pmd-nfp17.05 (= ${binary:Version}),
-             librte-pmd-null-crypto17.05 (= ${binary:Version}),
-             librte-pmd-null17.05 (= ${binary:Version}),
-             librte-pmd-octeontx-ssovf17.05 (= ${binary:Version}),
-             librte-pmd-pcap17.05 (= ${binary:Version}),
-             librte-pmd-qede17.05 (= ${binary:Version}),
-             librte-pmd-ring17.05 (= ${binary:Version}),
-             librte-pmd-sfc-efx17.05 (= ${binary:Version}) [amd64],
-             librte-pmd-skeleton-event17.05 (= ${binary:Version}),
-             librte-pmd-sw-event17.05 (= ${binary:Version}),
-             librte-pmd-tap17.05 (= ${binary:Version}),
-             librte-pmd-thunderx-nicvf17.05 (= ${binary:Version}),
-             librte-pmd-vhost17.05 (= ${binary:Version}),
-             librte-pmd-virtio17.05 (= ${binary:Version}),
-             librte-pmd-vmxnet3-uio17.05 (= ${binary:Version}) [amd64 arm64 i386],
-             librte-pmd-xenvirt17.05 (= ${binary:Version}) [amd64 arm64 i386]
+ Recommends: ${librte:Recommends},
  Suggests: dpdk-doc,
            dpdk-igb-uio-dkms (= ${binary:Version}),
            dpdk-rte-kni-dkms (= ${binary:Version}),
@@@ -137,71 -105,7 +105,7 @@@ Architecture: amd64 arm64 i386 ppc64e
  Multi-Arch: same
  Pre-Depends: ${misc:Pre-Depends}
  Depends: libpcap-dev,
-          librte-acl17.05 (= ${binary:Version}),
-          librte-bitratestats17.05 (= ${binary:Version}),
-          librte-cfgfile17.05 (= ${binary:Version}),
-          librte-cmdline17.05 (= ${binary:Version}),
-          librte-cryptodev17.05 (= ${binary:Version}),
-          librte-distributor17.05 (= ${binary:Version}),
-          librte-eal17.05 (= ${binary:Version}),
-          librte-efd17.05 (= ${binary:Version}),
-          librte-ethdev17.05 (= ${binary:Version}),
-          librte-eventdev17.05 (= ${binary:Version}),
-          librte-hash17.05 (= ${binary:Version}),
-          librte-ip-frag17.05 (= ${binary:Version}),
-          librte-jobstats17.05 (= ${binary:Version}),
-          librte-kni17.05 (= ${binary:Version}) [amd64 arm64 ppc64el],
-          librte-kvargs17.05 (= ${binary:Version}),
-          librte-latencystats17.05 (= ${binary:Version}),
-          librte-lpm17.05 (= ${binary:Version}),
-          librte-mbuf17.05 (= ${binary:Version}),
-          librte-mempool-ring17.05 (= ${binary:Version}),
-          librte-mempool17.05 (= ${binary:Version}),
-          librte-mempool-stack17.05 (= ${binary:Version}),
-          librte-meter17.05 (= ${binary:Version}),
-          librte-metrics17.05 (= ${binary:Version}),
-          librte-net17.05 (= ${binary:Version}),
-          librte-pdump17.05 (= ${binary:Version}),
-          librte-pipeline17.05 (= ${binary:Version}),
-          librte-pmd-af-packet17.05 (= ${binary:Version}),
-          librte-pmd-ark17.05 (= ${binary:Version}),
-          librte-pmd-avp17.05 (= ${binary:Version}) [amd64],
-          librte-pmd-bnxt17.05 (= ${binary:Version}),
-          librte-pmd-bond17.05 (= ${binary:Version}),
-          librte-pmd-crypto-scheduler17.05 (= ${binary:Version}),
-          librte-pmd-cxgbe17.05 (= ${binary:Version}),
-          librte-pmd-e1000-17.05 (= ${binary:Version}),
-          librte-pmd-ena17.05 (= ${binary:Version}),
-          librte-pmd-enic17.05 (= ${binary:Version}) [amd64 arm64 i386],
-          librte-pmd-fm10k17.05 (= ${binary:Version}) [amd64 i386],
-          librte-pmd-i40e17.05 (= ${binary:Version}),
-          librte-pmd-ixgbe17.05 (= ${binary:Version}) [amd64 arm64 i386],
-          librte-pmd-kni17.05 (= ${binary:Version}) [amd64 arm64 ppc64el],
-          librte-pmd-lio17.05 (= ${binary:Version}),
-          librte-pmd-nfp17.05 (= ${binary:Version}),
-          librte-pmd-null-crypto17.05 (= ${binary:Version}),
-          librte-pmd-null17.05 (= ${binary:Version}),
-          librte-pmd-octeontx-ssovf17.05 (= ${binary:Version}),
-          librte-pmd-pcap17.05 (= ${binary:Version}),
-          librte-pmd-qede17.05 (= ${binary:Version}),
-          librte-pmd-ring17.05 (= ${binary:Version}),
-          librte-pmd-sfc-efx17.05 (= ${binary:Version}) [amd64],
-          librte-pmd-skeleton-event17.05 (= ${binary:Version}),
-          librte-pmd-sw-event17.05 (= ${binary:Version}),
-          librte-pmd-tap17.05 (= ${binary:Version}),
-          librte-pmd-thunderx-nicvf17.05 (= ${binary:Version}),
-          librte-pmd-vhost17.05 (= ${binary:Version}),
-          librte-pmd-virtio17.05 (= ${binary:Version}),
-          librte-pmd-vmxnet3-uio17.05 (= ${binary:Version}) [amd64 arm64 i386],
-          librte-pmd-xenvirt17.05 (= ${binary:Version}) [amd64 arm64 i386],
-          librte-port17.05 (= ${binary:Version}),
-          librte-power17.05 (= ${binary:Version}),
-          librte-reorder17.05 (= ${binary:Version}),
-          librte-ring17.05 (= ${binary:Version}),
-          librte-sched17.05 (= ${binary:Version}),
-          librte-table17.05 (= ${binary:Version}),
-          librte-timer17.05 (= ${binary:Version}),
-          librte-vhost17.05 (= ${binary:Version}),
+          ${librte:Depends},
           ${misc:Depends}
  Description: Data Plane Development Kit (basic development files)
   DPDK is a set of libraries for fast packet processing. Applications run
   build external applications which will also require at least SSE3 support
   when running.
  
 -Package: librte-ethdev5
 +Package: librte-ethdev17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__ethdev_8h.html
@@@ -224,10 -128,10 +128,10 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for libethdev.
  
 -Package: librte-acl2
 +Package: librte-acl17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
- Homepage: http://dpdk.org/doc/api/rte__ethdev_8h.html
+ Homepage: http://dpdk.org/doc/api/rte__acl_8h.html
  Pre-Depends: ${misc:Pre-Depends}
  Depends: ${misc:Depends}, ${shlibs:Depends}
  Conflicts: libdpdk0
@@@ -237,7 -141,7 +141,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_acl.
  
 -Package: librte-cfgfile2
 +Package: librte-cfgfile17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__cfgfile_8h.html
@@@ -250,9 -154,10 +154,9 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_cfgfile.
  
 -Package: librte-cmdline2
 +Package: librte-cmdline17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
 -Homepage: http://dpdk.org/doc/api/cmdline_8h.html
  Pre-Depends: ${misc:Pre-Depends}
  Depends: ${misc:Depends}, ${shlibs:Depends}
  Conflicts: libdpdk0
@@@ -262,7 -167,7 +166,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_cmdline.
  
 -Package: librte-cryptodev2
 +Package: librte-cryptodev17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__cryptodev_8h.html
@@@ -275,7 -180,7 +179,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_cryptodev.
  
 -Package: librte-distributor1
 +Package: librte-distributor17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__distributor_8h.html
@@@ -288,7 -193,7 +192,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_distributor.
  
 -Package: librte-eal3
 +Package: librte-eal17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__eal_8h.html
@@@ -301,7 -206,7 +205,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_eal.
  
 -Package: librte-hash2
 +Package: librte-hash17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__hash_8h.html
@@@ -314,7 -219,7 +218,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_hash.
  
 -Package: librte-ip-frag1
 +Package: librte-ip-frag17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__ip__frag_8h.html
@@@ -327,7 -232,7 +231,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_ip_frag.
  
 -Package: librte-jobstats1
 +Package: librte-jobstats17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__jobstats_8h_source.html
@@@ -340,7 -245,7 +244,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_jobstats.
  
 -Package: librte-kni2
 +Package: librte-kni17.05
  Architecture: amd64 arm64 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__kni_8h.html
@@@ -353,7 -258,7 +257,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_kni.
  
 -Package: librte-kvargs1
 +Package: librte-kvargs17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__kvargs_8h.html
@@@ -366,7 -271,7 +270,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_kvargs.
  
 -Package: librte-lpm2
 +Package: librte-lpm17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__lpm_8h.html
@@@ -379,7 -284,7 +283,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_lpm.
  
 -Package: librte-mbuf2
 +Package: librte-mbuf17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__mbuf_8h.html
@@@ -392,7 -297,7 +296,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_mbuf.
  
 -Package: librte-mempool2
 +Package: librte-mempool17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__mempool_8h.html
@@@ -405,7 -310,7 +309,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_mempool.
  
 -Package: librte-meter1
 +Package: librte-meter17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__meter_8h.html
@@@ -418,7 -323,7 +322,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_meter.
  
 -Package: librte-pipeline3
 +Package: librte-pipeline17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__pipeline_8h.html
@@@ -431,7 -336,7 +335,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pipeline.
  
 -Package: librte-net1
 +Package: librte-net17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/prog_guide/overview.html?highlight=librte_net#librte-net
@@@ -449,7 -354,7 +353,7 @@@ Description: Data Plane Development Ki
   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
 +Package: librte-pmd-af-packet17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/browse/dpdk/tree/drivers/net/af_packet
@@@ -462,9 -367,10 +366,9 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_af_packet.
  
 -Package: librte-pmd-bnxt1
 +Package: librte-pmd-bnxt17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
 -Homepage: http://dpdk.org/doc/guides/nics/bnxt.html
  Pre-Depends: ${misc:Pre-Depends}
  Depends: ${misc:Depends}, ${shlibs:Depends}
  Conflicts: libdpdk0
@@@ -474,7 -380,7 +378,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_bnxt.
  
 -Package: librte-pmd-bond1
 +Package: librte-pmd-bond17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.html
@@@ -487,7 -393,7 +391,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_bond.
  
 -Package: librte-pmd-cxgbe1
 +Package: librte-pmd-cxgbe17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/cxgbe.html
@@@ -500,7 -406,7 +404,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_cxgbe.
  
 -Package: librte-pmd-e1000-1
 +Package: librte-pmd-e1000-17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/e1000em.html
@@@ -513,7 -419,7 +417,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_e1000.
  
 -Package: librte-pmd-ena1
 +Package: librte-pmd-ena17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/ena.html
@@@ -526,7 -432,7 +430,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_ena.
  
 -Package: librte-pmd-enic1
 +Package: librte-pmd-enic17.05
  Architecture: amd64 arm64 i386
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/enic.html
@@@ -539,7 -445,7 +443,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_enic.
  
 -Package: librte-pmd-fm10k1
 +Package: librte-pmd-fm10k17.05
  Architecture: amd64 i386
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/fm10k.html
@@@ -552,7 -458,7 +456,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_fm10k.
  
 -Package: librte-pmd-i40e1
 +Package: librte-pmd-i40e17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/i40e.html
@@@ -565,7 -471,7 +469,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_i40e.
  
 -Package: librte-pmd-ixgbe1
 +Package: librte-pmd-ixgbe17.05
  Architecture: amd64 arm64 i386
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/ixgbe.html
@@@ -578,7 -484,7 +482,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_ixgbe.
  
 -Package: librte-pmd-null-crypto1
 +Package: librte-pmd-null-crypto17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/cryptodevs/null.html
@@@ -591,7 -497,7 +495,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_null_crypto.
  
 -Package: librte-pmd-null1
 +Package: librte-pmd-null17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/browse/dpdk/tree/drivers/net/null
@@@ -604,7 -510,7 +508,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_null.
  
 -Package: librte-pmd-pcap1
 +Package: librte-pmd-pcap17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/pcap_ring.html#libpcap-based-pmd
@@@ -617,7 -523,7 +521,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_pcap.
  
 -Package: librte-pmd-ring2
 +Package: librte-pmd-ring17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/pcap_ring.html#rings-based-pmd
@@@ -630,7 -536,7 +534,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_ring.
  
 -Package: librte-pmd-vhost1
 +Package: librte-pmd-vhost17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/vhost.html
@@@ -643,7 -549,7 +547,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_vhost.
  
 -Package: librte-pmd-virtio1
 +Package: librte-pmd-virtio17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/virtio.html
@@@ -656,7 -562,7 +560,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_virtio.
  
 -Package: librte-pmd-vmxnet3-uio1
 +Package: librte-pmd-vmxnet3-uio17.05
  Architecture: amd64 arm64 i386
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/vmxnet3.html
@@@ -669,7 -575,7 +573,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_vmxnet3_uio.
  
 -Package: librte-pmd-xenvirt1
 +Package: librte-pmd-xenvirt17.05
  Architecture: amd64 arm64 i386
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/xen/pkt_switch.html#xen-pmd-frontend-prerequisites
@@@ -682,7 -588,7 +586,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pmd_xenvirt.
  
 -Package: librte-pmd-qede1
 +Package: librte-pmd-qede17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/guides/nics/qede.html
@@@ -698,7 -604,7 +602,7 @@@ Description: Data Plane Development Ki
   25G/40G CNA family of adapters as well as their virtual functions (VF)
   in SR-IOV context.
  
 -Package: librte-port3
 +Package: librte-port17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__port_8h.html
@@@ -711,7 -617,7 +615,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_port.
  
 -Package: librte-power1
 +Package: librte-power17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__power_8h.html
@@@ -724,7 -630,7 +628,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_power.
  
 -Package: librte-reorder1
 +Package: librte-reorder17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__reorder_8h.html
@@@ -737,7 -643,7 +641,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_reorder.
  
 -Package: librte-ring1
 +Package: librte-ring17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__ring_8h.html
@@@ -750,7 -656,7 +654,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_ring.
  
 -Package: librte-sched1
 +Package: librte-sched17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__sched_8h.html
@@@ -763,7 -669,7 +667,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_sched.
  
 -Package: librte-table2
 +Package: librte-table17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__table_8h.html
@@@ -776,7 -682,7 +680,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_table.
  
 -Package: librte-timer1
 +Package: librte-timer17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Homepage: http://dpdk.org/doc/api/rte__timer_8h.html
@@@ -789,10 -695,10 +693,10 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_timer.
  
 -Package: librte-vhost3
 +Package: librte-vhost17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
- Homepage: http://dpdk.org/doc/api/rte__virtio__net_8h.html
+ Homepage: http://dpdk.org/doc/api/rte__vhost_8h.html
  Pre-Depends: ${misc:Pre-Depends}
  Depends: ${misc:Depends}, ${shlibs:Depends}
  Conflicts: libdpdk0
@@@ -802,7 -708,7 +706,7 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_vhost.
  
 -Package: librte-pdump1
 +Package: librte-pdump17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Pre-Depends: ${misc:Pre-Depends}
@@@ -814,230 -720,15 +718,231 @@@ Description: Data Plane Development Ki
   .
   This package contains the runtime libraries for librte_pdump.
  
 -Package: librte-pmd-thunderx-nicvf1
 +Package: librte-bitratestats17.05
  Architecture: amd64 arm64 i386 ppc64el
  Multi-Arch: same
  Pre-Depends: ${misc:Pre-Depends}
  Depends: ${misc:Depends}, ${shlibs:Depends}
 -Conflicts: libdpdk
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_bitratestats 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_bitratestats.
 +
 +Package: librte-efd17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_efd 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_efd.
 +
 +Package: librte-eventdev17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_eventdev 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_eventdev.
 +
 +Package: librte-latencystats17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_latencystats 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_latencystats.
 +
 +Package: librte-mempool-ring17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_mempool_ring 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_mempool_ring.
 +
 +Package: librte-mempool-stack17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_mempool_stack 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_mempool_stack.
 +
 +Package: librte-metrics17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_metrics 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_metrics.
 +
 +Package: librte-pmd-ark17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_ark 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_ark.
 +
 +Package: librte-pmd-avp17.05
 +Architecture: amd64
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_avp 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_avp.
 +
 +Package: librte-pmd-crypto-scheduler17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_crypto_scheduler 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_crypto_scheduler.
 +
 +Package: librte-pmd-kni17.05
 +Architecture: amd64 arm64 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_kni 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_kni.
 +
 +Package: librte-pmd-lio17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_lio 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_lio.
 +
 +Package: librte-pmd-nfp17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_nfp 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_nfp.
 +
 +Package: librte-pmd-octeontx-ssovf17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_octeontx_ssovf 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_octeontx_ssovf.
 +
 +Package: librte-pmd-sfc-efx17.05
 +Architecture: amd64
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_sfc_efx 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_sfc_efx.
 +
 +Package: librte-pmd-skeleton-event17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_skeleton_event 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_skeleton_event.
 +
 +Package: librte-pmd-sw-event17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_sw_event 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_sw_event.
 +
 +Package: librte-pmd-tap17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
 +Description: Data Plane Development Kit (librte_pmd_tap 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_tap.
 +
 +Package: librte-pmd-thunderx-nicvf17.05
 +Architecture: amd64 arm64 i386 ppc64el
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Conflicts: libdpdk0
  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.
diff --combined debian/rules
index 04a9d02,9d2d3b9..4d17188
mode 100644,100755..100644
@@@ -5,7 -5,7 +5,7 @@@ export DH_VERBOSE=
  export DH_OPTIONS=-v
  
  VERSION := $(shell dpkg-parsechangelog | sed -nr '/^Version:/s/Version: (.*:)?(.*)-(.*)/\2/p')
- ABIVERSION := "$(VERSION).0"
+ DPDK_ABI := $(shell echo $(VERSION) | cut -d '.'  -f1-2)
  
  # see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
  include /usr/share/dpkg/default.mk
@@@ -38,6 -38,7 +38,7 @@@ ifeq (yes, $(dpkg_version_lt)
  endif
  
  export RTE_DEVEL_BUILD=n
+ export EXTRA_CFLAGS+=-g
  
  # People rebuilding this package can overwrite DPDK_CONFIG, RTE_MACHINE and
  # RTE_TARGET via DEB_BUILD_OPTIONS if they like
@@@ -72,8 -73,19 +73,19 @@@ DPDK_SHARED_DIR = "debian/build/shared-
  # now stable with parallel comilation, so support -j
  ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
      PAR := $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+     MAKEFLAGS += -j$(PAR)
+ endif
+ ifneq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS)))
+ BUILD_DOCS=n
+ else
+ BUILD_DOCS=y
+ endif
+ ifneq (,$(findstring nostatic,$(DEB_BUILD_OPTIONS)))
+ BUILD_STATIC_LIB=n
  else
-     PAR := "1"
+ BUILD_STATIC_LIB=y
  endif
  
  # kernel_modules can be passed via DEB_BUILD_OPTIONS to enable building the
@@@ -102,12 -114,6 +114,6 @@@ DPDK_CONFIG_BUILD_KMOD=
  # dpkg-genchanges, and also would require a lot of overrides for debhelpers.
  get_built_using       ?= $(filter-out (=),$(shell dpkg-query -f='$${source:Package} (=$${source:Version})' -W $1))
  
- override_dh_gencontrol:
-       dh_gencontrol
-       dh_gencontrol -p dpdk-modules-$(KVERS) -- \
-               -v`cat debian/VERSION` \
-               -V'built:using:kernel=$(call get_built_using,linux-headers-$(KVERS))'
  build:
        @if [ x"$(KVERS)" = x ] ; then \
            echo 'No version in $(KSRC)/include/linux/version.h' >&2; \
@@@ -121,18 -127,42 +127,42 @@@ endi
  %:
        dh $@ --with python2,dkms
  
+ override_dh_gencontrol:
+       dh_gencontrol
+       # debian/files will not exist until dh_gencontrol has ran at least once,
+       # so we need to run gencontrol for libdpdk-dev and libdpdk-dbgsym after.
+       # The list of libraries and PMDs is everchanging, so generate the dependency
+       # list for libdpdk-dev to avoid having to maintain it manually.
+       # Same for the recommends list for dpdk, were we want the PMDs and the mempools.
+       dh_gencontrol -p libdpdk-dev -- -V"librte:Depends=`grep -E 'librte-*' ./debian/files | grep -v dbgsym | tr '_' ' ' | awk '{ print $$1,"(=",$$2 ")" }' | paste -sd ',' - | sed -e 's/,/, /g'`"
+       dh_gencontrol -p dpdk -- -V"librte:Recommends=`grep -E 'librte-(pmd|mempool).*' ./debian/files | grep -v dbgsym | tr '_' ' ' | awk '{ print $$1,"(=",$$2 ")" }' | paste -sd ',' - | sed -e 's/,/, /g'`"
+ ifneq (,$(findstring kernel_modules,$(DEB_BUILD_OPTIONS)))
+       dh_gencontrol -p dpdk-modules-$(KVERS) -- \
+               -v`cat debian/VERSION` \
+               -V'built:using:kernel=$(call get_built_using,linux-headers-$(KVERS))'
+ endif
+ ifneq (,$(findstring dbgsym_meta,$(DEB_BUILD_OPTIONS)))
+       ./debian/dh-dbgsym-metapkg libdpdk$(DPDK_ABI)-dbgsym
+ endif
+ # dbgsym_meta can be passed via DEB_BUILD_OPTIONS to enable building the
+ # optional dbgsym meta package libdpdk<ABI>-dbgsym.
+ # This is not built by default as it would go in main but depend on
+ # packages in the debian-debug archive.
+ # Debian Developers and FTP masters strongly discourage this.
+ # We provide this optional flag as a convenience for rebuilders.
+ ifneq (,$(findstring dbgsym_meta,$(DEB_BUILD_OPTIONS)))
+ override_dh_builddeb:
+       dh_builddeb
+       dh_builddeb -plibdpdk$(DPDK_ABI)-dbgsym
+ endif
  override_dh_auto_clean:
        rm -rf debian/build debian/tmp debian/dpdk-modules-* \
                debian/control.modules debian/VERSION
        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)))
@@@ -146,7 -176,6 +176,7 @@@ endi
  ifeq (,$(filter dpdk_config=%,$(DEB_BUILD_OPTIONS)))
        sed -ri -e 's,(RTE_MACHINE=).*,\1$(RTE_MACHINE),' \
                -e 's,(RTE_NEXT_ABI=).*,\1n,' \
-               -e 's,(CONFIG_RTE_MAJOR_ABI=).*,\1$(ABIVERSION),' \
++              -e 's,(CONFIG_RTE_MAJOR_ABI=).*,\1$(DPDK_ABI),' \
                -e 's,(CONFIG_RTE_EAL_IGB_UIO=).*,\1$(DPDK_CONFIG_BUILD_KMOD),' \
                -e 's,(CONFIG_RTE_KNI_KMOD=).*,\1$(DPDK_CONFIG_BUILD_KMOD),' \
                -e 's,(LIBRTE_PMD_PCAP=).*,\1y,' \
@@@ -161,17 -190,22 +191,22 @@@ endi
        dh_auto_configure
  
  override_dh_auto_build-indep:
-       $(MAKE) -j $(PAR) V=$(DH_VERBOSE) O=$(DPDK_STATIC_DIR) doc-api-html doc-guides-html \
-               doc-guides-man
+ ifeq (y,$(BUILD_DOCS))
+       $(MAKE) V=$(DH_VERBOSE) O=$(DPDK_STATIC_DIR) doc-api-html doc-guides-html
+ endif
  
  override_dh_auto_install-indep:
        # Package: dpdk-doc
        # All files based on the install-doc rule (includes examples)
+ ifeq (y,$(BUILD_DOCS))
        $(MAKE) V=$(DH_VERBOSE) O=$(DPDK_STATIC_DIR) prefix=/usr \
                DESTDIR=debian/dpdk-doc install-doc
+ endif
  
  override_dh_auto_build-arch:
-       $(MAKE) -j $(PAR) V=$(DH_VERBOSE) O=$(DPDK_STATIC_DIR) RTE_KERNELDIR=$(KSRC) build
+ ifeq (y,$(BUILD_STATIC_LIB))
+       $(MAKE) V=$(DH_VERBOSE) O=$(DPDK_STATIC_DIR) RTE_KERNELDIR=$(KSRC) build
+ endif
        # Unfortunately the decision about having static or shared libraries is
        # made for the whole build, which then produces only .a or .so files
        # (but not both).
        cp -a $(DPDK_STATIC_DIR) $(DPDK_SHARED_DIR)
        sed -ri 's,(RTE_BUILD_SHARED_LIB=).*,\1y,' \
                $(DPDK_SHARED_DIR)/.config
-       $(MAKE) -j $(PAR) V=$(DH_VERBOSE) O=$(DPDK_SHARED_DIR) RTE_KERNELDIR=$(KSRC) build
-       $(MAKE) -j $(PAR) V=$(DH_VERBOSE) O=$(DPDK_SHARED_DIR) RTE_KERNELDIR=$(KSRC) test-build
+       $(MAKE) V=$(DH_VERBOSE) O=$(DPDK_SHARED_DIR) RTE_KERNELDIR=$(KSRC) build
+ ifeq (y,$(BUILD_DOCS))
+       # need to be around for dh_installman to be picked up
+       $(MAKE) V=$(DH_VERBOSE) O=$(DPDK_SHARED_DIR) RTE_KERNELDIR=$(KSRC) doc-guides-man
+ endif
  
  override_dh_auto_install-arch: LIBDIR=/usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
  override_dh_auto_install-arch:
        # Package: dpdk (runtime)
+ ifeq (y,$(BUILD_STATIC_LIB))
        $(MAKE) V=$(DH_VERBOSE) O=$(DPDK_STATIC_DIR) prefix=/usr libdir=$(LIBDIR) \
                DESTDIR=debian/dpdk install-runtime
+ endif
        $(MAKE) V=$(DH_VERBOSE) O=$(DPDK_SHARED_DIR) prefix=/usr libdir=$(LIBDIR) \
                DESTDIR=debian/dpdk install-runtime
        mkdir -p debian/dpdk/etc/dpdk
                debian/dpdk-dev/usr/share/dpdk/dpdk-sdk-env.sh
        # include the bundled autotest suite to be usable from the dpdk-dev package
        mkdir -p debian/dpdk-dev/usr/share/dpdk/test
 -      cp -a app/test/autotest* debian/dpdk-dev/usr/share/dpdk/test
 +      cp -a test/test/autotest* debian/dpdk-dev/usr/share/dpdk/test
        cp $(DPDK_SHARED_DIR)/app/test debian/dpdk-dev/usr/share/dpdk/test/
 +      cp $(DPDK_SHARED_DIR)/app/testacl debian/dpdk-dev/usr/share/dpdk/test/
 +      cp $(DPDK_SHARED_DIR)/app/testpipeline debian/dpdk-dev/usr/share/dpdk/test/
        # since we move libs to multiarch dirs update the non aware symlink
        rm debian/dpdk-dev/usr/share/dpdk/$(RTE_TARGET)/lib
        ln -rs debian/dpdk-dev/$(LIBDIR)/ \
        mkdir -p debian/libdpdk-dev/usr/include
        mv debian/dpdk-dev/usr/include/dpdk debian/libdpdk-dev/usr/include/
        # all static libs are in the dev package
+ ifeq (y,$(BUILD_STATIC_LIB))
        mv debian/dpdk/$(LIBDIR)/lib*.a debian/libdpdk-dev/$(LIBDIR)/
+ endif
        # symlinks to last .so's are in the non versioned libdpdk-dev as well
        # this allows multiple libdpdk-<NAME><VER> at different VER concurrently
        # libdpdk-dev depends on all sublibs so symlinks are never broken
        # Package(s): libdpdk-<NAME><VER> (bare runtime libs)
        for lib in $$(ls -1 debian/dpdk/$(LIBDIR)/*.so.*); do \
          BN=$$(basename $${lib}); \
 -        VER=$$(echo $${BN} | sed -e 's/^.*\.so\.//'); \
 -        LN=$$(echo $${BN} | sed -e 's/\.so\.[0-9]*$$//' | tr '_' '-'); \
 +        LN=$$(echo $${BN} | sed -e 's/\.so\.[0-9\.]*$$//' | tr '_' '-'); \
          if echo $${LN} | grep -q ".*[0-9]$$"; then \
 -          PKG=$${LN}-$${VER}; \
 +          PKG=$${LN}-$(VERSION); \
          else \
 -          PKG=$${LN}$${VER}; \
 +          PKG=$${LN}$(VERSION); \
          fi; \
          LIBF="$$(basename $${lib})"; \
          LIBD="debian/$${PKG}/$(LIBDIR)"; \
 -        echo "moving $${lib} for library $${PKG}"; \
 +        echo "moving $${lib} to dir $${LIBD} (PKG=$${PKG} BN=$${BN} LN={$${LN} LIBF=$${LIBF} LIBD=$${LIBD})"; \
          mkdir -p $${LIBD}; \
          mv $${lib} $${LIBD}; \
          if [ "$${LIBF#librte_pmd_}x" != "$${LIBF}x" ]; then \
            echo "PMD: linking $${LIBF} into RTE_EAL_PMD_PATH at $${LIBD}/dpdk-pmds/"; \
            ln -s --relative --target-directory=$${LIBD}/dpdk-pmds/ $${LIBD}/$${LIBF}; \
          fi; \
+         if [ "$${LIBF#librte_mempool_}x" != "$${LIBF}x" ]; then \
+           mkdir -p $${LIBD}/dpdk-pmds; \
+           echo "MEMPOOL: linking $${LIBF} into RTE_EAL_PMD_PATH at $${LIBD}/dpdk-pmds/"; \
+           ln -s --relative --target-directory=$${LIBD}/dpdk-pmds/ $${LIBD}/$${LIBF}; \
+         fi; \
          if [ "$${LIBF#librte_eal}x" != "$${LIBF}x" ]; then \
            mkdir -p $${LIBD}/dpdk-pmds; \
          fi; \
@@@ -279,15 -324,6 +326,6 @@@ ifneq (,$(KVERS)
                DESTDIR=debian/dpdk-modules-$(KVERS) install-kmod
  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)