llvm-project/lldb/scripts/version-header-fix.py
Chelsea Cassanova d64802d6d9
[lldb][framework] Glob headers from source for framework (#148736)
When gathering the headers to fix up and place in LLDB.framework, we
were previously globbing the header files from a location in the build
directory. This commit changes this to glob from the source directory
instead, as we were globbing from the build directory without ensuring
that the necessary files were actually in that location before globbing.
2025-07-18 15:26:09 -05:00

67 lines
2.5 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Usage: -i <path/to/input-header.h> -o <path/to/output-header.h> -m LLDB_MAJOR_VERSION -n LLDB_MINOR_VERSION -p LLDB_PATCH_VERSION
This script uncomments and populates the versioning information in lldb-defines.h. Note that the LLDB version numbering looks like MAJOR.MINOR.PATCH
"""
import argparse
import os
import re
LLDB_VERSION_REGEX = re.compile(r"//\s*#define LLDB_VERSION\s*$", re.M)
LLDB_REVISION_REGEX = re.compile(r"//\s*#define LLDB_REVISION\s*$", re.M)
LLDB_VERSION_STRING_REGEX = re.compile(r"//\s*#define LLDB_VERSION_STRING\s*$", re.M)
def main():
parser = argparse.ArgumentParser(
description="This script uncomments and populates the versioning information in lldb-defines.h. Note that the LLDB version numbering looks like MAJOR.MINOR.PATCH"
)
parser.add_argument("-i", "--input_path", help="The filepath for the input header.")
parser.add_argument(
"-o", "--output_path", help="The filepath for the output header."
)
parser.add_argument("-m", "--major", help="The LLDB version major.")
parser.add_argument("-n", "--minor", help="The LLDB version minor.")
parser.add_argument("-p", "--patch", help="The LLDB version patch number.")
args = parser.parse_args()
input_path = str(args.input_path)
output_path = str(args.output_path)
# Create the output dir if it doesn't already exist
if not os.path.exists(os.path.dirname(output_path)):
os.makedirs(os.path.dirname(output_path))
with open(input_path, "r") as input_file:
lines = input_file.readlines()
file_buffer = "".join(lines)
with open(output_path, "w") as output_file:
# 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>
file_buffer = re.sub(
LLDB_VERSION_REGEX,
r"#define LLDB_VERSION " + args.major,
file_buffer,
)
file_buffer = re.sub(
LLDB_REVISION_REGEX,
r"#define LLDB_REVISION " + args.patch,
file_buffer,
)
file_buffer = re.sub(
LLDB_VERSION_STRING_REGEX,
r'#define LLDB_VERSION_STRING "{0}.{1}.{2}"'.format(
args.major, args.minor, args.patch
),
file_buffer,
)
output_file.write(file_buffer)
if __name__ == "__main__":
main()