1515concurrency :
1616 # label each workflow run; only the latest with each label will run
1717 # workflows on master get more expressive labels
18- group : ${{ github.workflow }}-${{ github.ref }}.
19- ${{ ( contains(fromJSON( '["refs/heads/master", "refs/heads/staging"]'), github.ref ) && github.run_id) || ''}}
18+ group : ${{ github.workflow }}-${{ github.ref }}-${{ (contains(fromJSON('["refs/heads/master", "refs/heads/staging"]'), github.ref) && github.run_id) || '' }}
2019 # cancel any running workflow with the same label
2120 cancel-in-progress : true
2221
@@ -64,11 +63,11 @@ jobs:
6463
6564 # The Hoskinson runners may not have jq installed, so do that now.
6665 - name : ' Setup jq'
67- uses : dcarbone/install-jq-action@f0e10f46ff84f4d32178b4b76e1ef180b16f82c3 # v3.1.1
66+ uses : dcarbone/install-jq-action@b7ef57d46ece78760b4019dbc4080a1ba2a40b45 # v3.2.0
6867
6968 # Checkout the master branch into a subdirectory
7069 - name : Checkout master branch
71- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
70+ uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
7271 with :
7372 # Recall that on the `leanprover-community/mathlib4-nightly-testing` repository,
7473 # we don't maintain a `master` branch at all.
7877
7978 # Checkout the PR branch into a subdirectory
8079 - name : Checkout PR branch
81- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
80+ uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
8281 with :
8382 ref : " ${{ PR_BRANCH_REF }}"
8483 path : pr-branch
@@ -132,8 +131,23 @@ jobs:
132131 - name : set LEAN_SRC_PATH
133132 shell : bash
134133 run : |
135- # Construct the LEAN_SRC_PATH using the toolchain directory
136- LEAN_SRC_PATH=".:$TOOLCHAIN_DIR/src/lean/lake:.lake/packages/Cli:.lake/packages/batteries:.lake/packages/Qq:.lake/packages/aesop:.lake/packages/proofwidgets:.lake/packages/importGraph:.lake/packages/LeanSearchClient:.lake/packages/plausible:.lake/packages/requests:.lake/packages/openAI_client:.lake/packages/reap"
134+ cd pr-branch
135+
136+ # Start with the base paths
137+ LEAN_SRC_PATH=".:$TOOLCHAIN_DIR/src/lean/lake"
138+
139+ # Extract package names from lake-manifest.json and validate them
140+ # Only allow A-Z, a-z, 0-9, _, and - characters
141+ # Build the LEAN_SRC_PATH by appending each validated package
142+ PACKAGE_NAMES=$(jq -r '.packages[].name' lake-manifest.json)
143+ for pkg in $PACKAGE_NAMES; do
144+ if [[ "$pkg" =~ ^[A-Za-z0-9_-]+$ ]]; then
145+ LEAN_SRC_PATH="$LEAN_SRC_PATH:.lake/packages/$pkg"
146+ else
147+ echo "Warning: Skipping invalid package name: $pkg"
148+ fi
149+ done
150+
137151 echo "LEAN_SRC_PATH=$LEAN_SRC_PATH"
138152
139153 # Set it as an environment variable for subsequent steps
@@ -281,6 +295,7 @@ jobs:
281295 echo "::endgroup::"
282296
283297 ../master-branch/scripts/lake-build-with-retry.sh Mathlib
298+ # results of build at pr-branch/.lake/build_summary_Mathlib*.json
284299 - name : end gh-problem-match-wrap for build step
285300 uses : leanprover-community/gh-problem-matcher-wrap@20007cb926a46aa324653a387363b52f07709845 # 2025-04-23
286301 with :
@@ -294,7 +309,7 @@ jobs:
294309
295310 - name : upload artifact containing contents of pr-branch
296311 # temporary measure for debugging no-build failures
297- uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
312+ uses : actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
298313 with :
299314 name : mathlib4_artifact
300315 include-hidden-files : true
@@ -349,13 +364,15 @@ jobs:
349364 run : |
350365 cd pr-branch
351366 ../master-branch/scripts/lake-build-with-retry.sh Archive
367+ # results of build at pr-branch/.lake/build_summary_Archive*.json
352368
353369 - name : build counterexamples
354370 id : counterexamples
355371 continue-on-error : true
356372 run : |
357373 cd pr-branch
358374 ../master-branch/scripts/lake-build-with-retry.sh Counterexamples
375+ # results of build at pr-branch/.lake/build_summary_Counterexamples*.json
359376
360377 - name : Check if building Archive or Counterexamples failed
361378 if : steps.archive.outcome == 'failure' || steps.counterexamples.outcome == 'failure'
@@ -477,12 +494,12 @@ jobs:
477494 runs-on : ubuntu-latest # Note these steps run on disposable GitHub runners, so no landrun sandboxing is needed.
478495 steps :
479496
480- - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
497+ - uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
481498 with :
482499 ref : " ${{ PR_BRANCH_REF }}"
483500
484501 - name : Configure Lean
485- uses : leanprover/lean-action@f807b338d95de7813c5c50d018f1c23c9b93b4ec # 2025-04-24
502+ uses : leanprover/lean-action@434f25c2f80ded67bba02502ad3a86f25db50709 # v1.3.0
486503 with :
487504 auto-config : false # Don't run `lake build`, `lake test`, or `lake lint` automatically.
488505 use-github-cache : false
@@ -525,7 +542,7 @@ jobs:
525542 lake exe graph
526543
527544 - name : upload the import graph
528- uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
545+ uses : actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
529546 with :
530547 name : import-graph
531548 path : import_graph.dot
@@ -538,8 +555,9 @@ jobs:
538555
539556 - name : build everything
540557 # make sure everything is available for test/import_all.lean
558+ # and that miscellaneous executables still work
541559 run : |
542- lake build Batteries Qq Aesop ProofWidgets Plausible
560+ lake build Batteries Qq Aesop ProofWidgets Plausible pole unused
543561
544562 - name : build AesopTest (nightly-testing only)
545563 # Only run on the mathlib4-nightly-testing repository
0 commit comments