From 653bf01809f6ea46154dbe4a1f3f8171f2a81e96 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Tue, 11 Jun 2013 18:48:58 +0200 Subject: [kernel] fix firmware not being copied, because of wrong paths --- helper/kernel.inc | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'helper') 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 } -- cgit v1.2.3-55-g7522