From patchwork Mon Mar 5 17:33:09 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 144722 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 350BCB6F9D for ; Tue, 6 Mar 2012 04:33:32 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 1770328084; Mon, 5 Mar 2012 18:33:30 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Kv6UN6wG15vB; Mon, 5 Mar 2012 18:33:29 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 02E4828078; Mon, 5 Mar 2012 18:33:28 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 1A2A828078 for ; Mon, 5 Mar 2012 18:33:25 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8QJ05DEXRftA for ; Mon, 5 Mar 2012 18:33:24 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-out.m-online.net (mail-out.m-online.net [212.18.0.10]) by theia.denx.de (Postfix) with ESMTPS id 5542228077 for ; Mon, 5 Mar 2012 18:33:22 +0100 (CET) Received: from frontend1.mail.m-online.net (frontend1.mail.intern.m-online.net [192.168.8.180]) by mail-out.m-online.net (Postfix) with ESMTP id 3V1p9t1DKqz3hhZN; Mon, 5 Mar 2012 18:33:22 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.8.164]) by mail.m-online.net (Postfix) with ESMTP id 3V1p9t3y5jz4KK7Z; Mon, 5 Mar 2012 18:33:22 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from smtp-auth.mnet-online.de ([192.168.8.180]) by localhost (dynscan1.mail.m-online.net [192.168.8.164]) (amavisd-new, port 10024) with ESMTP id HihyiUSlx9HP; Mon, 5 Mar 2012 18:33:22 +0100 (CET) X-Auth-Info: w2FXDFPq72BRhJltk+ZNYG/wYtUxBXIv9JbE8WsgBzo= Received: from mashiro.lan (host-82-135-33-74.customer.m-online.net [82.135.33.74]) by smtp-auth.mnet-online.de (Postfix) with ESMTPA; Mon, 5 Mar 2012 18:33:21 +0100 (CET) From: Marek Vasut To: u-boot@lists.denx.de Date: Mon, 5 Mar 2012 18:33:09 +0100 Message-Id: <1330968789-17997-1-git-send-email-marex@denx.de> X-Mailer: git-send-email 1.7.9 Cc: Marek Vasut Subject: [U-Boot] [PATCH] MAKEALL: Add -m option to determine maintainers X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de The -m option lists boards including their maintainers emails. There are multiple strategies used to retrieve these emails: 1) Check board/ with git log and use three most recent emails 2) Check board/ with git log and use three most used emails 3) Try finding board in MAINTAINERS file and retrieve all emails from there The result is then sorted and unique results are retrieved and reported. Signed-off-by: Marek Vasut Cc: Wolfgang Denk --- MAKEALL | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 88 insertions(+), 3 deletions(-) diff --git a/MAKEALL b/MAKEALL index 0f2b4a1..2bfa696 100755 --- a/MAKEALL +++ b/MAKEALL @@ -17,6 +17,7 @@ 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 emails -h, --help This help output Selections by these options are logically ANDed; if the same option @@ -48,8 +49,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:lm" +LONG_OPTS="help,arch:,cpu:,vendor:,soc:,list,maintainers" # Option processing based on util-linux-2.13/getopt-parse.bash @@ -67,6 +68,7 @@ eval set -- "$TEMP" SELECTED='' ONLY_LIST='' +PRINT_MAINTS='' while true ; do case "$1" in @@ -109,6 +111,10 @@ while true ; do -l|--list) ONLY_LIST='y' shift ;; + -m|--maintainers) + ONLY_LIST='y' + PRINT_MAINTS='y' + shift ;; -h|--help) usage ;; --) @@ -483,11 +489,90 @@ LIST_nds32="$(boards_by_arch nds32)" #----------------------------------------------------------------------- +get_target_location() { + target=$1 + + BOARD_NAME="" + CONFIG_NAME="" + board="" + vendor="" + + # Automatic mode + line=`egrep -i "^[[:space:]]*${target}[[:space:]]" boards.cfg` + 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() { + name=`echo $1 | cut -d : -f 1` + + if ! grep -i ${name} MAINTAINERS >/dev/null 2>&1 ; then + echo "" + return ; + fi + + line=`tac MAINTAINERS | grep -ni ${name} | cut -d : -f 1` + mail=`tac MAINTAINERS | tail -n +${line} | \ + sed -n ":start /.*@.*/ { b mail } ; n ; b start ; :mail /.*@.*/ { p ; n ; b mail } ; q" | \ + sed "s/^.*.*$//"` + echo "$mail" +} + +list_target() { + if [ "$PRINT_MAINTS" != 'y' ] ; then + echo "$1" + return + fi + + loc=`get_target_location $1` + maintainers_result=`get_target_maintainers ${loc} | tr " " "\n"` + dir=`echo ${loc} | cut -d ":" -f 2` + git_result=`git log --format=%aE board/${dir}` + git_result_recent=`echo ${git_result} | tr " " "\n" | head -n 3` + git_result_top=`echo ${git_result} | tr " " "\n" | \ + sort | uniq -c | sort -nr | head -n 3 | \ + sed "s/^ \+[0-9]\+ \+//"` + + echo -n "$1:" + echo -e "$git_result_recent\n$git_result_top\n$maintainers_result" | \ + sort -u | tr "\n" " " | sed "s/ $//" + echo "" +} + build_target() { target=$1 if [ "$ONLY_LIST" == 'y' ] ; then - echo "$target" + list_target ${target} return fi