diff options
author | Luca Boccassi <luca.boccassi@gmail.com> | 2016-08-13 12:58:30 +0100 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@gmail.com> | 2016-08-15 21:02:10 +0100 |
commit | 7d052c4a68df8aa5010e240db311674a32f837c2 (patch) | |
tree | 35cd274bd055bf87f35b2decf943a95045c9bc80 /debian/prep-modules | |
parent | 12600e8bbf0b4795791954ab79ca4525b895a83d (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-x | debian/prep-modules | 118 |
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 |