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