This patch moves the build_map_changes function from
check-symbol-change.sh to a new symbol-map-util.sh file. This function
can be used in other scripts by including symbol-map-util.sh file. The
license in check-symbol-change.sh is copied to symbol-map-util.sh.

Signed-off-by: Ankur Dwivedi <adwiv...@marvell.com>
---
 devtools/check-symbol-change.sh | 76 +-------------------------------
 devtools/symbol-map-util.sh     | 78 +++++++++++++++++++++++++++++++++
 2 files changed, 80 insertions(+), 74 deletions(-)
 create mode 100644 devtools/symbol-map-util.sh

diff --git a/devtools/check-symbol-change.sh b/devtools/check-symbol-change.sh
index 8992214ac8..68613f63cc 100755
--- a/devtools/check-symbol-change.sh
+++ b/devtools/check-symbol-change.sh
@@ -2,80 +2,8 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Neil Horman <nhor...@tuxdriver.com>
 
-build_map_changes()
-{
-       local fname="$1"
-       local mapdb="$2"
-
-       cat "$fname" | awk '
-               # Initialize our variables
-               BEGIN {map="";sym="";ar="";sec=""; in_sec=0; in_map=0}
-
-               # Anything that starts with + or -, followed by an a
-               # 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
-               /[-+] [ab]\/.*\.map/ {map=$2; in_map=1; next}
-
-               # The previous rule catches all .map files, anything else
-               # indicates we left the map chunk.
-               /[-+] [ab]\// {in_map=0}
-
-               # Triggering this rule, which starts a line and ends it
-               # with a { identifies a versioned section.  The section name is
-               # the rest of the line with the + and { symbols removed.
-               # Triggering this rule sets in_sec to 1, which actives the
-               # symbol rule below
-               /^.*{/ {
-                       gsub("+", "");
-                       if (in_map == 1) {
-                               sec=$(NF-1); in_sec=1;
-                       }
-               }
-
-               # This rule identifies the end of a section, and disables the
-               # symbol rule
-               /.*}/ {in_sec=0}
-
-               # This rule matches on a + followed by any characters except a :
-               # (which denotes a global vs local segment), and ends with a ;.
-               # The semicolon is removed and the symbol is printed with its
-               # association file name and version section, along with an
-               # indicator that the symbol is a new addition.  Note this rule
-               # only works if we have found a version section in the rule
-               # above (hence the in_sec check) And found a map file (the
-               # in_map check).  If we are not in a map chunk, do nothing.  If
-               # we are in a map chunk but not a section chunk, record it as
-               # unknown.
-               /^+[^}].*[^:*];/ {gsub(";","");sym=$2;
-                       if (in_map == 1) {
-                               if (in_sec == 1) {
-                                       print map " " sym " " sec " add"
-                               } else {
-                                       print map " " sym " unknown add"
-                               }
-                       }
-               }
-
-               # This is the same rule as above, but the rule matches on a
-               # leading - rather than a +, denoting that the symbol is being
-               # removed.
-               /^-[^}].*[^:*];/ {gsub(";","");sym=$2;
-                       if (in_map == 1) {
-                               if (in_sec == 1) {
-                                       print map " " sym " " sec " del"
-                               } else {
-                                       print map " " sym " unknown del"
-                               }
-                       }
-               }' > "$mapdb"
-
-               sort -u "$mapdb" > "$mapdb.2"
-               mv -f "$mapdb.2" "$mapdb"
-
-}
+selfdir=$(dirname $(readlink -f $0))
+. $selfdir/symbol-map-util.sh
 
 is_stable_section() {
        [ "$1" != 'EXPERIMENTAL' ] && [ "$1" != 'INTERNAL' ]
diff --git a/devtools/symbol-map-util.sh b/devtools/symbol-map-util.sh
new file mode 100644
index 0000000000..86e4279cdc
--- /dev/null
+++ b/devtools/symbol-map-util.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Neil Horman <nhor...@tuxdriver.com>
+
+build_map_changes()
+{
+       local fname="$1"
+       local mapdb="$2"
+
+       cat "$fname" | awk '
+               # Initialize our variables
+               BEGIN {map="";sym="";ar="";sec=""; in_sec=0; in_map=0}
+
+               # Anything that starts with + or -, followed by an a
+               # 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
+               /[-+] [ab]\/.*\.map/ {map=$2; in_map=1; next}
+
+               # The previous rule catches all .map files, anything else
+               # indicates we left the map chunk.
+               /[-+] [ab]\// {in_map=0}
+
+               # Triggering this rule, which starts a line and ends it
+               # with a { identifies a versioned section.  The section name is
+               # the rest of the line with the + and { symbols removed.
+               # Triggering this rule sets in_sec to 1, which actives the
+               # symbol rule below
+               /^.*{/ {
+                       gsub("+", "");
+                       if (in_map == 1) {
+                               sec=$(NF-1); in_sec=1;
+                       }
+               }
+
+               # This rule identifies the end of a section, and disables the
+               # symbol rule
+               /.*}/ {in_sec=0}
+
+               # This rule matches on a + followed by any characters except a :
+               # (which denotes a global vs local segment), and ends with a ;.
+               # The semicolon is removed and the symbol is printed with its
+               # association file name and version section, along with an
+               # indicator that the symbol is a new addition.  Note this rule
+               # only works if we have found a version section in the rule
+               # above (hence the in_sec check) And found a map file (the
+               # in_map check).  If we are not in a map chunk, do nothing.  If
+               # we are in a map chunk but not a section chunk, record it as
+               # unknown.
+               /^+[^}].*[^:*];/ {gsub(";","");sym=$2;
+                       if (in_map == 1) {
+                               if (in_sec == 1) {
+                                       print map " " sym " " sec " add"
+                               } else {
+                                       print map " " sym " unknown add"
+                               }
+                       }
+               }
+
+               # This is the same rule as above, but the rule matches on a
+               # leading - rather than a +, denoting that the symbol is being
+               # removed.
+               /^-[^}].*[^:*];/ {gsub(";","");sym=$2;
+                       if (in_map == 1) {
+                               if (in_sec == 1) {
+                                       print map " " sym " " sec " del"
+                               } else {
+                                       print map " " sym " unknown del"
+                               }
+                       }
+               }' > "$mapdb"
+
+               sort -u "$mapdb" > "$mapdb.2"
+               mv -f "$mapdb.2" "$mapdb"
+
+}
-- 
2.25.1

Reply via email to