From patchwork Tue Jun 2 13:53:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Power, Ciara" X-Patchwork-Id: 70736 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 332E0A0513; Tue, 2 Jun 2020 15:57:54 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 39DDE1BF72; Tue, 2 Jun 2020 15:57:44 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 39DF21BF5F for ; Tue, 2 Jun 2020 15:57:41 +0200 (CEST) IronPort-SDR: P0mBeERtaqzdozp6Zj+PwatcKhthi55RBp4lrEju1J0QrxJVdx3EJ28tzE/aX97pD7D1eh/lO5 4uZup1lXbePg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2020 06:57:40 -0700 IronPort-SDR: Lgu8gUnRrD+6FR73ZyKjjFj39HGhDhz7McFmquOjpY9xQZ4dsP+LWjj61GCErzBNdk/wyOFpd+ 6G0GR0f4xRmA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,464,1583222400"; d="scan'208";a="347406303" Received: from silpixa00399953.ir.intel.com (HELO silpixa00399953.ger.corp.intel.com) ([10.237.222.53]) by orsmga001.jf.intel.com with ESMTP; 02 Jun 2020 06:57:38 -0700 From: Ciara Power To: thomas@monjalon.net, john.mcnamara@intel.com, marko.kovacevic@intel.com Cc: ferruh.yigit@intel.com, dev@dpdk.org, Ciara Power Date: Tue, 2 Jun 2020 14:53:17 +0100 Message-Id: <20200602135319.21457-2-ciara.power@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200602135319.21457-1-ciara.power@intel.com> References: <20200128150256.14339-1-ciara.power@intel.com> <20200602135319.21457-1-ciara.power@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 1/3] devtools: standardize script arguments X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch modifies the arguments expected by the check-git-log script, to match the format of arguments for the checkpatches script. Both scripts now take certain argument options in the same format, making them easier to use. e.g. Both now take a commit ID range by "-r " The checkpatches help print is also updated to include the "-h" option. Signed-off-by: Ciara Power Acked-by: Ferruh Yigit --- v3: - Reworded check-git-log help text example. - Added comment to indicate new and old format argument parsing. v2: Added exit 0 after print usage. --- devtools/check-git-log.sh | 42 ++++++++++++++++++++++++++++++--------- devtools/checkpatches.sh | 2 +- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/devtools/check-git-log.sh b/devtools/check-git-log.sh index 4e65be0e4..5220765b9 100755 --- a/devtools/check-git-log.sh +++ b/devtools/check-git-log.sh @@ -7,23 +7,47 @@ # If any doubt about the formatting, please check in the most recent history: # git log --format='%>|(15)%cr %s' --reverse | grep -i -if [ "$1" = '-h' -o "$1" = '--help' ] ; then +print_usage () { cat <<- END_OF_HELP - usage: $(basename $0) [-h] [range] + usage: $(basename $0) [-h] [-nX|-r range] Check commit log formatting. - The git range can be specified as a "git log" option, - e.g. -1 to check only the latest commit. - The default range starts from origin/master to HEAD. + The git commits to be checked can be specified as a "git log" option, + by latest git commits limited with -n option, or commits in the git + range specified with -r option. + e.g. To check only the last commit, ‘-n1’ or ‘-r@~..’ is used. + When no parameter is provided, script will use range starting from + origin/master to HEAD. END_OF_HELP - exit -fi +} selfdir=$(dirname $(readlink -f $0)) +# The script caters for two formats, the new preferred format, and the old +# format to ensure backward compatibility. +# The new format is aligned with the format of the checkpatches script, +# and allows for specifying the patches to check by passing -nX or -r range. +# e.g. To check only the last commit, ‘-n1’ or ‘-r@~..’ is used. +# The old format allows for specifying patches by passing -X or range +# as the first argument. +# e.g. To check only the last commit, '-1' or '@~..' is used as first argument. range=${1:-origin/master..} + +if [ "$range" = '--help' ] ; then + print_usage + exit 0 # convert -N to HEAD~N.. in order to comply with git-log-fixes.sh getopts -if printf -- $range | grep -q '^-[0-9]\+' ; then - range="HEAD$(printf -- $range | sed 's,^-,~,').." +elif printf -- "$range" | grep -q '^-[0-9]\+' ; then + range="HEAD$(printf -- "$range" | sed 's,^-,~,').." +else + while getopts hr:n: ARG ; do + case $ARG in + n ) range="HEAD~$OPTARG.." ;; + r ) range=$OPTARG ;; + h ) print_usage ; exit 0 ;; + ? ) print_usage ; exit 1 ;; + esac + done + shift $(($OPTIND - 1)) fi commits=$(git log --format='%h' --reverse $range) diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh index 42b833e0d..e111c31d7 100755 --- a/devtools/checkpatches.sh +++ b/devtools/checkpatches.sh @@ -38,7 +38,7 @@ options="$options $DPDK_CHECKPATCH_OPTIONS" print_usage () { cat <<- END_OF_HELP - usage: $(basename $0) [-q] [-v] [-nX|-r range|patch1 [patch2] ...]] + usage: $(basename $0) [-h] [-q] [-v] [-nX|-r range|patch1 [patch2] ...] Run Linux kernel checkpatch.pl with DPDK options. The environment variable DPDK_CHECKPATCH_PATH must be set. From patchwork Tue Jun 2 13:53:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Power, Ciara" X-Patchwork-Id: 70737 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E4580A0513; Tue, 2 Jun 2020 15:58:03 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 81F071BF78; Tue, 2 Jun 2020 15:57:45 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id D947A1BF6F for ; Tue, 2 Jun 2020 15:57:43 +0200 (CEST) IronPort-SDR: ccO1HuftoGQGSh4PjIEhPEzhirysX0HNSsfdyOl/MC+T/vw+lKtvtXPoByCQ8tphg0gHTjYvrK L6GM7OLwYj2Q== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2020 06:57:42 -0700 IronPort-SDR: spqhUvIMJdOnHQ4NVLCloFBToQlMjO+nLjYz9RX/+YUkEia4sxG0CpUzX/eVUnwa1vVEx8NIWw LKzw5wMEyMxg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,464,1583222400"; d="scan'208";a="347406312" Received: from silpixa00399953.ir.intel.com (HELO silpixa00399953.ger.corp.intel.com) ([10.237.222.53]) by orsmga001.jf.intel.com with ESMTP; 02 Jun 2020 06:57:40 -0700 From: Ciara Power To: thomas@monjalon.net, john.mcnamara@intel.com, marko.kovacevic@intel.com Cc: ferruh.yigit@intel.com, dev@dpdk.org, Ciara Power Date: Tue, 2 Jun 2020 14:53:18 +0100 Message-Id: <20200602135319.21457-3-ciara.power@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200602135319.21457-1-ciara.power@intel.com> References: <20200128150256.14339-1-ciara.power@intel.com> <20200602135319.21457-1-ciara.power@intel.com> Subject: [dpdk-dev] [PATCH v3 2/3] devtools: added stats print X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" When all checks are completed on the specified commit logs, the script indicates if all are valid, or if there were some failures. Signed-off-by: Ciara Power Acked-by: Ferruh Yigit --- v2: Added appropriate exit codes based on failure status. --- devtools/check-git-log.sh | 45 +++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/devtools/check-git-log.sh b/devtools/check-git-log.sh index 5220765b9..eca8506d9 100755 --- a/devtools/check-git-log.sh +++ b/devtools/check-git-log.sh @@ -70,7 +70,7 @@ bad=$(echo "$headlines" | grep --color=always \ -e ':[^ ]' \ -e ' :' \ | sed 's,^,\t,') -[ -z "$bad" ] || printf "Wrong headline format:\n$bad\n" +[ -z "$bad" ] || { printf "Wrong headline format:\n$bad\n" && failure=true;} # check headline prefix when touching only drivers, e.g. net/ bad=$(for commit in $commits ; do @@ -88,7 +88,7 @@ bad=$(for commit in $commits ; do echo "$headline" | grep -v "^$drv" fi done | sed 's,^,\t,') -[ -z "$bad" ] || printf "Wrong headline prefix:\n$bad\n" +[ -z "$bad" ] || { printf "Wrong headline prefix:\n$bad\n" && failure=true;} # check headline label for common typos bad=$(echo "$headlines" | grep --color=always \ @@ -98,14 +98,14 @@ bad=$(echo "$headlines" | grep --color=always \ -e 'test-pmd' \ -e '^bond:' \ | sed 's,^,\t,') -[ -z "$bad" ] || printf "Wrong headline label:\n$bad\n" +[ -z "$bad" ] || { printf "Wrong headline label:\n$bad\n" && failure=true;} # check headline lowercase for first words bad=$(echo "$headlines" | grep --color=always \ -e '^.*[[:upper:]].*:' \ -e ': *[[:upper:]]' \ | sed 's,^,\t,') -[ -z "$bad" ] || printf "Wrong headline uppercase:\n$bad\n" +[ -z "$bad" ] || { printf "Wrong headline uppercase:\n$bad\n" && failure=true;} # check headline case (Rx/Tx, VF, L2, MAC, Linux ...) IFS=' @@ -118,9 +118,8 @@ for word in $(cat $words); do fi for bad_line in $bad; do bad_word=$(echo $bad_line | cut -d":" -f2 | grep -io $word) - if [ -n "$bad_word" ]; then - printf "Wrong headline case:\n\"$bad_line\": $bad_word --> $word\n" - fi + [ -z "$bad_word" ] || { printf "Wrong headline case:\n\ + \"$bad_line\": $bad_word --> $word\n" && failure=true;} done done @@ -128,27 +127,28 @@ done bad=$(echo "$headlines" | awk 'length>60 {print}' | sed 's,^,\t,') -[ -z "$bad" ] || printf "Headline too long:\n$bad\n" +[ -z "$bad" ] || { printf "Headline too long:\n$bad\n" && failure=true;} # check body lines length (75 max) bad=$(echo "$bodylines" | grep -v '^Fixes:' | awk 'length>75 {print}' | sed 's,^,\t,') -[ -z "$bad" ] || printf "Line too long:\n$bad\n" +[ -z "$bad" ] || { printf "Line too long:\n$bad\n" && failure=true;} # check starting commit message with "It" bad=$(for commit in $commits ; do firstbodyline=$(git log --format='%b' -1 $commit | head -n1) echo "$firstbodyline" | grep --color=always -ie '^It ' done | sed 's,^,\t,') -[ -z "$bad" ] || printf "Wrong beginning of commit message:\n$bad\n" +[ -z "$bad" ] || { printf "Wrong beginning of commit message:\n$bad\n"\ + && failure=true;} # check tags spelling bad=$(echo "$tags" | grep -v "^$bytag [^,]* <.*@.*>$" | grep -v '^Fixes: [0-9a-f]\{7\}[0-9a-f]* (".*")$' | sed 's,^.,\t&,') -[ -z "$bad" ] || printf "Wrong tag:\n$bad\n" +[ -z "$bad" ] || { printf "Wrong tag:\n$bad\n" && failure=true;} # check missing Coverity issue: tag bad=$(for commit in $commits; do @@ -157,7 +157,8 @@ bad=$(for commit in $commits; do echo "$body" | grep -q '^Coverity issue:' && continue git log --format='\t%s' -1 $commit done) -[ -z "$bad" ] || printf "Missing 'Coverity issue:' tag:\n$bad\n" +[ -z "$bad" ] || { printf "Missing 'Coverity issue:' tag:\n$bad\n"\ + && failure=true;} # check missing Bugzilla ID: tag bad=$(for commit in $commits; do @@ -166,14 +167,15 @@ bad=$(for commit in $commits; do echo "$body" | grep -q '^Bugzilla ID:' && continue git log --format='\t%s' -1 $commit done) -[ -z "$bad" ] || printf "Missing 'Bugzilla ID:' tag:\n$bad\n" +[ -z "$bad" ] || { printf "Missing 'Bugzilla ID:' tag:\n$bad\n"\ + && failure=true;} # check missing Fixes: tag bad=$(for fix in $fixes ; do git log --format='%b' -1 $fix | grep -q '^Fixes: ' || git log --format='\t%s' -1 $fix done) -[ -z "$bad" ] || printf "Missing 'Fixes' tag:\n$bad\n" +[ -z "$bad" ] || { printf "Missing 'Fixes' tag:\n$bad\n" && failure=true;} # check Fixes: reference fixtags=$(echo "$tags" | grep '^Fixes: ') @@ -186,11 +188,22 @@ bad=$(for fixtag in $fixtags ; do fi printf "$fixtag" | grep -v "^$good$" done | sed 's,^,\t,') -[ -z "$bad" ] || printf "Wrong 'Fixes' reference:\n$bad\n" +[ -z "$bad" ] || { printf "Wrong 'Fixes' reference:\n$bad\n" && failure=true;} # check Cc: stable@dpdk.org for fixes bad=$(for fix in $stablefixes ; do git log --format='%b' -1 $fix | grep -qi '^Cc: *stable@dpdk.org' || git log --format='\t%s' -1 $fix done) -[ -z "$bad" ] || printf "Is it candidate for Cc: stable@dpdk.org backport?\n$bad\n" +[ -z "$bad" ] || { printf "Is it candidate for Cc: stable@dpdk.org backport?\n$bad\n"\ + && failure=true;} + +total=$(echo "$commits" | wc -l) +if [ -n "$failure" ] ; then + printf "\nInvalid patch(es) found - checked $total patch" +else + printf "\n$total/$total valid patch" +fi +[ $total -le 1 ] || printf 'es' +printf '\n' +[ -n "$failure" ] && exit 1 || exit 0 From patchwork Tue Jun 2 13:53:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Power, Ciara" X-Patchwork-Id: 70738 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 206CBA0513; Tue, 2 Jun 2020 15:58:14 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C11C01BF76; Tue, 2 Jun 2020 15:57:58 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 424A41BF59 for ; Tue, 2 Jun 2020 15:57:57 +0200 (CEST) IronPort-SDR: Boge60YdQv3YOK07jGDl9S3m6vyOi3bteGUzfxJnGxvtDkvnNEr5k6JpX+YtrjZwwOgA2HH0PE W8Diy/otAOrQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2020 06:57:43 -0700 IronPort-SDR: xENVSzdF8GmCAMFMejJ8xgoFHG6mryYECv72fhZWn2jXq/+c/QlDjh9xqoidfnMjX9O2vdcZwu 50Ei6WAXaBJA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,464,1583222400"; d="scan'208";a="347406316" Received: from silpixa00399953.ir.intel.com (HELO silpixa00399953.ger.corp.intel.com) ([10.237.222.53]) by orsmga001.jf.intel.com with ESMTP; 02 Jun 2020 06:57:42 -0700 From: Ciara Power To: thomas@monjalon.net, john.mcnamara@intel.com, marko.kovacevic@intel.com Cc: ferruh.yigit@intel.com, dev@dpdk.org, Ciara Power Date: Tue, 2 Jun 2020 14:53:19 +0100 Message-Id: <20200602135319.21457-4-ciara.power@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200602135319.21457-1-ciara.power@intel.com> References: <20200128150256.14339-1-ciara.power@intel.com> <20200602135319.21457-1-ciara.power@intel.com> Subject: [dpdk-dev] [PATCH v3 3/3] doc/guides: updated script usage for checking patches X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The contributor's guide includes the usage of both the checkpatches and check-git-log scripts, which needed to be updated to reflect the now standardised format. Signed-off-by: Ciara Power Acked-by: Ferruh Yigit --- doc/guides/contributing/patches.rst | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst index 59442824a..f11e4d7c7 100644 --- a/doc/guides/contributing/patches.rst +++ b/doc/guides/contributing/patches.rst @@ -429,22 +429,28 @@ Once the environment variable the script can be run as follows:: The script usage is:: - checkpatches.sh [-h] [-q] [-v] [patch1 [patch2] ...]]" + checkpatches.sh [-h] [-q] [-v] [-nX|-r range|patch1 [patch2] ...]" Where: * ``-h``: help, usage. * ``-q``: quiet. Don't output anything for files without issues. * ``-v``: verbose. +* ``-nX``: the number of commits to check. +* ``-r range``: the range to check, range must be a ``git log`` option. * ``patchX``: path to one or more patches. Then the git logs should be checked using the ``check-git-log.sh`` script. The script usage is:: - check-git-log.sh [range] + check-git-log.sh [-h] [-nX|-r range] -Where the range is a ``git log`` option. +Where: + +* ``-h``: help, usage. +* ``-nX``: the number of commits to check. +* ``-r range``: the range to check, range must be a ``git log`` option. .. _contrib_check_compilation: