#!/bin/bash #------------IMPORTANT------------# #--RUN THIS SCRIPT BEFORE 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="configs/amlogic/" 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 if [[ $cfg =~ ^c4_ ]]; then export CONFIG_AML_AARCH32=1 else export CONFIG_AML_AARCH32=0 fi LOOP_NUM=$LOOP_NUM+1 RESULT=$RESULT' ' # print '0' characters 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 '-' characters 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)) set -e 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 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 # check customer configs # check bl33z for kernel ramdump if [ -d "./bl33z" ]; then cd ./bl33z ./check.sh $cfg cd - # print again echo -e $RESULT fi echo -e "#################### END ###################\n" exit $FAIL_COUNTER