summaryrefslogtreecommitdiffstats
path: root/remote/setup_target
diff options
context:
space:
mode:
authorJonathan Bauer2013-07-08 14:37:38 +0200
committerJonathan Bauer2013-07-08 14:37:38 +0200
commitc2362050ff4d92705e50a79906d5e62a7954e2df (patch)
tree6f1951e627dd808e28b38f5cd7c30321369ee483 /remote/setup_target
parentMerge branch 'master' of git.openslx.org:openslx-ng/tm-scripts (diff)
downloadtm-scripts-c2362050ff4d92705e50a79906d5e62a7954e2df.tar.gz
tm-scripts-c2362050ff4d92705e50a79906d5e62a7954e2df.tar.xz
tm-scripts-c2362050ff4d92705e50a79906d5e62a7954e2df.zip
[kernel] remember last built version and if new kernel is detected, ask what to do. WARNING: KVERSION file will be missing, write the old (uname -r) under remote/modules/ksrc/KVERSION to be safe :)
Diffstat (limited to 'remote/setup_target')
-rwxr-xr-xremote/setup_target54
1 files changed, 37 insertions, 17 deletions
diff --git a/remote/setup_target b/remote/setup_target
index 1638f392..f5df66ad 100755
--- a/remote/setup_target
+++ b/remote/setup_target
@@ -227,6 +227,30 @@ generate_target() {
pinfo "Activated modules in '${TARGET}':"
pinfo "\t$(echo ${MODULES})"
+ # we need a bit of special logic for kernel specifically
+ # to check if the built version is corresponding to the
+ # current kernel version. If not we had a kernel update
+ # and need to ask the user what to do
+ if [[ "$MODULES" == *kernel* ]]; then
+ # if so, check what kernels have been built
+ if [ -e "${MODULES_DIR}/kernel/ksrc/KVERSION" ]; then
+ local BUILT_KERNEL_VERSION=$(cat "${MODULES_DIR}/kernel/ksrc/KVERSION")
+ if [[ "${BUILT_KERNEL_VERSION}" != "${KERNEL_CURRENT_VERSION}" ]]; then
+ pinfo "The built kernel (${BUILT_KERNEL_VERSION}) is older than the running one (${KERNEL_CURRENT_VERSION})!"
+ pinfo "Do you want to clean the old kernel and re-build for the new version? (Y/n)"
+ read USER_INPUT
+ if [ "x$USER_INPUT" == "xy" -o "x$USER_INPUT" == "xY" -o "x$USER_INPUT" == "x" ]; then
+ clean_kernel_module --force
+ # cleaning the module is enough as it forces to rebuild.
+ fi
+ fi
+ else
+ # KVERSION is not found.
+ pdebug "KVERSION not found under remote/modules/kernel/ksrc/KVERSION"
+ pdebug "Ignoring. If errors arise, either write your KVERSION manually or clean the kernel."
+ fi
+ fi
+
# copy basic libs
pinfo "Copying libc and ld-linux used by ${SHELL}"
tarcopy "$(list_basic_libs)" "${TARGET_BUILD_DIR}"
@@ -255,11 +279,6 @@ process_module() {
pinfo ">>>>>>>>>>>>>>>>> Processing module [ $MODULE ]"
TOOL_STR="[${MODULE}]"
if [ -d "${MODULE_DIR}" ]; then
-
- #[ "x$DEBUG" != "x1" ] \
- # && echo "Logging to ${TOOL_DIR}/${TOOL}/stage32.log" \
- # && exec 6>&1 > ${TOOL_DIR}/${TOOL}/stage32.log
- # TODO: Make above work with the new logging system (add function to logging.inc to switch logfile)
cd "${MODULE_DIR}" || perror "Module dir '${MODULE_DIR}' seems to exist, but cd to it failed."
pinfo "## Reading config"
read_config
@@ -299,10 +318,8 @@ process_module() {
copy_static_data
pinfo "## Post copy"
post_copy
- # reset pipes
- #[ "x$DEBUG" != "x1" ] && exec 1>&6 6>&-
- # TODO
- calc_size #sets MODULE_BUILD_SIZE
+ # set MODULE_BUILD_SIZE
+ calc_size
pinfo "Module completed. Total size: ${MODULE_BUILD_SIZE}"
else
pwarning "Module directory for '$MODULE' not found."
@@ -310,10 +327,8 @@ process_module() {
}
post_process_target() {
-
local TOOL_STR="$TOOL_STR post_process_target:"
-
- #move systemd files from /lib to /etc/lib
+ # move systemd files from /lib to /etc/lib
pinfo "move systemd files from /lib/systemd to /etc/systemd"
if [ -d "${TARGET_BUILD_DIR}/lib/systemd" ]; then
cd "${TARGET_BUILD_DIR}/lib"
@@ -404,12 +419,17 @@ clean_module() {
}
clean_kernel_module() {
+ local CLEAN=0
+ if [ "x$1" == "x--force" ]; then
+ CLEAN=1
+ else
+ pinfo "It will take a long time to rebuild, are you sure? [y/N]"
+ read USER_INPUT
+ [ "x$USER_INPUT" == "xy" ] && CLEAN=1
+ fi
+
pinfo "Cleaning kernel module (including sources and compiled stuff)."
- pinfo "It will take a long time to rebuild, are you sure? [y/N]"
- read USER_INPUT
- if [ "x$USER_INPUT" == "xy" ]; then
- pinfo "Confirmed, going on..."
- # clean kernel module
+ if [[ $CLEAN == 1 ]]; then
cd "${TARGET_DIR}/kernel" || perror "Could not cd to ${TARGET_DIR}/kernel"
if [ -e build ]; then
rm -rf build || perror "Could not delete ${TARGET_DIR}/kernel/build"