| #!/bin/bash |
| |
| #------------IMPORTANT------------# |
| #--RUN THIS SCRIPT BEFOR COMMIT---# |
| #---------------------------------# |
| |
| # Author: xiaobo.gu@amlogic.com |
| # Init version: 20160329 |
| |
| #usage: |
| # |
| #./check_compile.sh -check amlogic board configs |
| #./check_compile.sh cus -check customer board configs |
| #./check_compile.sh all -check both amlogic and customer boards |
| |
| |
| folder_board="board/amlogic/defconfigs" |
| customer_folder="customer/board/defconfigs" |
| |
| echo "************** Amlogic Compile Check Tool **************" |
| |
| # filters define: |
| # cus: all customer board |
| # all: all boards |
| # other: |
| # gxb: all gxbaby board |
| # gxtvbb: all gxtvbb board |
| # skt: all socket board |
| # p200: p200 board |
| # etc..... |
| declare filter="$1" |
| |
| # ARRAY_CFG store config names |
| declare -a ARRAY_CFG |
| declare -a ARRAY_CFG_C |
| # TOTAL_CFG store config total num |
| declare -i TOTAL_CFG |
| declare -i TOTAL_CFG_C |
| |
| # if filter!=cus, then include amlogic configs |
| # get all configs name from board folder |
| if [ "$2" != "" -a "$3" == "" ] |
| then |
| ARRAY_CFG[$TOTAL_CFG]=$2 |
| TOTAL_CFG=$TOTAL_CFG+1 |
| fi |
| if [ "$2" != "" -a "$3" != "" ] |
| then |
| ARRAY_CFG[$TOTAL_CFG]=$3 |
| TOTAL_CFG=$TOTAL_CFG+1 |
| fi |
| |
| |
| if [ "$1" != "cus" -a "$2" == "" -a "$3" == "" ] |
| then |
| filter=$1 |
| for file in ${folder_board}/*; do |
| temp_file=`basename $file` |
| # del "_defconfig" |
| temp_file=${temp_file%_*} |
| echo "$temp_file" |
| ARRAY_CFG[$TOTAL_CFG]=$temp_file |
| TOTAL_CFG=$TOTAL_CFG+1 |
| done |
| fi |
| |
| # if filter==all || filter==cus, then include customer configs |
| # get all customer configs name from customer board folder |
| if [ "$1" == "cus" ] || [ "$1" == "all" ] |
| then |
| filter="" |
| if [ -e ${customer_folder} ];then |
| for file in ${customer_folder}/*; do |
| temp_file=`basename $file` |
| temp_file=${temp_file%_*} |
| #echo $temp_file |
| ARRAY_CFG_C[$TOTAL_CFG_C]=$temp_file |
| TOTAL_CFG_C=$TOTAL_CFG_C+1 |
| done |
| fi |
| fi |
| |
| echo "************************ START *************************" |
| |
| # compile check start |
| # RESULT store compile result |
| declare RESULT="" |
| declare -i LOOP_NUM=0 |
| # counter variables |
| declare -i PASS_COUNTER=0 |
| declare -i FAIL_COUNTER=0 |
| |
| # print bar and alignment |
| declare -i BAR_TOTAL=30 |
| declare -i BAR_LOOP |
| |
| # trying fix scp task compile failure misreport issue |
| declare -i BUILD_COUNTER=3 |
| declare -i BUILD_RESULT=0 |
| |
| RESULT=$RESULT"########### Compile Check Result ###########\n" |
| |
| if [ "$1" != "cus" ] |
| then |
| RESULT=$RESULT"--------------------------------------------\n" |
| RESULT=$RESULT"############## Amlogic Boards ##############\n" |
| # loop all cfgs |
| for cfg in ${ARRAY_CFG[@]} |
| do |
| # find filter in config name |
| if [[ $(echo $cfg | grep "${filter}") == "" ]] |
| then |
| # skip !filter configs |
| continue |
| fi |
| LOOP_NUM=$LOOP_NUM+1 |
| RESULT=$RESULT' ' |
| # print '0' charactors for alignment |
| BAR_LOOP=3-`expr length $LOOP_NUM` |
| if [ "$BAR_LOOP" -gt "0" ] |
| then |
| for tmp in `seq $BAR_LOOP`;do RESULT=$RESULT'0';done |
| fi |
| RESULT=$RESULT$LOOP_NUM' ' |
| RESULT=$RESULT$cfg' ' |
| # print '-' charactors for alignment |
| BAR_LOOP=BAR_TOTAL-`expr length $cfg` |
| if [ "$BAR_LOOP" -gt "0" ] |
| then |
| for tmp in `seq $BAR_LOOP`;do RESULT=$RESULT'-';done |
| fi |
| # compile |
| BUILD_COUNTER=3 |
| BUILD_RESULT=0 |
| while [ "${BUILD_COUNTER}" -gt "0" ]; do |
| BUILD_COUNTER=$((BUILD_COUNTER - 1)) |
| make distclean |
| make $cfg'_defconfig' |
| make -j |
| # check last 'make -j' result |
| if [ $? != 0 ]; then |
| BUILD_RESULT=$((BUILD_RESULT + 1)) |
| else |
| BUILD_RESULT=0 |
| BUILD_COUNTER=0 |
| fi |
| done |
| # check compile result |
| if [ ${BUILD_RESULT} != 0 ]; then |
| RESULT=$RESULT'- failed\n' |
| FAIL_COUNTER=$FAIL_COUNTER+1 |
| else |
| RESULT=$RESULT'- pass\n' |
| PASS_COUNTER=$PASS_COUNTER+1 |
| fi |
| # print result |
| echo -e $RESULT |
| #echo $cfg |
| done |
| fi |
| |
| # check customer configs |
| if [ "$1" == "cus" ] || [ "$1" == "all" ] |
| then |
| RESULT=$RESULT"--------------------------------------------\n" |
| RESULT=$RESULT"############## Customer Boards #############\n" |
| for cfg in ${ARRAY_CFG_C[@]} |
| do |
| LOOP_NUM=$LOOP_NUM+1 |
| RESULT=$RESULT' ' |
| BAR_LOOP=3-`expr length $LOOP_NUM` |
| if [ "$BAR_LOOP" -gt "0" ] |
| then |
| for tmp in `seq $BAR_LOOP`;do RESULT=$RESULT'0';done |
| fi |
| RESULT=$RESULT$LOOP_NUM' ' |
| RESULT=$RESULT$cfg' ' |
| BAR_LOOP=BAR_TOTAL-`expr length $cfg` |
| if [ "$BAR_LOOP" -gt "0" ] |
| then |
| for tmp in `seq $BAR_LOOP`;do RESULT=$RESULT'-';done |
| fi |
| make distclean |
| make $cfg'_defconfig' |
| make -j |
| if [ $? != 0 ] |
| then |
| RESULT=$RESULT'- failed\n' |
| FAIL_COUNTER=$FAIL_COUNTER+1 |
| else |
| RESULT=$RESULT'- pass\n' |
| PASS_COUNTER=$PASS_COUNTER+1 |
| fi |
| echo -e $RESULT |
| done |
| fi |
| |
| echo -e "#################### END ###################\n" |
| |
| exit $FAIL_COUNTER |