#! /bin/sh # # Copyright (c) 2009-2016 Andreas Beckmann # 2010-2016 Russ Allbery # # 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 . # # 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 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 # 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 " 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 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}" 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 -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 # 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