aboutsummaryrefslogtreecommitdiffstats
path: root/debian/prep-modules
diff options
context:
space:
mode:
authorLuca Boccassi <luca.boccassi@gmail.com>2016-08-13 12:58:30 +0100
committerLuca Boccassi <luca.boccassi@gmail.com>2016-08-15 21:02:10 +0100
commit7d052c4a68df8aa5010e240db311674a32f837c2 (patch)
tree35cd274bd055bf87f35b2decf943a95045c9bc80 /debian/prep-modules
parent12600e8bbf0b4795791954ab79ca4525b895a83d (diff)
Add optional binary kernel modules package
Add optional binary kernel modules package, disabled by default (build with DEB_BUILD_OPTIONS=kernel_modules to enable). If enabled will build kernel modules against the local, current kernel version (override by adding ksrc=<path/to/kernel/sources> to DEB_BUILD_OPTIONS) into a dpdk-modules-<kernel version> package. Useful for downstream projects that ship a complete ISO, where it is not desirable to include a whole building environment for DKMS packages. Change-Id: I7e0ab239eaf08da71f9d58d60e32abf7cd42bec4 Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
Diffstat (limited to 'debian/prep-modules')
-rwxr-xr-xdebian/prep-modules118
1 files changed, 118 insertions, 0 deletions
diff --git a/debian/prep-modules b/debian/prep-modules
new file mode 100755
index 00000000..3e1f9f88
--- /dev/null
+++ b/debian/prep-modules
@@ -0,0 +1,118 @@
+#! /bin/sh
+#
+# Copyright (c) 2009-2016 Andreas Beckmann <anbe@debian.org>
+# 2010-2016 Russ Allbery <rra@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this script. If not, see <http://www.gnu.org/licenses/>.
+#
+# This script originally comes from:
+# https://anonscm.debian.org/viewvc/pkg-nvidia/packages/nvidia-graphics-drivers/trunk/debian/module/debian/prep-modules?view=markup
+# The original copyright and license (GPL2+) can be found at:
+# https://anonscm.debian.org/viewvc/pkg-nvidia/packages/nvidia-graphics-drivers/trunk/debian/copyright?view=markup
+#
+# Prepares to build kernel modules. This script figures out and munges
+# version strings. The goal is:
+#
+# * Set the package name to dpdk-modules-$(KVERS) where $(KVERS) is the
+# major kernel revision plus the debian subrevision and whatever
+# architecture string is appropriate if building against the stock Debian
+# kernels. $(KVERS) should be identical to the version component contained
+# 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.
+#
+# * 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
+# package followed by a + and the version number of the kernel package that
+# we're building against. If the kernel package version contains an epoch,
+# try to hack our way into doing the right thing by using that epoch number
+# as our own. This isn't quite the right thing, but seems reasonably good.
+#
+# This script generates debian/control from debian/control.template using sed.
+# Unfortunately, substvars cannot be used since the name of the package is
+# modified and substvars happens too late. It also outputs debian/VERSION,
+# containing the version of the binary package.
+
+set -e
+
+if [ "$#" -ne 1 ]; then
+ echo "Usage: $0 <kernel-source-location>"
+ exit 1
+fi
+
+# We can get the kernel version from one of three places. If KVERS and KDREV
+# are both already set in the environment (which will be the case when invoked
+# by make-kpkg or module-assistant), use them. Otherwise, if we have a kernel
+# source directory that contains debian/changelog (generated by make-kpkg),
+# parse that file to find the version information. Finally, if neither works,
+# extract the kernel version from the kernel headers, append INT_SUBARCH to
+# that version if it's available, and assume a kernel package revision of -1
+# if none is provided.
+#
+# Set the variables $dpdk_kvers, which will hold the revision of the kernel,
+# and $dpdk_kdrev, which will hold the version of the kernel package that
+# we're building against.
+
+changelog="$1/debian/changelog"
+if [ -n "$KVERS" ] && [ -n "$KDREV" ]; then
+ dpdk_kvers="${KVERS}${INT_SUBARCH}"
+ dpdk_kdrev="${KDREV}"
+elif [ ! -f "$changelog" ] ; then
+ if [ -n "$KVERS" ] ; then
+ dpdk_kvers="$KVERS"
+ else
+ dpdk_kvers=`perl debian/kernel-version "$1"`
+ fi
+ if [ -z "$KDREV" ] ; then
+ dpdk_kdrev="${dpdk_kvers}-1"
+ else
+ dpdk_kvers="${dpdk_kvers}${INT_SUBARCH}"
+ dpdk_kdrev="${KDREV}"
+ fi
+else
+ if [ -n "$KVERS" ] ; then
+ dpdk_kvers="$KVERS"
+ else
+ dpdk_kvers=`head -1 "$changelog" \
+ | sed -e 's/.*source-\([^ ]*\) (\([^)]*\)).*/\1/'`
+ fi
+ dpdk_kdrev=`head -1 "$changelog" \
+ | sed -e 's/.*source-\([^ ]*\) (\([^)]*\)).*/\2/'`
+fi
+
+# Sanitize.
+dpdk_kvers="$(echo "$dpdk_kvers" | tr _ -)"
+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
+
+# 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
+# if present. Then, concatenate the source version, '+', and the kernel
+# package revision without the epoch.
+
+dpdk_version=`head -1 debian/changelog | sed -e 's/.*(\([^)]*\)).*/\1/'`
+dpdk_epoch=`echo ${dpdk_kdrev} | sed -n -e 's/^\([0-9]*\):.*/\1/p'`
+dpdk_version="${dpdk_version}+`echo ${dpdk_kdrev} | sed 's/^[0-9]*://'`"
+if [ -n "$dpdk_epoch" ] ; then
+ dpdk_version="${dpdk_epoch}:${dpdk_version}"
+fi
+
+echo "$dpdk_version" > debian/VERSION