#!/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