-
Notifications
You must be signed in to change notification settings - Fork 13.7k
[BOLT] Create marker for source changes in nfc-mode testing. #142931
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[BOLT] Create marker for source changes in nfc-mode testing. #142931
Conversation
Currently NFC tests only trigger when the llvm-bolt binary itself changes. This patch adds `--check-bolt-sources`, which scans git output for any modifications under bolt/, excluding: - bolt/docs - bolt/utils/docker - bolt/utils/dot2html If any matching files change between versions, a `.llvm-bolt.changes` marker is created. Buildbots can then use this marker to trigger in-tree tests.
✅ With the latest revision this PR passed the Python code formatter. |
305cdf0
to
d037f0d
Compare
d037f0d
to
0fe8672
Compare
Will be used by: |
@llvm/pr-subscribers-bolt Author: Paschalis Mpeis (paschalis-mpeis) ChangesCurrently NFC tests only trigger when the llvm-bolt binary itself changes. This patch adds
If any matching files change between versions, a Full diff: https://github.com/llvm/llvm-project/pull/142931.diff 1 Files Affected:
diff --git a/bolt/utils/nfc-check-setup.py b/bolt/utils/nfc-check-setup.py
index 710b183505853..275ac7b886d00 100755
--- a/bolt/utils/nfc-check-setup.py
+++ b/bolt/utils/nfc-check-setup.py
@@ -7,6 +7,29 @@
import sys
import textwrap
+def get_relevant_bolt_changes(dir: str) -> str:
+ # Return a list of bolt source changes that are relevant to testing.
+ all_changes = subprocess.run(
+ shlex.split("git show HEAD --name-only --pretty=''"),
+ cwd=dir,
+ text=True,
+ stdout=subprocess.PIPE,
+ )
+ keep_bolt = subprocess.run(
+ shlex.split("grep '^bolt'"),
+ input=all_changes.stdout,
+ text=True,
+ stdout=subprocess.PIPE,
+ )
+ keep_relevant = subprocess.run(
+ shlex.split(
+ "grep -v -e '^bolt/docs' -e '^bolt/utils/docker' -e '^bolt/utils/dot2html'"
+ ),
+ input=keep_bolt.stdout,
+ text=True,
+ stdout=subprocess.PIPE,
+ )
+ return keep_relevant.stdout
def get_git_ref_or_rev(dir: str) -> str:
# Run 'git symbolic-ref -q --short HEAD || git rev-parse --short HEAD'
@@ -36,6 +59,12 @@ def main():
default=os.getcwd(),
help="Path to BOLT build directory, default is current " "directory",
)
+ parser.add_argument(
+ "--check-bolt-sources",
+ default=False,
+ action="store_true",
+ help="Create a marker file (.llvm-bolt.changes) if any relevant BOLT sources are modified",
+ )
parser.add_argument(
"--switch-back",
default=False,
@@ -71,6 +100,16 @@ def main():
# memorize the old hash for logging
old_ref = get_git_ref_or_rev(source_dir)
+ if args.check_bolt_sources:
+ marker = f"{args.build_dir}/.llvm-bolt.changes"
+ if os.path.exists(marker):
+ os.remove(marker)
+ file_changes = get_relevant_bolt_changes(source_dir)
+ # Create a marker file if any relevant BOLT source files changed.
+ if len(file_changes) > 0:
+ print(f"BOLT source changes were found:\n{file_changes}")
+ open(marker, "a").close()
+
# determine whether a stash is needed
stash = subprocess.run(
shlex.split("git status --porcelain"),
|
Currently NFC tests only trigger when the llvm-bolt binary itself changes.
This patch adds
--check-bolt-sources
, which scans git output for any modifications under bolt/, excluding:If any matching files change between versions, a
.llvm-bolt.changes
marker is created. Buildbots can then use this marker to trigger in-tree tests.