[libcxx] [llvm] [libc++] Give the LNT tooling its own requirements.txt (PR #217889)

via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 21 10:47:17 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-github-workflow

Author: Louis Dionne (ldionne)

<details>
<summary>Changes</summary>

The LNT tooling alone has way fewer dependencies. Using a smaller requirements.txt should speed up the "request historical benchmark data" cron job that runs every 30 minutes and needs to install them.

---
Full diff: https://github.com/llvm/llvm-project/pull/217889.diff


9 Files Affected:

- (modified) .github/workflows/libcxx-benchmark-commit.yml (+1-1) 
- (modified) .github/workflows/libcxx-benchmark-cron.yml (+2-2) 
- (modified) libcxx/utils/ci/lnt/dispatch-benchmarks (+1-1) 
- (modified) libcxx/utils/ci/lnt/plan-benchmarks (+1-1) 
- (added) libcxx/utils/ci/lnt/requirements.txt (+3) 
- (modified) libcxx/utils/ci/lnt/run-benchmarks (+2-2) 
- (modified) libcxx/utils/ci/lnt/select-anchor-commits (+1-1) 
- (modified) libcxx/utils/ci/lnt/submit-benchmarks (+1-1) 
- (modified) libcxx/utils/requirements.txt (+1-3) 


``````````diff
diff --git a/.github/workflows/libcxx-benchmark-commit.yml b/.github/workflows/libcxx-benchmark-commit.yml
index 5db27f0cf4db3..ad6a9dd078d64 100644
--- a/.github/workflows/libcxx-benchmark-commit.yml
+++ b/.github/workflows/libcxx-benchmark-commit.yml
@@ -144,7 +144,7 @@ jobs:
         run: |
           python3 -m venv .venv
           source .venv/bin/activate
-          pip install -r libcxx/utils/requirements.txt
+          pip install -r libcxx/utils/ci/lnt/requirements.txt
 
       - name: Run the benchmarks
         env:
diff --git a/.github/workflows/libcxx-benchmark-cron.yml b/.github/workflows/libcxx-benchmark-cron.yml
index 8b63426efd9d6..99c86e0e4f6e4 100644
--- a/.github/workflows/libcxx-benchmark-cron.yml
+++ b/.github/workflows/libcxx-benchmark-cron.yml
@@ -126,10 +126,10 @@ jobs:
         with:
           python-version: '3.14'
           cache: pip
-          cache-dependency-path: libcxx/utils/requirements.txt
+          cache-dependency-path: libcxx/utils/ci/lnt/requirements.txt
 
       - name: Install dependencies
-        run: pip install -r libcxx/utils/requirements.txt
+        run: pip install -r libcxx/utils/ci/lnt/requirements.txt
 
       - name: Determine anchor commits
         if: ${{ steps.restore-anchors.outputs.cache-hit != 'true' }}
diff --git a/libcxx/utils/ci/lnt/dispatch-benchmarks b/libcxx/utils/ci/lnt/dispatch-benchmarks
index ec92387aeed14..4af5ee4c3607c 100755
--- a/libcxx/utils/ci/lnt/dispatch-benchmarks
+++ b/libcxx/utils/ci/lnt/dispatch-benchmarks
@@ -326,7 +326,7 @@ def main(argv: List[str]) -> int:
                     'Results are submitted to LNT unless this is a dry run. That is not optional: '
                     'results that are not recorded anywhere would be requested again on every '
                     'invocation, forever.',
-        epilog='This script depends on the modules listed in `libcxx/utils/requirements.txt`.',
+        epilog='This script depends on the modules listed in `libcxx/utils/ci/lnt/requirements.txt`.',
         formatter_class=HelpFormatter)
     parser.add_argument('--work-items', type=argparse.FileType('r'), default=sys.stdin,
         help='A file containing the plan, one JSON object per line. By default, this is read from '
diff --git a/libcxx/utils/ci/lnt/plan-benchmarks b/libcxx/utils/ci/lnt/plan-benchmarks
index 25c7aa614a2c4..fe9b583674f6f 100755
--- a/libcxx/utils/ci/lnt/plan-benchmarks
+++ b/libcxx/utils/ci/lnt/plan-benchmarks
@@ -122,7 +122,7 @@ def main(argv: List[str]) -> int:
                     'Each line of the produced plan carries the commit to benchmark, the machine the '
                     'plan is about, how many runs the commit already has and how many it should end '
                     'up with, and a human-readable reason.',
-        epilog='This script depends on the modules listed in `libcxx/utils/requirements.txt`.',
+        epilog='This script depends on the modules listed in `libcxx/utils/ci/lnt/requirements.txt`.',
         formatter_class=HelpFormatter)
     parser.add_argument('--commit-list', type=argparse.FileType('r'), default=sys.stdin,
         help='A file of whitespace separated commits for which benchmark data is desired. By default, '
diff --git a/libcxx/utils/ci/lnt/requirements.txt b/libcxx/utils/ci/lnt/requirements.txt
new file mode 100644
index 0000000000000..3876354ca072c
--- /dev/null
+++ b/libcxx/utils/ci/lnt/requirements.txt
@@ -0,0 +1,3 @@
+llvm-lnt
+PyGithub
+tabulate
diff --git a/libcxx/utils/ci/lnt/run-benchmarks b/libcxx/utils/ci/lnt/run-benchmarks
index a8111d331441e..9d9c63ca4ba37 100755
--- a/libcxx/utils/ci/lnt/run-benchmarks
+++ b/libcxx/utils/ci/lnt/run-benchmarks
@@ -70,7 +70,7 @@ def main(argv):
     parser = argparse.ArgumentParser(
         prog='run-benchmarks',
         description='Benchmark libc++ at the given commit and produce a LNT JSON report.',
-        epilog='This script depends on the modules listed in `libcxx/utils/requirements.txt`.')
+        epilog='This script depends on the modules listed in `libcxx/utils/ci/lnt/requirements.txt`.')
     parser.add_argument('--benchmark-commit', type=str, required=True,
         help='The SHA representing the version of the library to benchmark.')
     parser.add_argument('--test-suite-commit', type=str, required=True,
@@ -136,7 +136,7 @@ def main(argv):
     if args.build_dir is not None and args.build_dir.exists():
         sys.exit(f'error: build directory {args.build_dir} already exists; not overwriting it')
     if shutil.which('lnt') is None:
-        sys.exit('error: cannot find `lnt`; install libcxx/utils/requirements.txt')
+        sys.exit('error: cannot find `lnt`; install libcxx/utils/ci/lnt/requirements.txt')
 
     with contextlib.ExitStack() as stack:
         # The build artifacts are kept in --build-dir when it is given, and stored in a temporary directory
diff --git a/libcxx/utils/ci/lnt/select-anchor-commits b/libcxx/utils/ci/lnt/select-anchor-commits
index 34f4c1d63aeb6..91dbf256609b6 100755
--- a/libcxx/utils/ci/lnt/select-anchor-commits
+++ b/libcxx/utils/ci/lnt/select-anchor-commits
@@ -142,7 +142,7 @@ def main(argv: List[str]) -> int:
                     'produce the same commits. This makes it possible to recompute the list in '
                     'a reproducible fashion, which is useful when e.g. re-generating historical '
                     'performance data after a configuration change.',
-        epilog='This script depends on the modules listed in `libcxx/utils/requirements.txt`.',
+        epilog='This script depends on the modules listed in `libcxx/utils/ci/lnt/requirements.txt`.',
         formatter_class=HelpFormatter)
     parser.add_argument('--since', type=date, required=True,
         help='Only select commits on or after this date (UTC). Selection starts at the first '
diff --git a/libcxx/utils/ci/lnt/submit-benchmarks b/libcxx/utils/ci/lnt/submit-benchmarks
index 6a01ce67e2b96..2f2286e369e75 100755
--- a/libcxx/utils/ci/lnt/submit-benchmarks
+++ b/libcxx/utils/ci/lnt/submit-benchmarks
@@ -18,7 +18,7 @@ def main(argv):
     parser = argparse.ArgumentParser(
         prog='submit-benchmarks',
         description='Submit a LNT JSON report to a LNT server.',
-        epilog='This script depends on the modules listed in `libcxx/utils/requirements.txt`.')
+        epilog='This script depends on the modules listed in `libcxx/utils/ci/lnt/requirements.txt`.')
     parser.add_argument('report', type=pathlib.Path,
         help='Path to the LNT JSON report to submit.')
     parser.add_argument('--lnt-url', type=str, required=True,
diff --git a/libcxx/utils/requirements.txt b/libcxx/utils/requirements.txt
index ccccf1b266783..b664c57098de9 100644
--- a/libcxx/utils/requirements.txt
+++ b/libcxx/utils/requirements.txt
@@ -1,11 +1,9 @@
+-r ci/lnt/requirements.txt
 click
 GitPython
-llvm-lnt
 numpy
 pandas
 plotly
-PyGithub
 scipy
 statsmodels
-tabulate
 tqdm

``````````

</details>


https://github.com/llvm/llvm-project/pull/217889


More information about the llvm-commits mailing list