|  | #!/bin/sh | 
|  | # SPDX-License-Identifier: GPL-2.0 | 
|  |  | 
|  | green='\e[0;32m' | 
|  | red='\e[0;31m' | 
|  | eol='\e[0m' | 
|  |  | 
|  | function print_usage(){ | 
|  | echo -e "${green}Script for auto test all config on/off/mod \ | 
|  | to ensure kernel build${eol}" | 
|  | echo "" | 
|  | echo -e "${red}Command for local test kernel build:${eol}" | 
|  | echo "[kernel_dir] [arch] [defconfig] mode=t\ | 
|  | ./scripts/bvt/mediatek_bvt.sh" | 
|  | echo "" | 
|  | echo -e "${green}Description:${eol}" | 
|  | echo "[kernel_dir]: kernel directory position" | 
|  | echo "[arch]: arm/arm64, position of defconfig" | 
|  | echo "[defconfig]: mediatek_debug_defconfig for all config on test" | 
|  | echo "             mediatek_config_off_defconfig \ | 
|  | for all config off test" | 
|  | echo "             mediatek_module_defconfig for all\ | 
|  | config module test" | 
|  | echo "" | 
|  | echo -e "${green}Example:${eol} ${red}kernel_dir=\$(pwd) arch=arm64 \ | 
|  | defconfig=mediatek_debug_defconfig mode=t \ | 
|  | ./scripts/bvt/mediatek_bvt.sh${eol}" | 
|  | echo "" | 
|  | echo -e "${red}Command for add and check config list:${eol}" | 
|  | echo "[commit] [kernel_dir] mode=a ./scripts/bvt/mediatek_bvt.sh" | 
|  | echo "" | 
|  | echo -e "${green}Description:${eol}" | 
|  | echo "[kernel_dir]: kernel directory position" | 
|  | echo "" | 
|  | echo -e "${green}Example:${eol} ${red}kernel_dir=\$(pwd) \ | 
|  | mode=a ./scripts/bvt/mediatek_bvt.sh${eol}" | 
|  | } | 
|  |  | 
|  | if [[ "$1" == "h" ]] || [[ "$1" == "help" ]] || [ -z "mode" ] | 
|  | then | 
|  | print_usage | 
|  | fi | 
|  |  | 
|  | if [ "$mode" == "a" ] | 
|  | then | 
|  | IFS="+" | 
|  | if [ -z "$commit" ] | 
|  | then | 
|  | bypass=$(git log --name-only -1 | grep mediatek_bvt.sh) | 
|  | log_cached=$(git show -p | grep "+CONFIG_" \ | 
|  | | grep "=y" | sed '/^$/d' | sed 's/y//g' \ | 
|  | | sed 's/\+//g' | tr '\n' '+') | 
|  | log_noncached=$(git diff | grep "+CONFIG_" \ | 
|  | | grep "=y" | sed '/^$/d' | sed 's/y//g' \ | 
|  | | sed 's/\+//g' | tr '\n' '+') | 
|  | if [ -z "$bypass" ] | 
|  | then | 
|  | for conf in ${log_cached[@]}; do | 
|  | result=\ | 
|  | $(grep $conf $kernel_dir/scripts/bvt/config_list ) | 
|  | if [ -z "$result" ] | 
|  | then | 
|  | echo ""$conf"y" >> \ | 
|  | $kernel_dir/scripts/bvt/config_list | 
|  | fi | 
|  | done | 
|  | fi | 
|  | for conf in ${log_noncached[@]}; do | 
|  | result=\ | 
|  | $(grep $conf $kernel_dir/scripts/bvt/config_list ) | 
|  | if [ -z "$result" ] | 
|  | then | 
|  | echo ""$conf"y" >> \ | 
|  | $kernel_dir/scripts/bvt/config_list | 
|  | fi | 
|  | done | 
|  | sort $kernel_dir/scripts/bvt/config_list \ | 
|  | -o $kernel_dir/scripts/bvt/config_list | 
|  | check_return=$(git status | grep config_list) | 
|  | if  [ "$check_return" == "" ] | 
|  | then | 
|  | exit 0 | 
|  | fi | 
|  | exit -1 | 
|  | else | 
|  | new_con=$(git log "$commit"..HEAD -p | grep "+CONFIG_" \ | 
|  | | grep "=y" | sed '/^$/d' | sed 's/y//g' \ | 
|  | | sed 's/\+//g' | tr '\n' '+') | 
|  | for conf in ${new_con[@]}; do | 
|  | result=\ | 
|  | $(grep $conf $kernel_dir/scripts/bvt/config_list ) | 
|  | if [ -z "$result" ] | 
|  | then | 
|  | echo ""$conf"y" >> \ | 
|  | $kernel_dir/scripts/bvt/config_list | 
|  | fi | 
|  | done | 
|  | sort $kernel_dir/scripts/bvt/config_list \ | 
|  | -o $kernel_dir/scripts/bvt/config_list | 
|  | fi | 
|  | fi | 
|  |  | 
|  | opt="" | 
|  | if [[ "$defconfig" == mediatek_config_on* ]] | 
|  | then | 
|  | opt="-e" | 
|  | fi | 
|  | if [[ "$defconfig" == mediatek_config_off* ]] | 
|  | then | 
|  | opt="-d" | 
|  | fi | 
|  | if [[ "$defconfig" == mediatek_module* ]] | 
|  | then | 
|  | opt="-m" | 
|  | fi | 
|  |  | 
|  | if [ -z "$arch" ] | 
|  | then | 
|  | arch=arm64 | 
|  |  | 
|  | def_arch=$(echo $defconfig | tail -c 13) | 
|  | echo $def_arch | 
|  | if [[ "$def_arch" == "32_defconfig" ]] | 
|  | then | 
|  | arch=arm | 
|  | fi | 
|  | fi | 
|  |  | 
|  | if [ "$mode" == "t" ] | 
|  | then | 
|  | if [[ "$defconfig" != "mediatek_debug_defconfig" ]] && \ | 
|  | [[ "$arch" == "arm64" ]] | 
|  | then | 
|  | if [ ! -f "$kernel_dir/arch/$arch/configs/$defconfig" ] | 
|  | then | 
|  | cp $kernel_dir/arch/$arch/configs/mediatek_debug_defconfig \ | 
|  | $kernel_dir/arch/$arch/configs/$defconfig | 
|  | fi | 
|  | fi | 
|  | if [[ "$defconfig" != "mediatek_debug_32_defconfig" ]] && \ | 
|  | [[ "$arch" == "arm" ]] | 
|  | then | 
|  | if [ ! -f "$kernel_dir/arch/$arch/configs/$defconfig" ] | 
|  | then | 
|  | cp $kernel_dir/arch/$arch/configs/mediatek_debug_32_defconfig \ | 
|  | $kernel_dir/arch/$arch/configs/$defconfig | 
|  | fi | 
|  | fi | 
|  | exec < $kernel_dir/scripts/bvt/config_list | 
|  |  | 
|  | IFS="=" | 
|  | while read config test | 
|  | do | 
|  | echo $config $test $opt $arch | 
|  | if [[ "$test" == "y" ]] && [[ -n "$opt" ]] | 
|  | then | 
|  | sh $kernel_dir/scripts/config --file \ | 
|  | $kernel_dir/arch/$arch/configs/$defconfig \ | 
|  | $opt $config | 
|  | fi | 
|  | done | 
|  | fi |