[llvm] [BOLT] Remove llvm-bolt-wrapper logic from NFC-Mode (PR #146209)

Paschalis Mpeis via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 3 01:33:55 PDT 2025


https://github.com/paschalis-mpeis updated https://github.com/llvm/llvm-project/pull/146209

>From ccdabc59f77204827a0a280e0d1651d32eea4e8f Mon Sep 17 00:00:00 2001
From: Paschalis Mpeis <Paschalis.Mpeis at arm.com>
Date: Sat, 28 Jun 2025 13:23:16 +0100
Subject: [PATCH 1/3] 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 <Paschalis.Mpeis at arm.com>
Date: Tue, 1 Jul 2025 10:14:24 +0100
Subject: [PATCH 2/3] 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 <Paschalis.Mpeis at arm.com>
Date: Thu, 3 Jul 2025 08:49:11 +0100
Subject: [PATCH 3/3] 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)



More information about the llvm-commits mailing list