[TCT][scripts_tpk][Non-ACR][Feature implementation: addmod and rmmod ]
authorsri <sp.pradhan@samsung.com>
Mon, 31 Jul 2017 05:34:09 +0000 (11:04 +0530)
committershobhit verma <shobhit.v@samsung.com>
Mon, 31 Jul 2017 09:14:11 +0000 (09:14 +0000)
Signed-off-by: sri <sp.pradhan@samsung.com>
Change-Id: Ia9957c17c6b430659550907f080e926da3bfac58

scripts_tpk/tpkbuild.sh

index 938d5f4..65e0843 100755 (executable)
@@ -26,6 +26,7 @@ TC_COUNT=""
 function helpusage {
 # usage note
     echo "Usage: `basename $0` <build|install> <build_type> <module_name> <arch_type> <device_type>"
+    echo "Usage: `basename $0` <addmod|rmmod> <build_type> <module_name>"
     echo "<build_type> = itc|ctc|utc"
     echo "<arch_type> = armv7l|x86 for 32bit architecture"
     echo "<arch_type> = aarch64|x86_64 for 64bit architecture"
@@ -33,39 +34,46 @@ function helpusage {
     echo "commands description:"
     echo "       build                 performs SDK build"
     echo "       install               install packages for execution"
+    echo "       addmod                add a new 'c' module"
+    echo "       rmmod                 remove a module"
     echo "To build|install all the packages (itc,ctc and utc), usage: `basename $0` build|install <arch_type> <device_type>"
     echo "To build|install all packages of a <build_type>, usage: `basename $0` build|install <build_type> <arch_type> <device_type>"
+    echo "addmod|rmmod is specific to build_type and module_name, usage: `basename $0` <addmod|rmmod> <build_type> <module_name>"
     echo ""
     exit 1
 }
 
 INSTALL_CHILD=0
 
-if   [ "$2" = "mobile" ] || [ "$3" = "mobile" ] || [ "$4" = "mobile" ] || [ "$5" = "mobile" ]; then
-       PROFILE_TYPE="mobile"
-elif [ "$2" = "wearable" ] || [ "$3" = "wearable"  ] || [ "$4" = "wearable"  ] || [ "$5" = "wearable"  ]; then
-       PROFILE_TYPE="wearable"
-elif [ "$2" = "common_iot" ] || [ "$3" = "common_iot"  ] || [ "$4" = "common_iot"  ] || [ "$5" = "common_iot"  ]; then
-       PROFILE_TYPE="common_iot"
-elif [ "$2" = "tv" ] || [ "$3" = "tv"  ] || [ "$4" = "tv"  ] || [ "$5" = "tv"  ]; then
-       PROFILE_TYPE="tv"
-else
-       echo "Add argument 'profile type (mobile,tv,common_iot or wearable)'"
-       helpusage
+if   [ "$1" != "addmod" ] && [ "$1" != "rmmod" ]; then
+       if [ "$2" = "mobile" ] || [ "$3" = "mobile" ] || [ "$4" = "mobile" ] || [ "$5" = "mobile" ]; then
+               PROFILE_TYPE="mobile"
+       elif [ "$2" = "wearable" ] || [ "$3" = "wearable"  ] || [ "$4" = "wearable"  ] || [ "$5" = "wearable"  ]; then
+               PROFILE_TYPE="wearable"
+       elif [ "$2" = "common_iot" ] || [ "$3" = "common_iot"  ] || [ "$4" = "common_iot"  ] || [ "$5" = "common_iot"  ]; then
+               PROFILE_TYPE="common_iot"
+       elif [ "$2" = "tv" ] || [ "$3" = "tv"  ] || [ "$4" = "tv"  ] || [ "$5" = "tv"  ]; then
+               PROFILE_TYPE="tv"
+       else
+               echo "Add argument 'profile type (mobile,tv,common_iot or wearable)'"
+               helpusage
+       fi
 fi
 
-if   [ "$2" = "armv7l" ] || [ "$3" = "armv7l" ] || [ "$4" = "armv7l" ] || [ "$5" = "armv7l" ]; then
-       ARCH_TYPE="arm"
-elif [ "$2" = "x86" ] || [ "$3" = "x86"  ] || [ "$4" = "x86"  ] || [ "$5" = "x86"  ]; then
-       ARCH_TYPE="x86"
-elif [ "$2" = "aarch64" ] || [ "$3" = "aarch64"  ] || [ "$4" = "aarch64"  ] || [ "$5" = "aarch64"  ]; then
-       ARCH_TYPE="aarch64"
-elif [ "$2" = "x86_64" ] || [ "$3" = "x86_64"  ] || [ "$4" = "x86_64"  ] || [ "$5" = "x86_64"  ]; then
-       ARCH_TYPE="x86_64"
-else
-       echo "Add argument '32 bit architecture (armv7l or x86)'"
-       echo "Add argument '64 bit architecture (aarch64 or x86_64)'"
-       helpusage
+if   [ "$1" != "addmod" ] && [ "$1" != "rmmod" ]; then
+       if   [ "$2" = "armv7l" ] || [ "$3" = "armv7l" ] || [ "$4" = "armv7l" ] || [ "$5" = "armv7l" ]; then
+               ARCH_TYPE="arm"
+       elif [ "$2" = "x86" ] || [ "$3" = "x86"  ] || [ "$4" = "x86"  ] || [ "$5" = "x86"  ]; then
+               ARCH_TYPE="x86"
+       elif [ "$2" = "aarch64" ] || [ "$3" = "aarch64"  ] || [ "$4" = "aarch64"  ] || [ "$5" = "aarch64"  ]; then
+               ARCH_TYPE="aarch64"
+       elif [ "$2" = "x86_64" ] || [ "$3" = "x86_64"  ] || [ "$4" = "x86_64"  ] || [ "$5" = "x86_64"  ]; then
+               ARCH_TYPE="x86_64"
+       else
+               echo "Add argument '32 bit architecture (armv7l or x86)'"
+               echo "Add argument '64 bit architecture (aarch64 or x86_64)'"
+               helpusage
+       fi
 fi
 
 function check_tc_type {
@@ -199,13 +207,154 @@ function install_custom {
                if [ $? -ne 0 ]; then
                        cd $PWD
                        echo "------ child-package-generator script Failed to generate child packages"
-                       exit 1; 
+                       exit 1;
                fi
                cd $PWD
        fi
 
 }
 
+# d_showVar VARNAME -- print bash variable name
+function d_showVar { if [ "$ARG" == "-d" -a -n "$1" ]; then echo "d >> ${1} = ${!1}"; fi }
+# keyprompt "introductory message" -- wait until any key pressed
+function keyprompt { echo -ne "\n\e[1;31m$1 -- " && read -n 1 && echo -e "\n\e[0m"; }
+# d_bp -- breakpoint at which user need to press any key to proceed
+function d_bp { if [[ "$ARG" == "-d" ]]; then keyprompt "d >> Press any key"; fi }
+
+PROJECT_DIR="$(cd "$(dirname $0)" && pwd)"
+d_showVar PROJECT_DIR
+
+
+function add_module {
+       # argument check
+       if [ -z "$2" ]; then echo "Usage: `basename $0` addmod <build_type> <module_name>"; exit 1; fi
+       if [ $1 != "itc" ] && [ $1 != "ctc" ] && [ $1 != "utc" ]; then echo "Usage: `basename $0` addmod <build_type> <module_name> ; <build_type> = itc or ctc or utc"; exit 1; fi
+
+       BUILD_TYPE=$1
+       MODULE_NAME=$2
+
+       MODE="c"
+       LANG_NAME="c"
+       LANG_COMPILER_NAME="C"
+
+       d_showVar MODULE_NAME
+       MODULE_NAME_C=$(echo $MODULE_NAME | sed -e 's/-\([a-z]\)/\U\1/' -e 's/^\([a-z]\)/\U\1/')
+       d_showVar MODULE_NAME_C
+       MODULE_NAME_U=$(echo $MODULE_NAME | sed -e 's/-/_/g')
+       d_showVar MODULE_NAME_U
+       MODULE_LIBNAME=$2
+       d_showVar MODULE_LIBNAME
+       TAG_SPEC=$BUILD_TYPE
+       PREFIX="native"
+       if [ $1 == "utc" ]; then
+               TAG_SPEC="tests"
+               PREFIX="core"
+       fi
+
+       HEADER_TOP=$(echo $2 | tr '[:lower:]' '[:upper:]' | sed -e 's/-/_/g' -e 's/\./_/')
+       echo "Adding $BUILD_TYPE:->$MODULE_NAME module to project..."
+       d_bp
+       cd $PROJECT_DIR
+# prepare .xml file
+       echo "-- Generating packaging/$BUILD_TYPE/$PREFIX-$MODULE_NAME-$TAG_SPEC.xml manifest file"
+       LABEL=${MODULE_NAME^}
+       LABEL=`echo $LABEL | sed -e 's/-\(\w\)/\U\1/g'`
+       sed -e "s:MODULE:$MODULE_NAME:g" -e "s:LABEL:$LABEL:g" \
+       templates/src-directory/$BUILD_TYPE/$PREFIX-\[module_name\]-$TAG_SPEC.xml > packaging/$BUILD_TYPE/$PREFIX-$MODULE_NAME-$TAG_SPEC.xml
+       # prepare src directory
+       mkdir src/$BUILD_TYPE/$MODULE_NAME
+       echo "-- Generating src/$BUILD_TYPE/$MODULE_NAME/CMakeLists.txt file"
+       if [ $LANG_COMPILER_NAME == "CXX" ]; then
+               sed -e "s:%{MODULE_NAME}:$MODULE_NAME:g" -e "s:%{MODULE_LIBNAME}:$MODULE_LIBNAME:g" -e "s:%{LANG_NAME}:$LANG_NAME:g" -e "s:%{LANG_COMPILER_NAME}:$LANG_COMPILER_NAME:g" \
+        templates/src-directory/$BUILD_TYPE/CMakeLists.txt > src/$BUILD_TYPE/$MODULE_NAME/CMakeLists.txt
+       else
+               sed -e "s:%{MODULE_NAME}:$MODULE_NAME:g" -e "s:%{MODULE_LIBNAME}:$MODULE_LIBNAME:g" -e "s:%{LANG_NAME}:$LANG_NAME:g" -e "/LANG_COMPILER_NAME/d" \
+       templates/src-directory/$BUILD_TYPE/CMakeLists.txt > src/$BUILD_TYPE/$MODULE_NAME/CMakeLists.txt
+       fi
+       echo "-- Generating src/$BUILD_TYPE/$MODULE_NAME/tct-$MODULE_NAME-$PREFIX.$MODE file"
+       sed -e "s:%{MODULE_NAME}:$MODULE_NAME:g" \
+       templates/src-directory/$BUILD_TYPE/tct-\[module_name\]-$PREFIX.c > src/$BUILD_TYPE/$MODULE_NAME/tct-$MODULE_NAME-$PREFIX.$MODE
+       echo "-- Generating src/$BUILD_TYPE/$MODULE_NAME/tct-$MODULE_NAME-$PREFIX header files for mobile and wearable"
+       sed -e "s:%{MODULE_NAME_U}:$MODULE_NAME_U:g" -e "s:%{HEADER_TOP}:$HEADER_TOP:g" \
+       templates/src-directory/$BUILD_TYPE/tct-\[module_name\]-$PREFIX\_mobile.h > src/$BUILD_TYPE/$MODULE_NAME/tct-$MODULE_NAME-$PREFIX\_mobile.h
+       sed -e "s:%{MODULE_NAME_U}:$MODULE_NAME_U:g" -e "s:%{HEADER_TOP}:$HEADER_TOP:g" \
+       templates/src-directory/$BUILD_TYPE/tct-\[module_name\]-$PREFIX\_wearable.h > src/$BUILD_TYPE/$MODULE_NAME/tct-$MODULE_NAME-$PREFIX\_wearable.h
+
+       if [ $BUILD_TYPE == "itc" ]; then
+               # generate ITs file
+               echo "-- Generating src/$BUILD_TYPE/$MODULE_NAME/ITs-$MODULE_NAME.$MODE file"
+               sed -e "s:%{MODULE_NAME}:$MODULE_NAME:g" -e "s:%{MODULE_NAME_U}:$MODULE_NAME_U:g" -e "s:%{MODULE_NAME_C}:$MODULE_NAME_C:g" \
+               templates/src-directory/$BUILD_TYPE/ITs-\[module_name\].c > src/$BUILD_TYPE/$MODULE_NAME/ITs-$MODULE_NAME.$MODE
+
+               # generate Common C file
+               echo "-- Generating src/$BUILD_TYPE/$MODULE_NAME/ITs-$MODULE_NAME-common.$MODE file"
+               sed -e "s:%{MODULE_NAME}:$MODULE_NAME:g" \
+               templates/src-directory/$BUILD_TYPE/ITs-\[module_name\]-common.c > src/$BUILD_TYPE/$MODULE_NAME/ITs-$MODULE_NAME-common.$MODE
+
+               # generate Common header file
+               echo "-- Generating src/$BUILD_TYPE/$MODULE_NAME/ITs-$MODULE_NAME-common.h file"
+               sed -e "s:%{MODULE_NAME_U}:$MODULE_NAME_U:g" -e "s:%{MODULE_NAME_C}:$MODULE_NAME_C:g" -e "s:%{HEADER_TOP}:$HEADER_TOP:g" \
+               templates/src-directory/$BUILD_TYPE/ITs-\[module_name\]-common.h > src/$BUILD_TYPE/$MODULE_NAME/ITs-$MODULE_NAME-common.h
+       else
+               if [ $BUILD_TYPE == "ctc" ]; then
+                       # generate ctc file
+                       echo "-- Generating src/$BUILD_TYPE/$MODULE_NAME/CTs-$MODULE_NAME.$MODE file"
+                       sed -e "s:%{MODULE_NAME}:$MODULE_NAME:g" -e "s:%{MODULE_NAME_U}:$MODULE_NAME_U:g" -e "s:%{MODULE_NAME_C}:$MODULE_NAME_C:g" \
+                       templates/src-directory/$BUILD_TYPE/CTs-\[module_name\].c > src/$BUILD_TYPE/$MODULE_NAME/CTs-$MODULE_NAME.$MODE
+
+                       # generate Common C file
+                       echo "-- Generating src/$BUILD_TYPE/$MODULE_NAME/CTs-$MODULE_NAME-common.$MODE file"
+                       sed -e "s:%{MODULE_NAME}:$MODULE_NAME:g" \
+                       templates/src-directory/$BUILD_TYPE/CTs-\[module_name\]-common.c > src/$BUILD_TYPE/$MODULE_NAME/CTs-$MODULE_NAME-common.$MODE
+
+                       # generate Common header file
+                       echo "-- Generating src/$BUILD_TYPE/$MODULE_NAME/CTs-$MODULE_NAME-common.h file"
+                       sed -e "s:%{MODULE_NAME_U}:$MODULE_NAME_U:g" -e "s:%{MODULE_NAME_C}:$MODULE_NAME_C:g" -e "s:%{HEADER_TOP}:$HEADER_TOP:g" \
+                       templates/src-directory/$BUILD_TYPE/CTs-\[module_name\]-common.h > src/$BUILD_TYPE/$MODULE_NAME/CTs-$MODULE_NAME-common.h
+               else
+                       # generate utc file
+                       echo "-- Generating src/$BUILD_TYPE/$MODULE_NAME/utc-$MODULE_NAME.$MODE file"
+                       sed -e "s:%{MODULE_NAME}:$MODULE_NAME:g" -e "s:%{MODULE_NAME_U}:$MODULE_NAME_U:g" -e "s:%{MODULE_NAME_C}:$MODULE_NAME_C:g" \
+                       templates/src-directory/$BUILD_TYPE/utc-\[module_name\].c > src/$BUILD_TYPE/$MODULE_NAME/utc-$MODULE_NAME.$MODE
+               fi
+       fi
+       echo "Task finished successfully"
+}
+
+function rm_module {
+       # argument check
+       if [ -z "$2" ]; then echo "Usage: `basename $0` rmmod <build_type> <module_name>"; exit 1; fi
+       if [ $1 != "itc" ] && [ $1 != "ctc" ] && [ $1 != "utc" ]; then echo "Usage: `basename $0` rmmod <build_type> <module_name> ; <build_type> = itc or ctc or utc"; exit 1; fi
+
+       BUILD_TYPE=$1
+       MODULE_NAME=$2
+       d_showVar BUILD_TYPE
+       d_showVar MODULE_NAME
+       TAG_SPEC=$BUILD_TYPE
+       PREFIX="native"
+       if [ $1 == "utc" ]; then
+               TAG_SPEC="tests"
+               PREFIX="core"
+       fi
+
+       TIZEN____="tizen_native_4.0"
+
+       echo "Removing $BUILD_TYPE:->$MODULE_NAME module from project..."
+       TO_PKG_DIR="/opt/tct/$TIZEN____/packages"
+       echo "---- Updating $TO_PKG_DIR/pkg_infos/mobile_pkg_info.xml"
+       python scripts_tpk/tcpackageslistsgen.py $BUILD_TYPE $MODULE_NAME mobile $TO_PKG_DIR/pkg_infos/mobile_pkg_info.xml 1 0
+       if [ $? -ne 0 ]; then echo "Aborting..."; exit 1; fi
+       echo "---- Updating $TO_PKG_DIR/pkg_infos/wearable_pkg_info.xml"
+       python scripts_tpk/tcpackageslistsgen.py $BUILD_TYPE $MODULE_NAME wearable $TO_PKG_DIR/pkg_infos/wearable_pkg_info.xml 1 0
+       if [ $? -ne 0 ]; then echo "Aborting..."; exit 1; fi
+
+       cd $PROJECT_DIR
+       echo "-- Removing packaging/$BUILD_TYPE/$PREFIX-$MODULE_NAME-$TAG_SPEC.xml file"
+       rm packaging/$BUILD_TYPE/$PREFIX-$MODULE_NAME-$TAG_SPEC.xml
+       echo "-- Removing src/$BUILD_TYPE/$MODULE_NAME directory"
+       rm -r src/$BUILD_TYPE/$MODULE_NAME
+       echo "Task finished successfully"
+}
 
 if [ "$1" = "install_child"  ]; then
        if [[ $4 == ?(-)+([0-9]) ]]; then
@@ -219,103 +368,110 @@ fi
 
 if [ -z "$1" ]; then
        helpusage
-
+elif [ "addmod" == "$1" ]; then
+# add new module
+       if [ "$#" -gt  "3" ]; then echo "Usage: `basename $0` addmod <build_type> <module_name>"; exit 1; fi
+       add_module $2 $3
+elif [ "rmmod" == "$1" ]; then
+# remove module
+       if [ "$#" -gt  "3" ]; then echo "Usage: `basename $0` addmod <build_type> <module_name>"; exit 1; fi
+       rm_module $2 $3
 elif [ "build" == "$1" ]; then
-       
+
        if [ -d BuildLog ];then
                rm -rf BuildLog
        fi
        mkdir -p BuildLog/itc
        mkdir -p BuildLog/ctc
        mkdir -p BuildLog/utc
-       
+
        if [ "$#" -eq  "3" ]; then
                build
-       
+
        elif  [ "$#" -eq  "4" ]; then
                check_tc_type $2 $3 $4
                build $TESTCASE_TYPE
-       
+
        elif  [ "$#" -eq  "5" ]; then
                check_tc_type $2 $3 $4 $5
                MODULE_NAME=$3
                build $TESTCASE_TYPE $MODULE_NAME
-       
+
        else
                echo "Entered wrong number of arguments"
                helpusage
        fi
 
 elif [ "install" == "$1" ]; then
-       
+
        if [ "$#" -eq  "3" ]; then
                install
-       
+
        elif  [ "$#" -eq  "4" ]; then
                check_tc_type $2 $3 $4
                install $TESTCASE_TYPE
-       
+
        elif  [ "$#" -eq  "5" ]; then
                check_tc_type $2 $3 $4 $5
                MODULE_NAME=$3
                install $TESTCASE_TYPE $MODULE_NAME
-       
+
        else
                echo "Entered wrong number of arguments"
                helpusage
        fi
 
 elif [ "install_coverage" == "$1" ]; then
-       
+
        if [ "$#" -eq  "3" ]; then
                install_coverage
-       
+
        elif  [ "$#" -eq  "4" ]; then
                check_tc_type $2 $3 $4
                install_coverage $TESTCASE_TYPE
-       
+
        elif  [ "$#" -eq  "5" ]; then
                check_tc_type $2 $3 $4 $5
                MODULE_NAME=$3
                install_coverage $TESTCASE_TYPE $MODULE_NAME
-       
+
        else
                echo "Entered wrong number of arguments"
                helpusage
        fi
-       
+
 elif [ "install_child" == "$1" ]; then
-       
+
        INSTALL_CHILD=1
        if [ "$#" -eq  "4" ]; then
                install
-       
+
        elif  [ "$#" -eq  "5" ]; then
                check_tc_type $2 $3 $4
                install $TESTCASE_TYPE
-       
+
        elif  [ "$#" -eq  "6" ]; then
                check_tc_type $2 $3 $4 $5
                MODULE_NAME=$3
                install $TESTCASE_TYPE $MODULE_NAME
-       
+
        else
                echo "Entered wrong number of arguments"
                helpusage
        fi
 elif [ "install_custom" == "$1" ]; then
-       
+
        if [ "$#" -eq  "4" ]; then
                TC_COUNT=$4
                MODULE_NAME=""
                install_custom $TC_COUNT $MODULE_NAME
-       
+
        elif  [ "$#" -eq  "5" ]; then
                check_tc_type $2 $3 $4 $5
                MODULE_NAME=""
                TC_COUNT=$5
                install_custom $TC_COUNT $TESTCASE_TYPE $MODULE_NAME
-       
+
        elif  [ "$#" -eq  "6" ]; then
                check_tc_type $2 $3 $4 $5 $6
                TESTCASE_TYPE=$2