[dpdk-dev] [PATCH v2 15/16] devtools: add script to ease backport of renamed files
Bruce Richardson
bruce.richardson at intel.com
Tue Apr 20 12:22:31 CEST 2021
With all the library folders renamed to remove the "librte_" prefix,
we need to fixup patches for easier backport, i.e. add back in the
prefix for any references to those renamed files.
In the script itself we use a general approach to allow other functions
to be added in future for other modifications needed to patches.
Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
---
devtools/update_patches.py | 53 ++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
create mode 100755 devtools/update_patches.py
diff --git a/devtools/update_patches.py b/devtools/update_patches.py
new file mode 100755
index 0000000000..0cff215a96
--- /dev/null
+++ b/devtools/update_patches.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2021 Intel Corporation
+
+import os
+import sys
+import shutil
+from os.path import abspath, dirname, join
+
+def fixup_library_renames(contents):
+ """since library directory names have dropped the 'librte_' prefix,
+ add those prefixes back in for patches than need it"""
+ modified = False
+
+ # first get all the DPDK libs to build up replacement list
+ # stored in function attribute between calls
+ try:
+ libdirs = fixup_library_renames.libdirs
+ except AttributeError:
+ dpdk_libdir = abspath(join(dirname(sys.argv[0]), '..', 'lib'))
+ for root, dirs, files in os.walk(dpdk_libdir):
+ fixup_library_renames.libdirs = dirs
+ libdirs = dirs
+ break
+
+ for i in range(len(contents)):
+ # skip over any lines which don't have lib in it
+ if not "lib/" in contents[i]:
+ continue
+ for d in libdirs:
+ if f'lib/{d}' in contents[i]:
+ modified = True
+ contents[i] = contents[i].replace(f'lib/{d}', f'lib/librte_{d}')
+ return modified
+
+def main():
+ "takes list of patches off argv and processes each"
+ for patch in sys.argv[1:]:
+ modified = False
+ with open(patch) as f:
+ contents = f.readlines()
+
+ modified |= fixup_library_renames(contents)
+ # other functions to change the patch go here
+
+ if not modified:
+ continue
+ shutil.copyfile(f'{patch}', f'{patch}.bak')
+ with open(patch, 'w') as f:
+ f.writelines(contents)
+
+if __name__ == "__main__":
+ main()
--
2.27.0
More information about the dev
mailing list