summaryrefslogtreecommitdiffstats
path: root/helper
diff options
context:
space:
mode:
authorJonathan Bauer2013-06-11 18:48:58 +0200
committerJonathan Bauer2013-06-11 18:48:58 +0200
commit653bf01809f6ea46154dbe4a1f3f8171f2a81e96 (patch)
tree445cdc312bd67d37ef91416925afbc75e36de73d /helper
parent[systemd] fix pam_systemd.so copying (wrong path at build time, so need to co... (diff)
downloadtm-scripts-653bf01809f6ea46154dbe4a1f3f8171f2a81e96.tar.gz
tm-scripts-653bf01809f6ea46154dbe4a1f3f8171f2a81e96.tar.xz
tm-scripts-653bf01809f6ea46154dbe4a1f3f8171f2a81e96.zip
[kernel] fix firmware not being copied, because of wrong paths
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
}