#!/bin/bash # syntax ./boundary_insert_if CONFIG_1 CONFIG_2 #insert CONFIG_1 if CONFIG_2 is already present in .h file, and remove from .h file #i.e. ./boundary_move CONFIG_PHY_MICREL CONFIG_PHY_MICREL_KSZ9021 insert_configs=$1; check_config=$2; boards=`ls -d board/boundary/* | sed 's.board/boundary/..'`; numboards=0; numsuccess=0; numfailures=0; skipped=0; for board in ${boards} ; do update_cnt=0; already_there=0; target=""; defconfigs=""; hfile=""; if [ -e board/boundary/${board}/Kconfig ] ; then target=`grep '^if TARGET_' board/boundary/${board}/Kconfig | sed 's.if ..'`; echo board=${board} target=${target}; hfile=`grep -A1 SYS_CONFIG_NAME board/boundary/${board}/Kconfig | grep default | sed 's.default "..' | sed 's."..' | sed 's/[ \x09]*//'`; defconfigs=`git grep -w CONFIG_${target} configs/ | sed 's.configs/..'| sed 's/_defconfig:.*$//'`; fi board_cfgs=":" for defconfig in ${defconfigs} ; do cfgs="" for insert_config in ${insert_configs} ; do if [[ ${insert_config} == *=* ]] ; then cnt=`sed -n "/${insert_config}/=" configs/${defconfig}_defconfig` else cnt=`sed -n "/${insert_config}=/=" configs/${defconfig}_defconfig` fi if [ "${cnt}" != "" ] ; then already_there=`expr $already_there + 1`; else cfgs="${cfgs} ${insert_config}" fi done cnt=`sed -n "/${check_config}/=" include/configs/${hfile}.h` if [ "${cnt}" == "" ] ; then cfgs="" fi if [ "${cfgs}" != "" ] ; then make ${defconfig}_defconfig; for insert_config in ${cfgs} ; do if [[ ${insert_config} == *=* ]] ; then echo "${insert_config}" >>.config; else echo "${insert_config}=y" >>.config; fi done make savedefconfig; diff -q defconfig configs/${defconfig}_defconfig; if [ $? -eq 0 ] ; then already_there=`expr $already_there + 1`; else if [ $? -eq 1 ] ; then cp defconfig configs/${defconfig}_defconfig; echo updated ${defconfig}_defconfig; # git update-index configs/${defconfig}_defconfig; update_cnt=`expr $update_cnt + 1`; for insert_config in ${cfgs} ; do if [ `expr "${board_cfgs}" : "[A-Z0-9_:]*:${insert_config}:"` -eq 0 ] ; then cnt=`sed -n "/${insert_config}=/=" configs/${defconfig}_defconfig` if [ "${cnt}" != "" ] ; then board_cfgs="${board_cfgs}:${insert_config}:" fi fi done else numfailures=`expr $numfailures + 1`; echo -e "\n\n\n!!!!!!!! insert failure for ${defconfig}_defconfig !!!!!!!!!!!!\n\n"; read line; fi fi fi done sed -i "/${check_config}/d" include/configs/${hfile}.h if [ ${update_cnt} != "0" ] ; then echo "${board}: ${update_cnt} defconfigs updated, ${already_there} already there"; numsuccess=`expr $numsuccess + 1`; if [ ${board_cfgs} != ":" ] ; then # git c -m"${board}: add ${board_cfgs//::/ } to defconfigs"; echo updating ${board} ${board_cfgs//::/ } else # git c -m"${board}: reorder defconfigs"; echo reorder ${board} ${board_cfgs//::/ } fi else skipped=`expr $skipped + 1`; fi numboards=`expr $numboards + 1`; done echo -e "\n\ninsert for ${numboards} boards. ${numsuccess} succeeded and ${numfailures} failed, ${skipped} skipped";