[dahdi-commits] dahdi/linux.git branch "master" updated.
SVN commits to the DAHDI project
dahdi-commits at lists.digium.com
Thu Dec 12 16:09:27 CST 2013
branch "master" has been updated
via d536c3e203a5613f5e91c5a9556057bd2eb5331e (commit)
from 2e7acd212e430bd42234baa98de9616d71140e1e (commit)
Summary of changes:
build_tools/dkms-helper | 123 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 123 insertions(+)
create mode 100755 build_tools/dkms-helper
- Log -----------------------------------------------------------------
commit d536c3e203a5613f5e91c5a9556057bd2eb5331e
Author: Shaun Ruffell <sruffell at digium.com>
Date: Wed Jun 5 17:31:02 2013 -0500
build_tools/dkms-helper: Helper script for DKMS integration.
DKMS (Dynamic Kernel Module Support) [1] provides a mechanism where kernel
modules can be automatically updated when a new kernel is booted. This is a
simple helper script to automate the process of adding dahdi-linux to the local
DKMS system.
[1] http://linux.dell.com/dkms/
Signed-off-by: Shaun Ruffell <sruffell at digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
diff --git a/build_tools/dkms-helper b/build_tools/dkms-helper
new file mode 100755
index 0000000..bb92eaa
--- /dev/null
+++ b/build_tools/dkms-helper
@@ -0,0 +1,123 @@
+#!/bin/sh
+
+set -e
+
+DKMS=$(which dkms)
+
+usage() {
+ echo "$(basename $0): Helper functions for DKMS (Dynamic Kernel Module Support)"
+ echo "Usage: $0 [add|remove|generate_conf]"
+ echo "Options:"
+ echo " remove -a : Remove all versions of DAHDI for all kernels."
+ echo ""
+ echo "Examples:"
+ echo ""
+ echo " build_tools/dkms-helper add"
+ echo " Installs the current version of DAHDI into the DKMS system."
+ echo ""
+ echo " build_tools/dkms-helper remove"
+ echo " Removes the current version of DAHDI from all kernels."
+ echo ""
+ echo " build_tools/dkms-helper generate_conf > dkms.conf"
+ echo " Create a dkms.conf based on the currently compiled kernel"
+ echo " modules. This is also done as part of add and is not"
+ echo " normally needed as a separate step."
+ echo ""
+ echo "NOTE: Because firmware files could be different between different"
+ echo "versions of DAHDI, and the firmware files are installed into the common"
+ echo "/lib/firmware directory, you should remove a given version of DAHDI from all"
+ echo "kernels before installing a new version of DAHDI to avoid potential"
+ echo "conflicts."
+ echo ""
+}
+
+generate_configuration() {
+ echo 'PACKAGE_NAME="dahdi-linux"'
+ echo "PACKAGE_VERSION=\"$(build_tools/make_version .)\""
+ echo 'MAKE="make KSRC=/lib/modules/${kernelver}/build"'
+ echo 'CLEAN="make clean"'
+ echo 'AUTOINSTALL="yes"'
+ let "module_number=0" || true
+ for file in $(find ./ -type f -name "*.ko"); do
+ MODULE_LOCATION=$(dirname $file | cut -d\/ -f 2-)
+ echo "BUILT_MODULE_NAME[$module_number]=\"$(basename $file .ko)\""
+ echo "BUILT_MODULE_LOCATION[$module_number]=\"$MODULE_LOCATION\""
+ echo "DEST_MODULE_LOCATION[$module_number]=\"/kernel/dahdi/$(echo $MODULE_LOCATION | cut -d\/ -f 3-)\""
+ let "module_number=${module_number}+1" || true
+ done
+ if [ $module_number -eq 0 ]; then
+ echo "WARNING: You should build the modules before generating a config." >&2
+ exit 1
+ fi
+}
+
+add() {
+ GIT=$(which git)
+ VERSION="$(build_tools/make_version .)"
+ if [ $(id -u) != "0" ]; then
+ echo "You must run $0 as root."
+ exit 1
+ fi
+ echo "Building for version ${VERSION}"
+ make > /dev/null
+ echo "Copying to /usr/src/dahdi-linux-${VERSION}"
+ if [ ! -d /usr/src/dahdi-linux-${VERSION} ]; then
+ if [ -d .git ]; then
+ ${GIT} checkout-index -a --prefix=/usr/src/dahdi-linux-${VERSION}/
+ else
+ cp -f -r * /usr/src/dahdi-linux-${VERSION}/
+ fi
+ fi
+ make -C /usr/src/dahdi-linux-${VERSION} install-firmware firmware-loaders
+ build_tools/dkms-helper generate_conf > /usr/src/dahdi-linux-${VERSION}/dkms.conf
+ echo $VERSION > /usr/src/dahdi-linux-${VERSION}/.version
+ ${DKMS} add -m dahdi-linux -v ${VERSION}
+ ${DKMS} build -m dahdi-linux -v ${VERSION}
+ ${DKMS} install --force -m dahdi-linux -v ${VERSION}
+}
+
+remove() {
+ if [ $(id -u) != "0" ]; then
+ echo "You must run $0 as root."
+ exit 1
+ fi
+ REMOVE_ALL=false
+ shift
+ while getopts "a" opt; do
+ case $opt in
+ a) REMOVE_ALL=true ;;
+ *) echo "Unknown option to remove" ; exit 1;;
+ esac
+ done
+ if [ $REMOVE_ALL == true ]; then
+ # Remove all installed dahdi versions for all kernels.
+ for version in $(${DKMS} status -m dahdi-linux | cut -d, -f 2 | sed -e "s/^\s\+//"); do
+ echo "Removing version ${version}"
+ ${DKMS} remove -m dahdi-linux -v ${version} --all
+ rm -f -r /usr/src/dahdi-linux-${version}
+ done
+ else
+ # Just remove the version for the current tree.
+ GIT=$(which git)
+ VERSION="$(build_tools/make_version .)"
+ ${DKMS} remove -m dahdi-linux -v ${VERSION} --all
+ if [ -e /usr/src/dahdi-linux-${VERSION}/dkms.conf ]; then
+ rm -f -r /usr/src/dahdi-linux-${VERSION}
+ else
+ echo "/usr/src/dahdi-linux-${VERSION} not a dkms dir?"
+ exit 1
+ fi
+ fi
+}
+
+# Run the command...
+shift $(($OPTIND-1))
+COMMAND=$1
+case $COMMAND in
+ add) add $*; exit $? ;;
+ remove) remove $* ; exit $? ;;
+ generate_conf) generate_configuration; exit $? ;;
+ *) echo "unknown command $0" ; usage; exit 1;;
+esac
+
+exit 0
-----------------------------------------------------------------------
--
dahdi/linux.git
More information about the dahdi-commits
mailing list