From patchwork Wed Jul 10 09:57:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bing Zhao X-Patchwork-Id: 56303 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CE4612C60; Wed, 10 Jul 2019 14:38:02 +0200 (CEST) Received: from git-send-mailer.rdmz.labs.mlnx (unknown [37.142.13.130]) by dpdk.org (Postfix) with ESMTP id AADE514E8; Wed, 10 Jul 2019 11:57:24 +0200 (CEST) From: Bing Zhao To: nhorman@tuxdriver.com Cc: dev@dpdk.org, stable@dpdk.org Date: Wed, 10 Jul 2019 17:57:14 +0800 Message-Id: <1562752634-311259-1-git-send-email-bingz@mellanox.com> X-Mailer: git-send-email 1.8.3.1 X-Mailman-Approved-At: Wed, 10 Jul 2019 14:38:01 +0200 Subject: [dpdk-dev] devtools: fix symbol change file matching 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 previous regex miss a situation that a new file is added after the map file. It will starts with '/dev/null' instead of 'a /', so all the content in the patch file after 'map' will be considered in the symbol map file. Also, a second regex matching is used for map and other files, the '^map' in square brackets is not quite exact the same with the design even if it works. Fixes: 4bec48184e33 ("devtools: add checks for ABI symbol addition") Cc: nhorman@tuxdriver.com Signed-off-by: Bing Zhao --- devtools/check-symbol-change.sh | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/devtools/check-symbol-change.sh b/devtools/check-symbol-change.sh index c5434f3..eac71f3 100755 --- a/devtools/check-symbol-change.sh +++ b/devtools/check-symbol-change.sh @@ -11,19 +11,32 @@ build_map_changes() # Initialize our variables BEGIN {map="";sym="";ar="";sec=""; in_sec=0; in_map=0} - # Anything that starts with + or -, followed by an a + # Anything that starts with + or -, followed by an a or b # and ends in the string .map is the name of our map file # This may appear multiple times in a patch if multiple # map files are altered, and all section/symbol names # appearing between a triggering of this rule and the # next trigger of this rule are associated with this file - /[-+] a\/.*\.map/ {map=$2; in_map=1} # Same pattern as above, only it matches on anything that - # does not end in 'map', indicating we have left the map chunk. + # does not end in "map", indicating we have left the map chunk. # When we hit this, turn off the in_map variable, which # supresses the subordonate rules below - /[-+] a\/.*\.[^map]/ {in_map=0} + # Currently, using the same pattern for all the files matching, + # and a second RE matching is used to distinguish map files from + # other types of files + /[-+] [ab]\/.*\.[[:alnum:]]+$/ { + if ($2 ~ /\.map$/) { + if (in_map == 0) {in_map = 1} + } else { + if (in_map == 1) {in_map = 0} + } + } + + # Indeed, this RE matching has no use. The only purpose here + # is to remind that the git will have a third file pattern + # "-+ /dev/null" besides "-a /" and "+b /" + /[-+] \/dev\/null$/ {next} # Triggering this rule, which starts a line and ends it # with a { identifies a versioned section. The section name is