From patchwork Mon Nov 23 01:40:07 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 9036 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id C0DBC8E82; Mon, 23 Nov 2015 02:41:33 +0100 (CET) Received: from mail-wm0-f43.google.com (mail-wm0-f43.google.com [74.125.82.43]) by dpdk.org (Postfix) with ESMTP id 71D3F688E for ; Mon, 23 Nov 2015 02:41:30 +0100 (CET) Received: by wmuu63 with SMTP id u63so36299915wmu.0 for ; Sun, 22 Nov 2015 17:41:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=B8baYyXdOIsULRG79MMDFAvVbqorI/UGPCEGctxcaJA=; b=AORAC9YCs2C1Xqj9Drq3BWfbUkO0XH+CuQrwcFtnE+7ZQgCvBHOScPiD/WrTcqFCon GsIa3k8yzIUTlPC43/C8Hq8e4eDYRNuBYP3xvhlf+N+hH7KUDL3ihKwTEG+oO7N2ac4a vYUeko3ey8pWDUlaLixiodoyZU+2sbZHyox6sTqw07PBssTw59NUa554VQ3Ogpq2/Rfu 0uwdgt6v8Ms/66xNuVdjUYv/qTPsoiElmZKGy+PaWnuosLljG3khxt7P3NTSwVNK8zok F7EqlJg38vFR31bQVTFD9yiyw8vWgHVgMTBEEYrqBxdXQ1jwn7xOKlid1KO9rGOlBmOy yxJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=B8baYyXdOIsULRG79MMDFAvVbqorI/UGPCEGctxcaJA=; b=GBIE5i7cYkJ3qjTffy6XnYeEdOG+aNwWxKxqTxmtOhpRAEMRKpFkbydvS4dO1giLYx ohtLI0oPrbWm9mV0sP7R7fV/UBvbvRlalMfHxYeqId2IMhAOPEZlAGdX5P/wbBVjRxAw oVox+KfO/2eXLxfkl6JtUSXOqskpi8Au6UEZBciPkAuumfrSXUvQinyLjuJY3CxKCOUQ UTCTaZwEmUohhV4uL6umX7LE0xV/uxPcIvj3G34J85lvSP2Y7jc5KCNE2u7MQsuE81y2 LCiT+kdyBR6O06NX8Tsz9Ct+naijb0f8KAWwJJJDo8NmYaw0cEnvOf2zqo8hEBYCTx2j wnwA== X-Gm-Message-State: ALoCoQmvxaktQ6HjINkQtUTYY5+zErDcuAzxBrNzHrHhPQYJr4XKN9WqaBviAxIUSFOwk+01f56T X-Received: by 10.28.177.10 with SMTP id a10mr13039557wmf.4.1448242890288; Sun, 22 Nov 2015 17:41:30 -0800 (PST) Received: from localhost.localdomain (136-92-190-109.dsl.ovh.fr. [109.190.92.136]) by smtp.gmail.com with ESMTPSA id q6sm10802275wjx.28.2015.11.22.17.41.29 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 22 Nov 2015 17:41:29 -0800 (PST) From: Thomas Monjalon To: dev@dpdk.org Date: Mon, 23 Nov 2015 02:40:07 +0100 Message-Id: <1448242808-16101-2-git-send-email-thomas.monjalon@6wind.com> X-Mailer: git-send-email 2.5.2 In-Reply-To: <1448242808-16101-1-git-send-email-thomas.monjalon@6wind.com> References: <1445615606-3885-1-git-send-email-thomas.monjalon@6wind.com> <1448242808-16101-1-git-send-email-thomas.monjalon@6wind.com> Subject: [dpdk-dev] [PATCH v2 1/2] scripts: add checkpatch wrapper X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This script can be used to call checkpatch.pl from Linux with some custom DPDK options. The path to the original Linux script must be set in an environment variable. A script is added to load any configuration variables required by development tools from a file .develconfig, or ~/.config/dpdk/devel.config or /etc/dpdk/devel.config. Signed-off-by: Thomas Monjalon Acked-by: Bruce Richardson --- v2: - do not ignore COMPLEX_MACRO - use option --no-tree to avoid silent failure - add -q and -v options scripts/checkpatches.sh | 82 ++++++++++++++++++++++++++++++++++++++++++++ scripts/load-devel-config.sh | 14 ++++++++ 2 files changed, 96 insertions(+) create mode 100755 scripts/checkpatches.sh create mode 100755 scripts/load-devel-config.sh diff --git a/scripts/checkpatches.sh b/scripts/checkpatches.sh new file mode 100755 index 0000000..afc611b --- /dev/null +++ b/scripts/checkpatches.sh @@ -0,0 +1,82 @@ +#! /bin/sh + +# BSD LICENSE +# +# Copyright 2015 6WIND S.A. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of 6WIND S.A. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Load config options: +# - DPDK_CHECKPATCH_PATH +# - DPDK_CHECKPATCH_LINE_LENGTH +. scripts/load-devel-config.sh +if [ ! -x "$DPDK_CHECKPATCH_PATH" ] ; then + echo 'Cannot execute DPDK_CHECKPATCH_PATH' >&2 + exit 1 +fi + +length=${DPDK_CHECKPATCH_LINE_LENGTH:-80} + +# override default Linux options +options="--no-tree" +options="$options --max-line-length=$length" +options="$options --show-types" +options="$options --ignore=LINUX_VERSION_CODE,FILE_PATH_CHANGES,\ +VOLATILE,PREFER_PACKED,PREFER_ALIGNED,PREFER_PRINTF,PREFER_KERNEL_TYPES,\ +SPLIT_STRING,LINE_SPACING,PARENTHESIS_ALIGNMENT,NETWORKING_BLOCK_COMMENT_STYLE,\ +NEW_TYPEDEFS,COMPARISON_TO_NULL" + +print_usage () { + echo "usage: $(basename $0) [-q] [-v] [patch1 [patch2] ...]]" +} + +quiet=false +verbose=false +while getopts hqv ARG ; do + case $ARG in + q ) quiet=true ;; + v ) verbose=true ;; + h ) print_usage ; exit 0 ;; + ? ) print_usage ; exit 1 ;; + esac +done +shift $(($OPTIND - 1)) + +status=0 +for p in "$@" ; do + ! $verbose || printf '\n### %s\n\n' "$p" + report=$($DPDK_CHECKPATCH_PATH $options "$p" 2>/dev/null) + [ $? -ne 0 ] || continue + $verbose || printf '\n### %s\n\n' "$p" + printf '%s\n' "$report" | head -n -6 + status=$(($status + 1)) +done +pass=$(($# - $status)) +$quiet || printf '%d/%d valid patch' $pass $# +$quiet || [ $pass -le 1 ] || printf 'es' +$quiet || printf '\n' +exit $status diff --git a/scripts/load-devel-config.sh b/scripts/load-devel-config.sh new file mode 100755 index 0000000..489f007 --- /dev/null +++ b/scripts/load-devel-config.sh @@ -0,0 +1,14 @@ +#! /bin/echo must be loaded with . + +# Load DPDK devel config and allow override +# from system file +test ! -r /etc/dpdk/devel.config || + . /etc/dpdk/devel.config +# from user file +test ! -r ~/.config/dpdk/devel.config || + . ~/.config/dpdk/devel.config +# from local file +test ! -r $(dirname $(readlink -m $0))/../.develconfig || + . $(dirname $(readlink -m $0))/../.develconfig + +# The config files must export variables in the shell style