summaryrefslogtreecommitdiffstats
path: root/helper
diff options
context:
space:
mode:
Diffstat (limited to 'helper')
-rw-r--r--helper/kernel.inc26
1 files changed, 25 insertions, 1 deletions
diff --git a/helper/kernel.inc b/helper/kernel.inc
index 6901c4b4..70294357 100644
--- a/helper/kernel.inc
+++ b/helper/kernel.inc
@@ -114,14 +114,31 @@ copy_firmware() {
local FIRMWARE_LIST=""
for FIRMWARE in ${REQUIRED_FIRMWARE}; do
local FOUND=0
+ # check for firmware in the build directory of the kernel
for CANDIDATE in "${FIRMWARE_DIR}/${FIRMWARE}" "${FIRMWARE_DIR}/${KERNEL_NEW_VERSION}/${FIRMWARE}"; do
if [ -e "${CANDIDATE}" ]; then
- pdebug "Copying '${CANDIDATE}'"
+ pdebug "Copying from kernel build dir: '${CANDIDATE}'"
FIRMWARE_LIST+=" ${CANDIDATE}"
FOUND=1
fi
done
+ # if we didn't found it in the kernel build directory, check for firmware in the system firmware directory
+ if [ $FOUND -ne 1 ]; then
+ for CANDIDATE in "/${FIRMWARE_DIR}/${FIRMWARE}" "/${FIRMWARE_DIR}/${KERNEL_VERSION}/${FIRMWARE}"; do
+ if [ -e "${CANDIDATE}" ]; then
+ if [ $(echo "${CANDIDATE}" | grep -c "${KERNEL_VERSION}") -eq 0 ]; then
+ pdebug "Copying from system: '${CANDIDATE}'"
+ FIRMWARE_LIST+=" ${CANDIDATE}"
+ else
+ pdebug "Copying from system: '${CANDIDATE}' to ${FIRMWARE_DIR}/${KERNEL_NEW_VERSION}/${FIRMWARE}"
+ FIRMWARE_LIST+=" /${FIRMWARE_DIR}/${KERNEL_VERSION}/${FIRMWARE}"
+ fi
+ FOUND=1
+ fi
+ done
+ fi
+
[ $FOUND -ne 1 ] && pwarning "Neither '${FIRMWARE_DIR}/${FIRMWARE}' nor '${FIRMWARE_DIR}/${KERNEL_NEW_VERSION}/${FIRMWARE}' "\
" was found on the system. Skipping. (might cause problems on certain clients!)"
done
@@ -131,6 +148,13 @@ copy_firmware() {
pinfo "Copying $COUNT firmware to target directory."
tarcopy "${FIRMWARE_LIST}" "${TARGET_BUILD_DIR}"
fi
+
+ # post-process to fix the path of the firmwares found on the system unter /lib/firmware/$(uname -r)
+ # which have to be copied to /lib/firmware/${KERNEL_NEW_VERSION}
+ mkdir -p "${TARGET_BUILD_DIR}/lib/firmware/${KERNEL_NEW_VERSION}/"
+ mv "${TARGET_BUILD_DIR}/lib/firmware/${KERNEL_VERSION}/"* "${TARGET_BUILD_DIR}/lib/firmware/${KERNEL_NEW_VERSION}/"
+ rmdir "${TARGET_BUILD_DIR}/lib/firmware/${KERNEL_VERSION}/" || perror "something went very wrong..."
+
cd - >/dev/null
}