41b5353338
Looks like there are some bashims in the script. Make this explicit in the script until they can be taken out. This fixes failures to run this script on Ubuntu when dash is the default shell. Signed-off-by: Shaun Ruffell <sruffell@digium.com> Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
124 lines
4.3 KiB
Bash
Executable File
124 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
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
|