Kernel integration: make kernel preparation automatically 04/163504/5
authorAlexander Aksenov <a.aksenov@samsung.com>
Mon, 11 Dec 2017 14:48:55 +0000 (17:48 +0300)
committerAlexander Aksenov <a.aksenov@samsung.com>
Wed, 13 Dec 2017 13:01:34 +0000 (16:01 +0300)
Change-Id: Ice36cbc45cfb4303af86782d9db0aa78d68dbeca
Signed-off-by: Alexander Aksenov <a.aksenov@samsung.com>
kernel_integration/sync_swap_to_kernel.sh

index dbc61dc90d7ef2e3c63d580b62396b03049c9900..2fa5d6d797374fde79a2a88f00e0f2dbf017debb 100755 (executable)
@@ -214,7 +214,7 @@ update_modules()
 
        # remove modules from kernel
        kmodules_dir=$KERNEL_DIR/$MODULES_SUBDIR/
-       CALL git rm -r "$kmodules_dir" > /dev/null
+       CALL git rm -r --ignore-unmatch "$kmodules_dir" > /dev/null
 
        CALL cd $SWAP_DIR
        files=$(CALL git ls-files modules/)
@@ -272,10 +272,10 @@ update_hooks() {
 
        # remove old hooks
        CALL cd $KERNEL_DIR
-       CALL git rm -r $KERNEL_DIR/include/swap/ > /dev/null
-       CALL git rm -r $HOOKS_SUBDIR > /dev/null
-       CALL git rm $KERNEL_DIR/kernel/swap/Makefile > /dev/null
-       CALL git rm $KERNEL_DIR/kernel/swap/Kconfig > /dev/null
+       CALL git rm -r --ignore-unmatch $KERNEL_DIR/include/swap/ > /dev/null
+       CALL git rm -r --ignore-unmatch $HOOKS_SUBDIR > /dev/null
+       CALL git rm --ignore-unmatch $KERNEL_DIR/kernel/swap/Makefile > /dev/null
+       CALL git rm --ignore-unmatch $KERNEL_DIR/kernel/swap/Kconfig > /dev/null
 
        # copy new hooks
        CALL cd $SWAP_DIR
@@ -348,9 +348,45 @@ set_subdirs() {
        fi
 }
 
+prepare_kernel() {
+       if [ -z $CONFIG_FILE ]; then
+               if [ ! -d $KERNEL_DIR/kernel/swap ]; then
+                       echo "#"
+                       echo "# Kernel config file is not specified! Add necessary data by yourself"
+                       echo "#"
+               fi
+               return
+       fi
+
+       OUTPUT=$(cat $CONFIG_FILE | grep SWAP_DA)
+
+       if [ ! -z "$OUTPUT" ]; then
+               return
+       fi
+
+       CALL echo "#" >> $CONFIG_FILE
+       CALL echo "# SWAP subsystem for Dynamic Analyzer" >> $CONFIG_FILE
+       CALL echo "#" >> $CONFIG_FILE
+       CALL echo "CONFIG_SWAP_DA=y" >> $CONFIG_FILE
+       CALL echo "CONFIG_SWAP_KERNEL_IMMUTABLE=y" >> $CONFIG_FILE
+       CALL echo "CONFIG_SWAP_HOOK_TASKDATA=y" >> $CONFIG_FILE
+       CALL echo "CONFIG_SWAP_HOOK_USAUX=y" >> $CONFIG_FILE
+       CALL echo "CONFIG_SWAP_HOOK_SYSCALL=y" >> $CONFIG_FILE
+       CALL echo "CONFIG_SWAP_HOOK_SWITCH_TO=y" >> $CONFIG_FILE
+       CALL echo "CONFIG_SWAP_HOOK_ENERGY=y" >> $CONFIG_FILE
+       CALL echo "CONFIG_SWAP_HOOK_FILE_OPS=y" >> $CONFIG_FILE
+       CALL echo "CONFIG_SWAP_HOOK_SIGNAL=y" >> $CONFIG_FILE
+
+       CONF_NAME=$(basename $CONFIG_FILE)
+       author="$(git config --global user.name) <$(git config --global user.email)>"
+
+       CALL git add $CONFIG_FILE
+       git commit --author="$(echo -e $author)" -m "SWAP-DA: enable SWAP DA in $CONF_NAME"
+}
+
 main() {
        if [ "$#" -lt 2 ] ; then
-               echo "Usage: $0 <swap_dir> <kernel_dir>"
+               echo "Usage: $0 <swap_dir> <kernel_dir> [kernel_config_file]"
                exit 1
        fi
 
@@ -358,6 +394,17 @@ main() {
        SWAP_DIR=$(readlink -f $1)
        KERNEL_DIR=$(readlink -f $2)
 
+       if [ -n $3 ]; then
+               CONFIG_FILE=$3
+       else
+               CONFIG_FILE=""
+       fi
+
+       CALL cd $KERNEL_DIR
+
+       # prepare kernel for SWAP
+       prepare_kernel
+
        # set subdir variables
        set_subdirs