aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Boccassi <luca.boccassi@gmail.com>2017-08-03 16:52:37 +0100
committerLuca Boccassi <luca.boccassi@gmail.com>2017-08-03 17:18:33 +0100
commitd576b9dbe68f9f2aa1348926d5b34a35e567c8db (patch)
tree32f147b37509ec93918ba83c7e10ab0c1149fd3f
parentea1a9bc7d8af4e18b7615923c70d0be06764c311 (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>
-rw-r--r--debian/dpdk-dev.preinst.in41
-rwxr-xr-xdebian/rules10
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 b1357b24..2493f536 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.
@@ -272,11 +273,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.