================
@@ -0,0 +1,53 @@
+#!/usr/bin/env python3
+"""
+Usage: <path/to/input-header.h> <path/to/output-header.h> LLDB_MAJOR_VERSION 
LLDB_MINOR_VERSION LLDB_PATCH_VERSION
+
+This script uncomments and populates the versioning information in 
lldb-defines.h
+"""
+
+import argparse
+import os
+import re
+
+LLDB_VERSION_REGEX = re.compile(r'^//#define LLDB_VERSION$')
+LLDB_REVISION_REGEX = re.compile(r'^//#define LLDB_REVISION$')
+LLDB_VERSION_STRING_REGEX = re.compile(r'^//#define LLDB_VERSION_STRING$')
+
+def main():
+    parser = argparse.ArgumentParser()
+    parser.add_argument("input_path")
+    parser.add_argument("output_path")
+    parser.add_argument("lldb_version_major")
+    parser.add_argument("lldb_version_minor")
+    parser.add_argument("lldb_version_patch")
+    args = parser.parse_args()
+    input_path = str(args.input_path)
+    output_path = str(args.output_path)
+    lldb_version_major = args.lldb_version_major
+    lldb_version_minor = args.lldb_version_minor
+    lldb_version_patch = args.lldb_version_patch
+
+    with open(input_path, "r") as input_file:
+        lines = input_file.readlines()
+
+    with open(output_path, "w") as output_file:
+        for line in lines:
+            version_match = LLDB_VERSION_REGEX.match(line)
+            revision_match = LLDB_REVISION_REGEX.match(line)
+            version_string_match = LLDB_VERSION_STRING_REGEX.match(line)
+
+            # For the defines in lldb-defines.h that define the major, minor 
and version string
+            # uncomment each define and populate its value using the arguments 
passed in.
+            # e.g. //#define LLDB_VERSION -> #define LLDB_VERSION 
<LLDB_MAJOR_VERSION>
+            if version_match:
+                output_file.write(re.sub(LLDB_VERSION_REGEX, r'#define 
LLDB_VERSION ' + lldb_version_major, line))
+            elif revision_match:
+                output_file.write(re.sub(LLDB_REVISION_REGEX, r'#define 
LLDB_REVISION ' + lldb_version_patch, line))
+            elif version_string_match:
+                output_file.write(re.sub(LLDB_VERSION_STRING_REGEX, r'#define 
LLDB_VERSION_STRING "{0}.{1}.{2}"'.format(lldb_version_major, 
lldb_version_minor, lldb_version_patch), line))
+            else:
+                output_file.write(line)
----------------
JDevlieghere wrote:

Not that performance really matters here, but any reason to not do the 
substring replace on the whole buffer and make the regexes slightly less 
pedantic (e.g. now this script will fail if you have a space before or after 
the strings we're matching. Unless that's intentional? 

https://github.com/llvm/llvm-project/pull/141116
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to