diff options
| -rwxr-xr-x | MAKEALL | 115 | 
1 files changed, 112 insertions, 3 deletions
| @@ -17,6 +17,8 @@ usage()  	  -v VENDOR, --vendor VENDOR   Build all boards with vendor VENDOR  	  -s SOC,    --soc SOC         Build all boards with soc SOC  	  -l,        --list            List all targets to be built +	  -m,        --maintainers     List all targets and maintainer email +	  -M,        --mails           List all targets and all affilated emails  	  -h,        --help            This help output  	Selections by these options are logically ANDed; if the same option @@ -48,8 +50,8 @@ usage()  	exit ${ret}  } -SHORT_OPTS="ha:c:v:s:l" -LONG_OPTS="help,arch:,cpu:,vendor:,soc:,list" +SHORT_OPTS="ha:c:v:s:lmM" +LONG_OPTS="help,arch:,cpu:,vendor:,soc:,list,maintainers,mails"  # Option processing based on util-linux-2.13/getopt-parse.bash @@ -67,6 +69,8 @@ eval set -- "$TEMP"  SELECTED=''  ONLY_LIST='' +PRINT_MAINTS='' +MAINTAINERS_ONLY=''  while true ; do  	case "$1" in @@ -109,6 +113,15 @@ while true ; do  	-l|--list)  		ONLY_LIST='y'  		shift ;; +	-m|--maintainers) +		ONLY_LIST='y' +		PRINT_MAINTS='y' +		MAINTAINERS_ONLY='y' +		shift ;; +	-M|--mails) +		ONLY_LIST='y' +		PRINT_MAINTS='y' +		shift ;;  	-h|--help)  		usage ;;  	--) @@ -483,11 +496,107 @@ LIST_nds32="$(boards_by_arch nds32)"  #----------------------------------------------------------------------- +get_target_location() { +	local target=$1 +	local BOARD_NAME="" +	local CONFIG_NAME="" +	local board="" +	local vendor="" + +	# Automatic mode +	local line=`egrep -i "^[[:space:]]*${target}[[:space:]]" boards.cfg` + +	if [ -z "${line}" ] ; then echo "" ; return ; fi + +	set ${line} + +	# add default board name if needed +	[ $# = 3 ] && set ${line} ${1} + +	CONFIG_NAME="${1%_config}" + +	[ "${BOARD_NAME}" ] || BOARD_NAME="${1%_config}" + +	if [ "$4" = "-" ] ; then +		board=${BOARD_NAME} +	else +		board="$4" +	fi + +	[ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5" +	[ $# -gt 6 ] && [ "$7" != "-" ] && { +		tmp="${7%:*}" +		if [ "$tmp" ] ; then +			CONFIG_NAME="$tmp" +		fi +	} + +	# Assign board directory to BOARDIR variable +	if [ -z "${vendor}" ] ; then +	    BOARDDIR=${board} +	else +	    BOARDDIR=${vendor}/${board} +	fi + +	echo "${CONFIG_NAME}:${BOARDDIR}" +} + +get_target_maintainers() { +	local name=`echo $1 | cut -d : -f 1` + +	if ! grep -qsi "[[:blank:]]${name}[[:blank:]]" MAINTAINERS ; then +		echo "" +		return ; +	fi + +	local line=`tac MAINTAINERS | grep -ni "[[:blank:]]${name}[[:blank:]]" | cut -d : -f 1` +	local mail=`tac MAINTAINERS | tail -n +${line} | \ +		sed -n ":start /.*@.*/ { b mail } ; n ; b start ; :mail /.*@.*/ { p ; n ; b mail } ; q" | \ +		sed "s/^.*<//;s/>.*$//"` +	echo "$mail" +} + +list_target() { +	if [ "$PRINT_MAINTS" != 'y' ] ; then +		echo "$1" +		return +	fi + +	echo -n "$1:" + +	local loc=`get_target_location $1` + +	if [ -z "${loc}" ] ; then echo "ERROR" ; return ; fi + +	local maintainers_result=`get_target_maintainers ${loc} | tr " " "\n"` + +	if [ "$MAINTAINERS_ONLY" != 'y' ] ; then + +		local dir=`echo ${loc} | cut -d ":" -f 2` +		local cfg=`echo ${loc} | cut -d ":" -f 1` +		local git_result=`git log --format=%aE board/${dir} \ +				include/configs/${cfg}.h | grep "@"` +		local git_result_recent=`echo ${git_result} | tr " " "\n" | \ +						head -n 3` +		local git_result_top=`echo ${git_result} | tr " " "\n" | \ +			sort | uniq -c | sort -nr | head -n 3 | \ +			sed "s/^ \+[0-9]\+ \+//"` + +		echo -e "$git_result_recent\n$git_result_top\n$maintainers_result" | \ +			sort -u | tr "\n" " " | sed "s/ $//" ; +	else +		echo -e "$maintainers_result" | sort -u | tr "\n" " " | \ +						sed "s/ $//" ; +	fi + +	echo "" +} +  build_target() {  	target=$1  	if [ "$ONLY_LIST" == 'y' ] ; then -		echo "$target" +		list_target ${target}  		return  	fi |