From ccdabc59f77204827a0a280e0d1651d32eea4e8f Mon Sep 17 00:00:00 2001 From: Paschalis Mpeis Date: Sat, 28 Jun 2025 13:23:16 +0100 Subject: [PATCH 1/4] DRAFT: remove llvm-bolt-wrapper logic from nfc setup --- bolt/utils/nfc-check-setup.py | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/bolt/utils/nfc-check-setup.py b/bolt/utils/nfc-check-setup.py index 275ac7b886d00..9e4fc8bc101b1 100755 --- a/bolt/utils/nfc-check-setup.py +++ b/bolt/utils/nfc-check-setup.py @@ -48,8 +48,7 @@ def main(): description=textwrap.dedent( """ This script builds two versions of BOLT (with the current and - previous revision) and sets up symlink for llvm-bolt-wrapper. - Passes the options through to llvm-bolt-wrapper. + previous revision). """ ) ) @@ -76,7 +75,7 @@ def main(): default="HEAD^", help="Revision to checkout to compare vs HEAD", ) - args, wrapper_args = parser.parse_known_args() + args = parser.parse_args() bolt_path = f"{args.build_dir}/bin/llvm-bolt" source_dir = None @@ -90,7 +89,6 @@ def main(): sys.exit("Source directory is not found") script_dir = os.path.dirname(os.path.abspath(__file__)) - wrapper_path = f"{script_dir}/llvm-bolt-wrapper.py" # build the current commit subprocess.run( shlex.split("cmake --build . --target llvm-bolt"), cwd=args.build_dir @@ -131,15 +129,6 @@ def main(): ) # rename llvm-bolt os.replace(bolt_path, f"{bolt_path}.old") - # set up llvm-bolt-wrapper.ini - ini = subprocess.check_output( - shlex.split(f"{wrapper_path} {bolt_path}.old {bolt_path}.new") + wrapper_args, - text=True, - ) - with open(f"{args.build_dir}/bin/llvm-bolt-wrapper.ini", "w") as f: - f.write(ini) - # symlink llvm-bolt-wrapper - os.symlink(wrapper_path, bolt_path) if args.switch_back: if stash: subprocess.run(shlex.split("git stash pop"), cwd=source_dir) From 768227b6be4e71f6c7fce803e7ab7eab4c88d332 Mon Sep 17 00:00:00 2001 From: Paschalis Mpeis Date: Tue, 1 Jul 2025 10:14:24 +0100 Subject: [PATCH 2/4] Addressing reviewers --- bolt/utils/nfc-check-setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bolt/utils/nfc-check-setup.py b/bolt/utils/nfc-check-setup.py index 9e4fc8bc101b1..4884e616a0fa3 100755 --- a/bolt/utils/nfc-check-setup.py +++ b/bolt/utils/nfc-check-setup.py @@ -88,7 +88,6 @@ def main(): if not source_dir: sys.exit("Source directory is not found") - script_dir = os.path.dirname(os.path.abspath(__file__)) # build the current commit subprocess.run( shlex.split("cmake --build . --target llvm-bolt"), cwd=args.build_dir From d9671ecd48147465f4540a47f3a7440463488cd4 Mon Sep 17 00:00:00 2001 From: Paschalis Mpeis Date: Thu, 3 Jul 2025 08:49:11 +0100 Subject: [PATCH 3/4] Reintroduce wrapper through a flag --- bolt/utils/nfc-check-setup.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/bolt/utils/nfc-check-setup.py b/bolt/utils/nfc-check-setup.py index 4884e616a0fa3..12c4f2a2f3f7f 100755 --- a/bolt/utils/nfc-check-setup.py +++ b/bolt/utils/nfc-check-setup.py @@ -58,6 +58,12 @@ def main(): default=os.getcwd(), help="Path to BOLT build directory, default is current " "directory", ) + parser.add_argument( + "--create-wrapper", + default=False, + action="store_true", + help="Sets up llvm-bolt as a symlink to llvm-bolt-wrapper. Passes the options through to llvm-bolt-wrapper.", + ) parser.add_argument( "--check-bolt-sources", default=False, @@ -75,7 +81,12 @@ def main(): default="HEAD^", help="Revision to checkout to compare vs HEAD", ) - args = parser.parse_args() + + # When creating a wrapper, pass any unknown arguments to it. Otherwise, die. + args, wrapper_args = parser.parse_known_args() + if not args.create_wrapper and len(wrapper_args) > 0: + parser.parse_args() + bolt_path = f"{args.build_dir}/bin/llvm-bolt" source_dir = None @@ -128,6 +139,24 @@ def main(): ) # rename llvm-bolt os.replace(bolt_path, f"{bolt_path}.old") + + # symlink llvm-bolt-wrapper + if args.create_wrapper: + script_dir = os.path.dirname(os.path.abspath(__file__)) + wrapper_path = f"{script_dir}/llvm-bolt-wrapper.py" + try: + # set up llvm-bolt-wrapper.ini + ini = subprocess.check_output( + shlex.split(f"{wrapper_path} {bolt_path}.old {bolt_path}.new") + wrapper_args, + text=True, + ) + with open(f"{args.build_dir}/bin/llvm-bolt-wrapper.ini", "w") as f: + f.write(ini) + # symlink llvm-bolt-wrapper + os.symlink(wrapper_path, bolt_path) + except Exception as e: + sys.exit("Failed to create a wrapper:\n" + str(e)) + if args.switch_back: if stash: subprocess.run(shlex.split("git stash pop"), cwd=source_dir) From ae9047b572384b5b2a3c4889aa987f882a6dd1e6 Mon Sep 17 00:00:00 2001 From: Paschalis Mpeis Date: Thu, 3 Jul 2025 09:39:43 +0100 Subject: [PATCH 4/4] py formatter --- bolt/utils/nfc-check-setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bolt/utils/nfc-check-setup.py b/bolt/utils/nfc-check-setup.py index 12c4f2a2f3f7f..7d634d7a88b83 100755 --- a/bolt/utils/nfc-check-setup.py +++ b/bolt/utils/nfc-check-setup.py @@ -147,7 +147,8 @@ def main(): try: # set up llvm-bolt-wrapper.ini ini = subprocess.check_output( - shlex.split(f"{wrapper_path} {bolt_path}.old {bolt_path}.new") + wrapper_args, + shlex.split(f"{wrapper_path} {bolt_path}.old {bolt_path}.new") + + wrapper_args, text=True, ) with open(f"{args.build_dir}/bin/llvm-bolt-wrapper.ini", "w") as f: