diskimage-builder/elements/dkms/post-install.d/99-dkms
Ben Nemec 381ff6ab1d Fix set -eu and pipefail failures
Fixes problems found by set -eu and pipefail, including:
-Many unset variables
-Commands that can fail under normal circumstances, which breaks
with set -e.  This change swallows those expected errors to allow
our existing error code to handle them.
-The dkms element was not finding Fedora kernel versions correctly.
This may be an issue for other distros too, but since Fedora was
working fine without this functionality I only changed it to print
a warning message rather than failing the build when it happens.
-The ramdisk init script will not be set -eu because if it fails
the result is a kernel panic, which can be tricky to debug.
However, in testing with set -e a few failing commands were found
and have been fixed in this patch.

Change-Id: I44cf98dfc80cfcaec54b88cc83be80a3dbf2cec3
2014-04-15 20:53:15 -05:00

27 lines
736 B
Bash
Executable File

#!/bin/bash
# Trigger a run of dkms for all the modules installed
# to ensure we have valid modules build for all.
modules=$(dkms status | tr ',:' ' ' | awk '{ print $1 "/" $2 }')
kernels=$(ls /usr/src/linux-headers-*-*-* -d | sed -e 's|/usr/src/linux-headers-||' || echo "")
# NOTE(bnemec): On Fedora, the versions can be found in /usr/src/kernels
if [ -z "$kernels" ]; then
kernels=$(ls /usr/src/kernels/* -d | sed -e 's|/usr/src/kernels/||' || echo "")
fi
if [ -z "$kernels" ]; then
echo "Warning: No kernel versions found for DKMS"
fi
__ARCH=$ARCH
unset ARCH
for module in $modules ; do
for kernel in $kernels ; do
dkms build $module -k $kernel
dkms install $module -k $kernel
done
done
ARCH=$__ARCH
dkms status