From: Marcin Baran <marcinx.baran@intel.com>
To: dev@dpdk.org, bruce.richardson@intel.com, ray.kinsella@intel.com
Cc: Pawel Modrak <pawelx.modrak@intel.com>
Subject: [dpdk-dev] [PATCH 2/8] buildtools: scripts for updating symbols abi version
Date: Mon, 30 Sep 2019 11:21:33 +0200 [thread overview]
Message-ID: <20190930092139.2440-2-marcinx.baran@intel.com> (raw)
In-Reply-To: <20190930092139.2440-1-marcinx.baran@intel.com>
From: Pawel Modrak <pawelx.modrak@intel.com>
The scripts updates version number for binding symbols
and version map files.
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
---
buildtools/update_default_symbol_abi.py | 57 ++++++++++++
buildtools/update_version_map_abi.py | 110 ++++++++++++++++++++++++
2 files changed, 167 insertions(+)
create mode 100755 buildtools/update_default_symbol_abi.py
create mode 100755 buildtools/update_version_map_abi.py
diff --git a/buildtools/update_default_symbol_abi.py b/buildtools/update_default_symbol_abi.py
new file mode 100755
index 000000000..6fe60d8cd
--- /dev/null
+++ b/buildtools/update_default_symbol_abi.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+from __future__ import print_function
+import sys
+import argparse
+import re
+
+def setup_options():
+ arg_parser = argparse.ArgumentParser(description='Update default bind symbol abi version.')
+ arg_parser.add_argument('map_file', metavar='map_file', type=str, nargs=1,
+ help='path to source file (pattern: *.c)')
+ arg_parser.add_argument('dst_abi_version', metavar='dst_abi_version', type=str, nargs=1,
+ help='target ABI version (pattern: DPDK_*)')
+ arg_parser.add_argument('-v', '--verbose', action='store_true', help='print changes')
+
+ return arg_parser.parse_args()
+
+def replace_abi(f_in, abi_version_number, verbose):
+ source_file_content = []
+
+ for ln_no, ln in enumerate(f_in, 1):
+ if re.search("^BIND_DEFAULT_SYMBOL\(.*", ln):
+ source_file_content += [re.sub(", [0-9]{1,2}\.[0-9]{1,2}\);$", ", " + abi_version_number + ");", ln)]
+ if verbose:
+ print(f_in.name + ":" + str(ln_no) + ": " + ln[:-1] + " -> " + source_file_content[-1][:-1])
+ elif re.search("^VERSION_SYMBOL\(.*", ln):
+ if verbose:
+ print(f_in.name + ":" + str(ln_no) + ": " + ln[:-1] + " -> " + "[DELETED]")
+ else:
+ source_file_content += [ln]
+
+ return source_file_content
+
+def main(args):
+ params = setup_options()
+
+ if not params.map_file[0].endswith('.c') or \
+ not params.dst_abi_version[0].startswith('DPDK_'):
+ print('Wrong pattern for input files!\n')
+ arg_parser.print_help()
+ return 1
+
+ abi_version_number = params.dst_abi_version[0][5:]
+ source_file_content = []
+
+ with open(params.map_file[0]) as f_in:
+ source_file_content = replace_abi(f_in, abi_version_number, params.verbose)
+
+ with open(params.map_file[0], 'w') as f_out:
+ f_out.writelines(source_file_content)
+
+ return 0
+
+if __name__ == "__main__":
+ sys.exit(main(sys.argv))
diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
new file mode 100755
index 000000000..5a840e766
--- /dev/null
+++ b/buildtools/update_version_map_abi.py
@@ -0,0 +1,110 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+from __future__ import print_function
+import sys
+import argparse
+
+def setup_options():
+ arg_parser = argparse.ArgumentParser(description='Merge versions in linker version script.')
+ arg_parser.add_argument("map_file", metavar='map_file', type=str, nargs=1,
+ help='path to linker version script file (pattern: *version.map)')
+ arg_parser.add_argument("dst_abi_version", metavar='dst_abi_version', type=str, nargs=1,
+ help='target ABI version (pattern: DPDK_*)')
+ arg_parser.add_argument("src_abi_version", metavar='src_abi_version', default="DPDK_", type=str, nargs='?',
+ help='source ABI version (pattern: DPDK_*, default: DPDK_)')
+ arg_parser.add_argument('-v', '--verbose', action='store_true', help='print changes')
+
+ return arg_parser.parse_args()
+
+def is_function_line(ln):
+ return ln.startswith('\t') and ln.endswith(';\n') and ":" not in ln
+
+def is_dpdk_version_start_line(ln, src_abi_version):
+ return ln.startswith(src_abi_version) and ln.endswith('{\n') and ":" not in ln
+
+def is_experimental_version_start_line(ln):
+ return ln.startswith('EXPERIMENTAL {') and ln.endswith('\n') and ":" not in ln
+
+def is_version_end_line(ln):
+ return ln.startswith('}') and ln.endswith(';\n') and ":" not in ln
+
+def is_global_line(ln):
+ return ln.startswith('\tglobal:') and ln.endswith('\n')
+
+def is_local_line(ln):
+ return ln.startswith('\tlocal: ') and ln.endswith(';\n')
+
+def store_functions(f_in):
+ functions = []
+ local_line = []
+
+ for line in f_in:
+ if is_version_end_line(line): break
+ elif is_local_line(line):
+ local_line = [line]
+ elif is_function_line(line): functions += [line]
+
+ return functions, local_line
+
+def parse_linker_version_map_file(f_in, src_abi_version):
+ dpdk_functions = []
+ experimental_functions = []
+ dpdk_local_line = []
+ experimental_local_line = []
+
+ for line in f_in:
+ if is_dpdk_version_start_line(line, src_abi_version):
+ dpdk_functions_tmp, dpdk_local_line_tmp = store_functions(f_in)
+ dpdk_functions += dpdk_functions_tmp
+ dpdk_local_line = dpdk_local_line_tmp if len(dpdk_local_line_tmp) > 0 else dpdk_local_line
+ elif is_experimental_version_start_line(line):
+ experimental_functions_tmp, experimental_local_line_tmp = store_functions(f_in)
+ experimental_functions += experimental_functions_tmp
+ experimental_local_line += experimental_local_line_tmp
+
+ return list(set(dpdk_functions)), list(set(experimental_functions)), list(set(dpdk_local_line)), list(set(experimental_local_line))
+
+def main(args):
+ params = setup_options()
+
+ if not params.map_file[0].endswith('version.map') or \
+ not params.dst_abi_version[0].startswith('DPDK_'):
+ print('Wrong pattern for input files!\n')
+ arg_parser.print_help()
+ return 1
+
+ dpdk_functions = []
+ experimental_functions = []
+ dpdk_local_line = []
+ experimental_local_line = []
+
+ with open(params.map_file[0]) as f_in:
+ dpdk_functions, experimental_functions, dpdk_local_line, experimental_local_line = parse_linker_version_map_file(f_in, params.src_abi_version)
+
+ dpdk_functions.sort()
+ experimental_functions.sort()
+
+ with open(params.map_file[0], 'w') as f_out:
+ if len(dpdk_functions) > 0:
+ dpdk_functions = params.dst_abi_version + [" {\n"] + ["\tglobal:\n\n"] + dpdk_functions + dpdk_local_line + ["};\n\n"]
+ if params.verbose:
+ print(*dpdk_functions)
+ f_out.writelines(dpdk_functions)
+ elif len(dpdk_local_line) > 0:
+ dpdk_functions = params.dst_abi_version + [" {\n"] + ["\n\tlocal: *;\n};\n"]
+ if params.verbose:
+ print(*dpdk_functions)
+ f_out.writelines(dpdk_functions)
+
+ if len(experimental_functions) > 0:
+ experimental_functions = ["EXPERIMENTAL" + " {\n"] + ["\tglobal:\n\n"] + experimental_functions + experimental_local_line + ["};\n"]
+ if params.verbose:
+ print(*experimental_functions)
+ f_out.writelines(experimental_functions)
+
+ return 0
+
+if __name__ == "__main__":
+ sys.exit(main(sys.argv))
--
2.22.0.windows.1
next prev parent reply other threads:[~2019-09-30 9:22 UTC|newest]
Thread overview: 131+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-30 9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
2019-09-30 9:21 ` Marcin Baran [this message]
2019-09-30 9:21 ` [dpdk-dev] [PATCH 3/8] buildtools: add ABI versioning check script Marcin Baran
2019-09-30 10:27 ` Bruce Richardson
2019-09-30 9:21 ` [dpdk-dev] [PATCH 4/8] build: change ABI version to 20.0 Marcin Baran
2019-09-30 9:21 ` [dpdk-dev] [PATCH 5/8] lib: remove dead code from timer Marcin Baran
2019-09-30 9:21 ` [dpdk-dev] [PATCH 6/8] lib: remove dead code from lpm Marcin Baran
2019-09-30 9:21 ` [dpdk-dev] [PATCH 7/8] lib: remove dead code from distributor Marcin Baran
2019-09-30 9:21 ` [dpdk-dev] [PATCH 8/8] lib: change function suffix in distributor Marcin Baran
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
2019-10-17 8:50 ` Bruce Richardson
2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 00/12] " Anatoly Burakov
2019-11-20 20:17 ` Thomas Monjalon
2019-11-20 22:13 ` David Marchand
2019-11-21 10:22 ` Burakov, Anatoly
2019-11-21 13:24 ` Kinsella, Ray
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 01/12] config: change ABI versioning to global Anatoly Burakov
2019-11-20 19:51 ` David Marchand
2019-11-20 22:01 ` David Marchand
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 02/12] config: remove CONFIG_RTE_MAJOR_ABI option Anatoly Burakov
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 03/12] build: remove individual library versions Anatoly Burakov
2019-11-20 19:35 ` David Marchand
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 04/12] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-11-20 20:05 ` David Marchand
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 05/12] buildtools: add ABI update shell script Anatoly Burakov
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 06/12] timer: remove deprecated code Anatoly Burakov
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 07/12] lpm: " Anatoly Burakov
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 08/12] distributor: " Anatoly Burakov
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 09/12] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 10/12] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 11/12] build: change ABI version to 20.0 Anatoly Burakov
2019-11-20 20:47 ` David Marchand
2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 12/12] buildtools: add ABI versioning check script Anatoly Burakov
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global Anatoly Burakov
2019-11-19 13:53 ` Thomas Monjalon
2019-11-19 15:48 ` Burakov, Anatoly
2019-11-20 12:10 ` Kinsella, Ray
2019-11-20 13:31 ` Thomas Monjalon
2019-11-20 14:10 ` Kinsella, Ray
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-11-19 14:01 ` Thomas Monjalon
2019-11-19 15:38 ` Burakov, Anatoly
2019-11-19 16:05 ` Thomas Monjalon
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 03/10] buildtools: add ABI update shell script Anatoly Burakov
2019-11-19 17:38 ` Thomas Monjalon
2019-11-20 11:50 ` Burakov, Anatoly
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 04/10] timer: remove deprecated code Anatoly Burakov
2019-11-19 21:42 ` David Marchand
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 05/10] lpm: " Anatoly Burakov
2019-11-19 21:43 ` David Marchand
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 06/10] distributor: " Anatoly Burakov
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0 Anatoly Burakov
2019-11-19 17:46 ` Thomas Monjalon
2019-11-19 21:50 ` David Marchand
2019-11-22 7:07 ` Sachin Saxena
2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 10/10] buildtools: add ABI versioning check script Anatoly Burakov
2019-11-19 18:16 ` Thomas Monjalon
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 01/10] config: change ABI versioning to global Anatoly Burakov
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 03/10] buildtools: add ABI update shell script Anatoly Burakov
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 04/10] timer: remove deprecated code Anatoly Burakov
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 05/10] lpm: " Anatoly Burakov
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 06/10] distributor: " Anatoly Burakov
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 09/10] build: change ABI version to 20.0 Anatoly Burakov
2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 10/10] buildtools: add ABI versioning check script Anatoly Burakov
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 01/10] config: change ABI versioning to global Anatoly Burakov
2019-11-05 11:05 ` David Marchand
2019-11-05 13:50 ` Bruce Richardson
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-11-06 15:38 ` David Marchand
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 03/10] buildtools: add ABI update shell script Anatoly Burakov
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 04/10] timer: remove deprecated code Anatoly Burakov
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 05/10] lpm: " Anatoly Burakov
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 06/10] distributor: " Anatoly Burakov
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 09/10] build: change ABI version to 20.0 Anatoly Burakov
2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 10/10] buildtools: add ABI versioning check script Anatoly Burakov
2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 01/10] config: change ABI versioning to global Anatoly Burakov
2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 03/10] buildtools: add ABI update shell script Anatoly Burakov
2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code Anatoly Burakov
2019-10-17 21:04 ` Carrillo, Erik G
2019-10-21 13:24 ` Kevin Traynor
2019-10-24 9:07 ` Burakov, Anatoly
2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 05/10] lpm: " Anatoly Burakov
2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 06/10] distributor: " Anatoly Burakov
2019-10-17 15:59 ` Hunt, David
2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
2019-10-17 16:00 ` Hunt, David
2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 09/10] build: change ABI version to 20.0 Anatoly Burakov
2019-10-17 14:32 ` [dpdk-dev] [PATCH v4 10/10] buildtools: add ABI versioning check script Anatoly Burakov
2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global Anatoly Burakov
2019-10-17 8:44 ` Bruce Richardson
2019-10-17 10:25 ` Burakov, Anatoly
2019-10-17 14:09 ` Luca Boccassi
2019-10-17 14:12 ` Bruce Richardson
2019-10-18 10:07 ` Kevin Traynor
2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 2/9] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 3/9] buildtools: add ABI update shell script Anatoly Burakov
2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 4/9] timer: remove deprecated code Anatoly Burakov
2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 5/9] lpm: " Anatoly Burakov
2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 6/9] distributor: " Anatoly Burakov
2019-10-17 10:53 ` Hunt, David
2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 7/9] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 8/9] build: change ABI version to 20.0 Anatoly Burakov
2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 9/9] buildtools: add ABI versioning check script Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 01/10] config: change ABI versioning for global Anatoly Burakov
2019-10-16 13:22 ` Bruce Richardson
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-10-16 13:25 ` Bruce Richardson
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 03/10] buildtools: add ABI update shell script Anatoly Burakov
2019-10-16 13:33 ` Bruce Richardson
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 04/10] timer: remove deprecated code Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 05/10] lpm: " Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 06/10] distributor: " Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 07/10] lib: change function suffix in distributor Anatoly Burakov
2019-10-16 13:18 ` Hunt, David
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 09/10] build: change ABI version to 20.0 Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 10/10] buildtools: add ABI versioning check script Anatoly Burakov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190930092139.2440-2-marcinx.baran@intel.com \
--to=marcinx.baran@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=pawelx.modrak@intel.com \
--cc=ray.kinsella@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).