diff options
author | 2017-06-12 15:52:53 +0100 | |
---|---|---|
committer | 2017-06-12 18:00:59 +0100 | |
commit | 7e67194fcc89ecaeea59fbc0b33807e24854a673 (patch) | |
tree | 0e190f100c00ec270d7e0e904fd78f9870f6ead5 | |
parent | 8e085c53da268eb35edf1a521aade6348a9562aa (diff) |
Set strict dependency on kernel version
The in-kernel API/ABI is (intentionally) not stable, so the binary
kernel modules package must strictly depend on the same kernel that
it was built against.
Change-Id: I85cd6d465678e7693fb33659e3b4525730992cb0
Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
-rw-r--r-- | debian/control.modules.in | 2 | ||||
-rwxr-xr-x | debian/prep-modules | 17 |
2 files changed, 12 insertions, 7 deletions
diff --git a/debian/control.modules.in b/debian/control.modules.in index dd1d9f83..88141546 100644 --- a/debian/control.modules.in +++ b/debian/control.modules.in @@ -1,8 +1,8 @@ Package: dpdk-modules-#KVERS# Section: kernel Architecture: amd64 arm64 i386 +Depends: linux-image-#KVERS# #KDREV# Provides: dpdk-modules -Recommends: linux-image-#KVERS# Conflicts: dpdk-igb-uio-dkms, dpdk-rte-kni-dkms Built-Using: ${built:using:kernel} Description: Data Plane Development Kit (rte kni, igb uio modules) diff --git a/debian/prep-modules b/debian/prep-modules index 3e1f9f88..0caf81ed 100755 --- a/debian/prep-modules +++ b/debian/prep-modules @@ -31,10 +31,10 @@ # in the Debian kernel package names (in other words, the ABI version, not # the package version). # -# * Make the package recommend linux-image-$(KVERS) as appropriate for the -# kernel version that we're building against. Use recommend rather than -# depends since the user may have built their own kernel outside of the -# Debian package infrastructure. +# * Make the package depend on linux-image-$(KVERS) (= version) as appropriate +# for the kernel version that we're building against. Use depend as the +# kernel ABI is not stable and it's not guaranteed that a module built +# against a version of the headers will work under a different kernel. # # * Save the version number of the binary package in debian/VERSION for later # use by dh_gencontrol. This will be the version number of the source @@ -79,7 +79,12 @@ elif [ ! -f "$changelog" ] ; then dpdk_kvers=`perl debian/kernel-version "$1"` fi if [ -z "$KDREV" ] ; then - dpdk_kdrev="${dpdk_kvers}-1" + set +e + dpdk_kdrev=`dpkg-query -W -f='${Version}\n' linux-headers-${dpdk_kvers} 2> /dev/null` + if [ $? -ne 0 ] ; then + dpdk_kdrev="${dpdk_kvers}-1" + fi + set -e else dpdk_kvers="${dpdk_kvers}${INT_SUBARCH}" dpdk_kdrev="${KDREV}" @@ -101,7 +106,7 @@ dpdk_kdrev="$(echo "$dpdk_kdrev" | tr _ -)" # Generate the control file from the template. -sed "s/#KVERS#/${dpdk_kvers}/g" debian/control.modules.in > debian/control.modules +sed -e "s/#KVERS#/${dpdk_kvers}/g" -e "s/#KDREV#/(= ${dpdk_kdrev})/g" debian/control.modules.in > debian/control.modules # Now, calcuate the binary package version. Extract the epoch from the kernel # package revision and add it to the beginning of the binary package version |