blob: ac7ba68eb45f92bef13ebc42ae22aa1dbe04104a [file] [log] [blame]
#!/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