diff options
author | Luca Boccassi <luca.boccassi@gmail.com> | 2017-08-03 16:52:37 +0100 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@gmail.com> | 2017-08-03 17:07:45 +0100 |
commit | a082152335290ddbd9014195b78f4ccfb37a90ff (patch) | |
tree | 361d53f80dbb7f502f1b94314a95760e248fba24 /debian | |
parent | d07b5b0b6b370b7c603dd90707e0dfdb03840f56 (diff) |
Copy full headers directory into SDK
The dpdk-dev SDK package is arch-dependent, as it ships a number of
binary executables.
Also using RTE_SDK does not support the multiple level of headers, so
instead of symlinking into /usr/include/dpdk copy the full set of
headers into /usr/share/dpdk/TARGET/include
Given dpkg cannot replace a symlink with a directory automatically
also generate a preinst file to handle it manually on upgrade.
Change-Id: I1fb8fbe424b8ef015c04062f2cffe9f2b9ffe02f
Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
Diffstat (limited to 'debian')
-rw-r--r-- | debian/dpdk-dev.preinst.in | 41 | ||||
-rwxr-xr-x | debian/rules | 10 |
2 files changed, 51 insertions, 0 deletions
diff --git a/debian/dpdk-dev.preinst.in b/debian/dpdk-dev.preinst.in new file mode 100644 index 00000000..027e2cf0 --- /dev/null +++ b/debian/dpdk-dev.preinst.in @@ -0,0 +1,41 @@ +#!/bin/sh +# preinst script for dpdk-dev +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <new-preinst> `install' +# * <new-preinst> `install' <old-version> +# * <new-preinst> `upgrade' <old-version> +# * <old-preinst> `abort-upgrade' <new-version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + upgrade) + # include used to be a symlink to /usr/include/dpdk but to support + # multiarch it was changed to a full copy, but dpkg will not + # substitute a symlink with a directory by itself, see #626203 + if [ -L /usr/share/dpdk/@@RTE_TARGET@@/include ] ; then + rm /usr/share/dpdk/@@RTE_TARGET@@/include + fi + ;; + + install|abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/rules b/debian/rules index 954c716c..e05f332f 100755 --- a/debian/rules +++ b/debian/rules @@ -167,6 +167,7 @@ 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 rm -f debian/dpdk-igb-uio-dkms.dkms debian/dpdk-rte-kni-dkms.dkms + rm -f debian/dpdk-dev.preinst override_dh_auto_configure: # Add support for a custom defconfig file in the debian directory. @@ -279,11 +280,20 @@ endif # system installs them in the same directory, breaking multiarch. # Move them in /usr/include/<arch>/dpdk instead. mkdir -p debian/libdpdk-dev/usr/include/$(DEB_HOST_MULTIARCH)/dpdk + # Before moving the files, remove the symlink in usr/share/dpdk and copy them over, + # as the SDK subdir is architecture specific and requires the arch-specific headers + # in the top level + rm -f debian/dpdk-dev/usr/share/dpdk/$(RTE_TARGET)/include + mkdir -p debian/dpdk-dev/usr/share/dpdk/$(RTE_TARGET)/include + cp -r debian/dpdk-dev/usr/include/dpdk/* debian/dpdk-dev/usr/share/dpdk/$(RTE_TARGET)/include + # genereate the preinst to deal with the symlink -> directory transition smoothly + sed "s/@@RTE_TARGET@@/$(RTE_TARGET)/g" debian/dpdk-dev.preinst.in > debian/dpdk-dev.preinst mv $(addprefix debian/dpdk-dev/usr/include/dpdk/,$(notdir $(wildcard lib/librte_eal/common/include/arch/$(INCLUDE_ARCH)/*.h))) \ debian/libdpdk-dev/usr/include/$(DEB_HOST_MULTIARCH)/dpdk/ mv debian/dpdk-dev/usr/include/dpdk/rte_config.h \ debian/libdpdk-dev/usr/include/$(DEB_HOST_MULTIARCH)/dpdk/ mv debian/dpdk-dev/usr/include/dpdk debian/libdpdk-dev/usr/include/ + rmdir debian/dpdk-dev/usr/include # backward compatibility: to ease things for the majority of users, # which are on x86_64, symlink the x86 headers into the global # directory. |