From 5aba8b9bd8ab3026b72ba92fe5478fc39984e140 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 11:42:17 -0400 Subject: [PATCH 01/46] Split workflow into multiple jobs --- .github/workflows/ci-ubuntu.yml | 59 +++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index a623879445..e2a6043f56 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -54,11 +54,6 @@ env: CABAL_INSTALL: cabal install --overwrite-policy=always --ghc-options='-O1 +RTS -M6G -RTS' AGDA: agda -Werror +RTS -M5G -H3.5G -A128M -RTS -i. -isrc -idoc -jobs: - test-stdlib: - runs-on: ubuntu-latest - steps: - ######################################################################## ## SETTINGS ## @@ -71,6 +66,15 @@ jobs: ## master version at the root and the experimental in a subdirectory. ######################################################################## +jobs: + + ######################################################################## + ## INITIALISATION + ######################################################################## + init: + runs-on: ubuntu-latest + steps: + - name: Initialise variables run: | if [[ '${{ github.ref }}' == 'refs/heads/experimental' \ @@ -89,9 +93,9 @@ jobs: echo "AGDA_DEPLOY=true" >> "${GITHUB_ENV}" fi -######################################################################## -## CACHING -######################################################################## + ######################################################################## + ## CACHING + ######################################################################## # This caching step allows us to save a lot of building time by only @@ -109,9 +113,9 @@ jobs: ~/.cabal/share key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-${{ env.AGDA_COMMIT }}-cache -######################################################################## -## INSTALLATION STEPS -######################################################################## + ######################################################################## + ## INSTALLATION STEPS + ######################################################################## - name: Install ghc & cabal uses: haskell-actions/setup@v2 @@ -142,14 +146,18 @@ jobs: ${{ env.CABAL_V1_INSTALL }} cd .. -######################################################################## -## TESTING -######################################################################## - # By default github actions do not pull the repo - name: Checkout stdlib uses: actions/checkout@v5 + ######################################################################## + ## TESTING + ######################################################################## + test-stdlib: + needs: init + runs-on: ubuntu-latest + steps: + - name: Test stdlib run: | # Including deprecated modules purely for testing @@ -157,6 +165,18 @@ jobs: ${{ env.AGDA }} -WnoUserWarning --safe EverythingSafe.agda ${{ env.AGDA }} -WnoUserWarning Everything.agda + - name: Golden testing + run: | + make testsuite INTERACTIVE='' AGDA_EXEC='agda' GHC_EXEC='ghc' + + + ######################################################################## + ## DOC DEPLOYMENT + ######################################################################## + html: + needs: init + runs-on: ubuntu-latest + steps: - name: Prepare HTML index run: | # Regenerating the Everything files without the deprecated modules @@ -167,15 +187,6 @@ jobs: ${{ env.AGDA }} Everything.agda ${{ env.AGDA }} index.agda - - name: Golden testing - run: | - make testsuite INTERACTIVE='' AGDA_EXEC='agda' GHC_EXEC='ghc' - - -######################################################################## -## DOC DEPLOYMENT -######################################################################## - # We start by retrieving the currently deployed docs # We remove the content that is in the directory we are going to populate # so that stale files corresponding to deleted modules do not accumulate. From 09510740b0ffa5e3ff11a29bdeb09447f4c49196 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 12:36:05 -0400 Subject: [PATCH 02/46] Split init into composible action --- .github/workflows/ci-ubuntu-init/action.yml | 84 +++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 .github/workflows/ci-ubuntu-init/action.yml diff --git a/.github/workflows/ci-ubuntu-init/action.yml b/.github/workflows/ci-ubuntu-init/action.yml new file mode 100644 index 0000000000..00387fa569 --- /dev/null +++ b/.github/workflows/ci-ubuntu-init/action.yml @@ -0,0 +1,84 @@ +name: "CI Ubuntu Init" +description: "Set up variables and install dependencies for ci-ubuntu" + +runs: + using: "composite" + ######################################################################## + ## INITIALISATION + ######################################################################## + steps: + + - name: Initialise variables + run: | + if [[ '${{ github.ref }}' == 'refs/heads/experimental' \ + || '${{ github.base_ref }}' == 'experimental' ]]; then + # Pick Agda version for experimental + echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_ENV}"; + echo "AGDA_HTML_DIR=html/experimental" >> "${GITHUB_ENV}" + else + # Pick Agda version for master + echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_ENV}"; + echo "AGDA_HTML_DIR=html/master" >> "${GITHUB_ENV}" + fi + + if [[ '${{ github.ref }}' == 'refs/heads/master' \ + || '${{ github.ref }}' == 'refs/heads/experimental' ]]; then + echo "AGDA_DEPLOY=true" >> "${GITHUB_ENV}" + fi + + ######################################################################## + ## CACHING + ######################################################################## + + + # This caching step allows us to save a lot of building time by only + # downloading ghc and cabal and rebuilding Agda if absolutely necessary + # i.e. if we change either the version of Agda, ghc, or cabal that we want + # to use for the build. + - name: Cache ~/.cabal directories + uses: actions/cache@v4 + id: cache-cabal + with: + path: | + ~/.cabal/packages + ~/.cabal/store + ~/.cabal/bin + ~/.cabal/share + key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-${{ env.AGDA_COMMIT }}-cache + + ######################################################################## + ## INSTALLATION STEPS + ######################################################################## + + - name: Install ghc & cabal + uses: haskell-actions/setup@v2 + with: + ghc-version: ${{ env.GHC_VERSION }} + cabal-version: ${{ env.CABAL_VERSION }} + cabal-update: true + + - name: Put cabal programs in PATH + run: echo ~/.cabal/bin >> "${GITHUB_PATH}" + + - name: Install alex & happy + if: steps.cache-cabal.outputs.cache-hit != 'true' + run: | + ${{ env.CABAL_INSTALL }} alex + ${{ env.CABAL_INSTALL }} happy + # happy>=2.0 cannot be v1-installed: https://github.com/haskell/happy/issues/315 + # Since we only need the executable, it is fine to use v2-install here. + + - name: Download and install Agda from github + if: steps.cache-cabal.outputs.cache-hit != 'true' + run: | + git clone https://github.com/agda/agda + cd agda + git checkout ${{ env.AGDA_COMMIT }} + mkdir -p doc + touch doc/user-manual.pdf + ${{ env.CABAL_V1_INSTALL }} + cd .. + + # By default github actions does not pull the repo + - name: Checkout stdlib + uses: actions/checkout@v5 \ No newline at end of file From 0ac360d4db7f04bafbed1899357abd099bbb7067 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 12:36:15 -0400 Subject: [PATCH 03/46] Fix init --- .github/workflows/ci-ubuntu.yml | 90 +++------------------------------ 1 file changed, 6 insertions(+), 84 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index e2a6043f56..e3246f2b74 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -68,96 +68,16 @@ env: jobs: - ######################################################################## - ## INITIALISATION - ######################################################################## - init: - runs-on: ubuntu-latest - steps: - - - name: Initialise variables - run: | - if [[ '${{ github.ref }}' == 'refs/heads/experimental' \ - || '${{ github.base_ref }}' == 'experimental' ]]; then - # Pick Agda version for experimental - echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_ENV}"; - echo "AGDA_HTML_DIR=html/experimental" >> "${GITHUB_ENV}" - else - # Pick Agda version for master - echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_ENV}"; - echo "AGDA_HTML_DIR=html/master" >> "${GITHUB_ENV}" - fi - - if [[ '${{ github.ref }}' == 'refs/heads/master' \ - || '${{ github.ref }}' == 'refs/heads/experimental' ]]; then - echo "AGDA_DEPLOY=true" >> "${GITHUB_ENV}" - fi - - ######################################################################## - ## CACHING - ######################################################################## - - - # This caching step allows us to save a lot of building time by only - # downloading ghc and cabal and rebuilding Agda if absolutely necessary - # i.e. if we change either the version of Agda, ghc, or cabal that we want - # to use for the build. - - name: Cache ~/.cabal directories - uses: actions/cache@v4 - id: cache-cabal - with: - path: | - ~/.cabal/packages - ~/.cabal/store - ~/.cabal/bin - ~/.cabal/share - key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-${{ env.AGDA_COMMIT }}-cache - - ######################################################################## - ## INSTALLATION STEPS - ######################################################################## - - - name: Install ghc & cabal - uses: haskell-actions/setup@v2 - with: - ghc-version: ${{ env.GHC_VERSION }} - cabal-version: ${{ env.CABAL_VERSION }} - cabal-update: true - - - name: Put cabal programs in PATH - run: echo ~/.cabal/bin >> "${GITHUB_PATH}" - - - name: Install alex & happy - if: steps.cache-cabal.outputs.cache-hit != 'true' - run: | - ${{ env.CABAL_INSTALL }} alex - ${{ env.CABAL_INSTALL }} happy - # happy>=2.0 cannot be v1-installed: https://github.com/haskell/happy/issues/315 - # Since we only need the executable, it is fine to use v2-install here. - - - name: Download and install Agda from github - if: steps.cache-cabal.outputs.cache-hit != 'true' - run: | - git clone https://github.com/agda/agda - cd agda - git checkout ${{ env.AGDA_COMMIT }} - mkdir -p doc - touch doc/user-manual.pdf - ${{ env.CABAL_V1_INSTALL }} - cd .. - - # By default github actions do not pull the repo - - name: Checkout stdlib - uses: actions/checkout@v5 - ######################################################################## ## TESTING ######################################################################## test-stdlib: - needs: init runs-on: ubuntu-latest steps: + - name: Init + uses: ./.github/workflows/ci-ubuntu-init + - name: Test stdlib run: | # Including deprecated modules purely for testing @@ -174,9 +94,11 @@ jobs: ## DOC DEPLOYMENT ######################################################################## html: - needs: init runs-on: ubuntu-latest steps: + - name: Init + uses: ./.github/workflows/ci-ubuntu-init + - name: Prepare HTML index run: | # Regenerating the Everything files without the deprecated modules From ae3cdd7acafc18f2ca21c5a90f20d56831acc1a1 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 12:46:55 -0400 Subject: [PATCH 04/46] Run checkout before composite action --- .github/workflows/ci-ubuntu-init/action.yml | 7 +------ .github/workflows/ci-ubuntu.yml | 2 ++ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci-ubuntu-init/action.yml b/.github/workflows/ci-ubuntu-init/action.yml index 00387fa569..a59521eb5d 100644 --- a/.github/workflows/ci-ubuntu-init/action.yml +++ b/.github/workflows/ci-ubuntu-init/action.yml @@ -7,7 +7,6 @@ runs: ## INITIALISATION ######################################################################## steps: - - name: Initialise variables run: | if [[ '${{ github.ref }}' == 'refs/heads/experimental' \ @@ -77,8 +76,4 @@ runs: mkdir -p doc touch doc/user-manual.pdf ${{ env.CABAL_V1_INSTALL }} - cd .. - - # By default github actions does not pull the repo - - name: Checkout stdlib - uses: actions/checkout@v5 \ No newline at end of file + cd .. \ No newline at end of file diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index e3246f2b74..599829e3ca 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -76,6 +76,7 @@ jobs: steps: - name: Init + uses: actions/checkout@v5 uses: ./.github/workflows/ci-ubuntu-init - name: Test stdlib @@ -97,6 +98,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Init + uses: actions/checkout@v5 uses: ./.github/workflows/ci-ubuntu-init - name: Prepare HTML index From 2095827bf1cf5631d6eb986fa997a9da0f610903 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 12:50:24 -0400 Subject: [PATCH 05/46] Fix checkout step --- .github/workflows/ci-ubuntu.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 599829e3ca..94bb1def27 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -74,9 +74,8 @@ jobs: test-stdlib: runs-on: ubuntu-latest steps: - + - uses: actions/checkout@v5 - name: Init - uses: actions/checkout@v5 uses: ./.github/workflows/ci-ubuntu-init - name: Test stdlib @@ -97,8 +96,8 @@ jobs: html: runs-on: ubuntu-latest steps: + - uses: actions/checkout@v5 - name: Init - uses: actions/checkout@v5 uses: ./.github/workflows/ci-ubuntu-init - name: Prepare HTML index From 613db50482c3ac16d31c133d2435e0fcf421877b Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 12:53:00 -0400 Subject: [PATCH 06/46] Add shell property to steps --- .github/workflows/ci-ubuntu-init/action.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci-ubuntu-init/action.yml b/.github/workflows/ci-ubuntu-init/action.yml index a59521eb5d..f2f3f454e5 100644 --- a/.github/workflows/ci-ubuntu-init/action.yml +++ b/.github/workflows/ci-ubuntu-init/action.yml @@ -8,6 +8,7 @@ runs: ######################################################################## steps: - name: Initialise variables + shell: bash run: | if [[ '${{ github.ref }}' == 'refs/heads/experimental' \ || '${{ github.base_ref }}' == 'experimental' ]]; then @@ -35,6 +36,7 @@ runs: # i.e. if we change either the version of Agda, ghc, or cabal that we want # to use for the build. - name: Cache ~/.cabal directories + shell: bash uses: actions/cache@v4 id: cache-cabal with: @@ -50,6 +52,7 @@ runs: ######################################################################## - name: Install ghc & cabal + shell: bash uses: haskell-actions/setup@v2 with: ghc-version: ${{ env.GHC_VERSION }} @@ -57,9 +60,11 @@ runs: cabal-update: true - name: Put cabal programs in PATH + shell: bash run: echo ~/.cabal/bin >> "${GITHUB_PATH}" - name: Install alex & happy + shell: bash if: steps.cache-cabal.outputs.cache-hit != 'true' run: | ${{ env.CABAL_INSTALL }} alex @@ -68,6 +73,7 @@ runs: # Since we only need the executable, it is fine to use v2-install here. - name: Download and install Agda from github + shell: bash if: steps.cache-cabal.outputs.cache-hit != 'true' run: | git clone https://github.com/agda/agda From f0afeb0935aec6dc9bc708d4a055df9ba24b0748 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 14:23:57 -0400 Subject: [PATCH 07/46] Remove composible action --- .github/workflows/ci-ubuntu-init/action.yml | 85 --------------------- 1 file changed, 85 deletions(-) delete mode 100644 .github/workflows/ci-ubuntu-init/action.yml diff --git a/.github/workflows/ci-ubuntu-init/action.yml b/.github/workflows/ci-ubuntu-init/action.yml deleted file mode 100644 index f2f3f454e5..0000000000 --- a/.github/workflows/ci-ubuntu-init/action.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: "CI Ubuntu Init" -description: "Set up variables and install dependencies for ci-ubuntu" - -runs: - using: "composite" - ######################################################################## - ## INITIALISATION - ######################################################################## - steps: - - name: Initialise variables - shell: bash - run: | - if [[ '${{ github.ref }}' == 'refs/heads/experimental' \ - || '${{ github.base_ref }}' == 'experimental' ]]; then - # Pick Agda version for experimental - echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_ENV}"; - echo "AGDA_HTML_DIR=html/experimental" >> "${GITHUB_ENV}" - else - # Pick Agda version for master - echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_ENV}"; - echo "AGDA_HTML_DIR=html/master" >> "${GITHUB_ENV}" - fi - - if [[ '${{ github.ref }}' == 'refs/heads/master' \ - || '${{ github.ref }}' == 'refs/heads/experimental' ]]; then - echo "AGDA_DEPLOY=true" >> "${GITHUB_ENV}" - fi - - ######################################################################## - ## CACHING - ######################################################################## - - - # This caching step allows us to save a lot of building time by only - # downloading ghc and cabal and rebuilding Agda if absolutely necessary - # i.e. if we change either the version of Agda, ghc, or cabal that we want - # to use for the build. - - name: Cache ~/.cabal directories - shell: bash - uses: actions/cache@v4 - id: cache-cabal - with: - path: | - ~/.cabal/packages - ~/.cabal/store - ~/.cabal/bin - ~/.cabal/share - key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-${{ env.AGDA_COMMIT }}-cache - - ######################################################################## - ## INSTALLATION STEPS - ######################################################################## - - - name: Install ghc & cabal - shell: bash - uses: haskell-actions/setup@v2 - with: - ghc-version: ${{ env.GHC_VERSION }} - cabal-version: ${{ env.CABAL_VERSION }} - cabal-update: true - - - name: Put cabal programs in PATH - shell: bash - run: echo ~/.cabal/bin >> "${GITHUB_PATH}" - - - name: Install alex & happy - shell: bash - if: steps.cache-cabal.outputs.cache-hit != 'true' - run: | - ${{ env.CABAL_INSTALL }} alex - ${{ env.CABAL_INSTALL }} happy - # happy>=2.0 cannot be v1-installed: https://github.com/haskell/happy/issues/315 - # Since we only need the executable, it is fine to use v2-install here. - - - name: Download and install Agda from github - shell: bash - if: steps.cache-cabal.outputs.cache-hit != 'true' - run: | - git clone https://github.com/agda/agda - cd agda - git checkout ${{ env.AGDA_COMMIT }} - mkdir -p doc - touch doc/user-manual.pdf - ${{ env.CABAL_V1_INSTALL }} - cd .. \ No newline at end of file From f6d620b8646b2af999be943b2ed808d5e53f2b92 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 14:24:54 -0400 Subject: [PATCH 08/46] Move init back into main workflow --- .github/workflows/ci-ubuntu.yml | 80 ++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 94bb1def27..3df1531f03 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -67,6 +67,82 @@ env: ######################################################################## jobs: + ######################################################################## + ## INITIALISATION + ######################################################################## + steps: + - name: Initialise variables + run: | + if [[ '${{ github.ref }}' == 'refs/heads/experimental' \ + || '${{ github.base_ref }}' == 'experimental' ]]; then + # Pick Agda version for experimental + echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_ENV}"; + echo "AGDA_HTML_DIR=html/experimental" >> "${GITHUB_ENV}" + else + # Pick Agda version for master + echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_ENV}"; + echo "AGDA_HTML_DIR=html/master" >> "${GITHUB_ENV}" + fi + + if [[ '${{ github.ref }}' == 'refs/heads/master' \ + || '${{ github.ref }}' == 'refs/heads/experimental' ]]; then + echo "AGDA_DEPLOY=true" >> "${GITHUB_ENV}" + fi + + ######################################################################## + ## CACHING + ######################################################################## + + + # This caching step allows us to save a lot of building time by only + # downloading ghc and cabal and rebuilding Agda if absolutely necessary + # i.e. if we change either the version of Agda, ghc, or cabal that we want + # to use for the build. + - name: Cache ~/.cabal directories + shell: bash + uses: actions/cache@v4 + id: cache-cabal + with: + path: | + ~/.cabal/packages + ~/.cabal/store + ~/.cabal/bin + ~/.cabal/share + key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-${{ env.AGDA_COMMIT }}-cache + + ######################################################################## + ## INSTALLATION STEPS + ######################################################################## + + - name: Install ghc & cabal + shell: bash + uses: haskell-actions/setup@v2 + with: + ghc-version: ${{ env.GHC_VERSION }} + cabal-version: ${{ env.CABAL_VERSION }} + cabal-update: true + + - name: Put cabal programs in PATH + run: echo ~/.cabal/bin >> "${GITHUB_PATH}" + + - name: Install alex & happy + if: steps.cache-cabal.outputs.cache-hit != 'true' + run: | + ${{ env.CABAL_INSTALL }} alex + ${{ env.CABAL_INSTALL }} happy + # happy>=2.0 cannot be v1-installed: https://github.com/haskell/happy/issues/315 + # Since we only need the executable, it is fine to use v2-install here. + + - name: Download and install Agda from github + if: steps.cache-cabal.outputs.cache-hit != 'true' + run: | + git clone https://github.com/agda/agda + cd agda + git checkout ${{ env.AGDA_COMMIT }} + mkdir -p doc + touch doc/user-manual.pdf + ${{ env.CABAL_V1_INSTALL }} + cd .. ######################################################################## ## TESTING @@ -76,7 +152,7 @@ jobs: steps: - uses: actions/checkout@v5 - name: Init - uses: ./.github/workflows/ci-ubuntu-init + uses: .github/workflows/ci-ubuntu-init - name: Test stdlib run: | @@ -98,7 +174,7 @@ jobs: steps: - uses: actions/checkout@v5 - name: Init - uses: ./.github/workflows/ci-ubuntu-init + uses: .github/workflows/ci-ubuntu-init - name: Prepare HTML index run: | From fe98636e16aebd78b72759e99d972a2e0f1872e7 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 15:29:55 -0400 Subject: [PATCH 09/46] Use upload-artificacts to share binaries between jobs --- .github/workflows/ci-ubuntu.yml | 256 +++++++++++++++++++++----------- 1 file changed, 173 insertions(+), 83 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 3df1531f03..0377a1c002 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -70,89 +70,131 @@ jobs: ######################################################################## ## INITIALISATION ######################################################################## - steps: - - name: Initialise variables - run: | - if [[ '${{ github.ref }}' == 'refs/heads/experimental' \ - || '${{ github.base_ref }}' == 'experimental' ]]; then - # Pick Agda version for experimental - echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_ENV}"; - echo "AGDA_HTML_DIR=html/experimental" >> "${GITHUB_ENV}" - else - # Pick Agda version for master - echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_ENV}"; - echo "AGDA_HTML_DIR=html/master" >> "${GITHUB_ENV}" - fi - - if [[ '${{ github.ref }}' == 'refs/heads/master' \ - || '${{ github.ref }}' == 'refs/heads/experimental' ]]; then - echo "AGDA_DEPLOY=true" >> "${GITHUB_ENV}" - fi - - ######################################################################## - ## CACHING - ######################################################################## - - - # This caching step allows us to save a lot of building time by only - # downloading ghc and cabal and rebuilding Agda if absolutely necessary - # i.e. if we change either the version of Agda, ghc, or cabal that we want - # to use for the build. - - name: Cache ~/.cabal directories - shell: bash - uses: actions/cache@v4 - id: cache-cabal - with: - path: | - ~/.cabal/packages - ~/.cabal/store - ~/.cabal/bin - ~/.cabal/share - key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-${{ env.AGDA_COMMIT }}-cache - - ######################################################################## - ## INSTALLATION STEPS - ######################################################################## - - - name: Install ghc & cabal - shell: bash - uses: haskell-actions/setup@v2 - with: - ghc-version: ${{ env.GHC_VERSION }} - cabal-version: ${{ env.CABAL_VERSION }} - cabal-update: true - - - name: Put cabal programs in PATH - run: echo ~/.cabal/bin >> "${GITHUB_PATH}" - - - name: Install alex & happy - if: steps.cache-cabal.outputs.cache-hit != 'true' - run: | - ${{ env.CABAL_INSTALL }} alex - ${{ env.CABAL_INSTALL }} happy - # happy>=2.0 cannot be v1-installed: https://github.com/haskell/happy/issues/315 - # Since we only need the executable, it is fine to use v2-install here. - - - name: Download and install Agda from github - if: steps.cache-cabal.outputs.cache-hit != 'true' - run: | - git clone https://github.com/agda/agda - cd agda - git checkout ${{ env.AGDA_COMMIT }} - mkdir -p doc - touch doc/user-manual.pdf - ${{ env.CABAL_V1_INSTALL }} - cd .. + init: + runs-on: ubuntu-latest + outputs: + AGDA_COMMIT: ${{ steps.init_vars.outputs.AGDA_COMMIT }} + AGDA_HTML_DIR: ${{ steps.init_vars.outputs.AGDA_HTML_DIR }} + AGDA_DEPLOY: ${{ steps.init_vars.outputs.AGDA_DEPLOY }} + PATH: ${{ steps.path.outputs.PATH }} + GHC_PATH: ${{ steps.install-ghc-cabal.outputs.ghc-path }} + steps: + - name: Initialise variables + id: init_vars + run: | + if [[ '${{ github.ref }}' == 'refs/heads/experimental' \ + || '${{ github.base_ref }}' == 'experimental' ]]; then + # Pick Agda version for experimental + echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_OUTPUT}"; + echo "AGDA_HTML_DIR=html/experimental" >> "${GITHUB_OUTPUT}" + else + # Pick Agda version for master + echo "AGDA_COMMIT=tags/v2.8.0" >> "${GITHUB_OUTPUT}"; + echo "AGDA_HTML_DIR=html/master" >> "${GITHUB_OUTPUT}" + fi + + if [[ '${{ github.ref }}' == 'refs/heads/master' \ + || '${{ github.ref }}' == 'refs/heads/experimental' ]]; then + echo "AGDA_DEPLOY=true" >> "${GITHUB_OUTPUT}" + fi + + ######################################################################## + ## CACHING + ######################################################################## + + + # This caching step allows us to save a lot of building time by only + # downloading ghc and cabal and rebuilding Agda if absolutely necessary + # i.e. if we change either the version of Agda, ghc, or cabal that we want + # to use for the build. + - name: Cache ~/.cabal directories + uses: actions/cache@v4 + id: cache-cabal + with: + path: | + ~/.cabal/packages + ~/.cabal/store + ~/.cabal/bin + ~/.cabal/share + key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-${{ steps.init_vars.outputs.AGDA_COMMIT }}-cache + + ######################################################################## + ## INSTALLATION STEPS + ######################################################################## + + - name: Install ghc & cabal + id: install-ghc-cabal + uses: haskell-actions/setup@v2 + with: + ghc-version: ${{ env.GHC_VERSION }} + cabal-version: ${{ env.CABAL_VERSION }} + cabal-update: true + + - name: Put cabal programs in PATH + id: path + run: | + echo ~/.cabal/bin >> "${GITHUB_PATH}" + echo ${{ steps.install-ghc-cabal.outputs.ghc-path }} >> "${GITHUB_PATH}" + "PATH=${{GITHUB_PATH}}" >> "${GITHUB_OUTPUT}" + + - name: Install alex & happy + if: steps.cache-cabal.outputs.cache-hit != 'true' + run: | + ${{ env.CABAL_INSTALL }} alex + ${{ env.CABAL_INSTALL }} happy + # happy>=2.0 cannot be v1-installed: https://github.com/haskell/happy/issues/315 + # Since we only need the executable, it is fine to use v2-install here. + + - name: Download and install Agda from github + if: steps.cache-cabal.outputs.cache-hit != 'true' + run: | + git clone https://github.com/agda/agda + cd agda + git checkout ${{ steps.init_vars.outputs.AGDA_COMMIT }} + mkdir -p doc + touch doc/user-manual.pdf + ${{ env.CABAL_V1_INSTALL }} + cd .. + + - name: Upload Cabal directory + uses: actions/upload-artifact@v4 + with: + include-hidden-files: true + name: ubuntu-cabal-dir + path: ~/.cabal/ + + - name: Upload GHC directory + uses: actions/upload-artificat@v4 + with: + include-hidden-files: true + name: ubuntu-ghc-dir + path: ${{ steps.install-ghc-cabal.outputs.ghc-path }} + ######################################################################## ## TESTING ######################################################################## test-stdlib: + needs: init runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 - - name: Init - uses: .github/workflows/ci-ubuntu-init + - name: Checkout + uses: actions/checkout@v5 + + - name: Download Cabal directory + uses: actions/download-artifact@v4 + with: + name: ubuntu-cabal-dir + path: ~/.cabal/ + + - name: Download GHC directory + uses: actions/download-artifact@v4 + with: + name: ubuntu-ghc-dir + path: ${{ needs.init.outputs.GHC_PATH }} + + - name: Set PATH + run: ${{ needs.init.outputs.PATH }} >> ${GITHUB_PATH} - name: Test stdlib run: | @@ -161,6 +203,39 @@ jobs: ${{ env.AGDA }} -WnoUserWarning --safe EverythingSafe.agda ${{ env.AGDA }} -WnoUserWarning Everything.agda + - name: Upload agdai files + uses: actions/upload-artifact@v4 + with: + name: ubuntu-agdai + path: ./*.agdai + + test-stdlib-golden: + needs: [init, test-stdlib] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Download Cabal directory + uses: actions/download-artifact@v4 + with: + name: ubuntu-cabal-dir + path: ~/.cabal/ + + - name: Download GHC directory + uses: actions/download-artifact@v4 + with: + name: ubuntu-ghc-dir + path: ${{ needs.init.outputs.GHC_PATH }} + + - name: Download agdai files + uses: actions/download-artifact@v4 + with: + name: ubuntu-agdai + + - name: Set PATH + run: ${{ needs.init.outputs.PATH }} >> ${GITHUB_PATH} + - name: Golden testing run: | make testsuite INTERACTIVE='' AGDA_EXEC='agda' GHC_EXEC='ghc' @@ -170,11 +245,26 @@ jobs: ## DOC DEPLOYMENT ######################################################################## html: + needs: [init, test-stdlib] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 - - name: Init - uses: .github/workflows/ci-ubuntu-init + - name: Checkout + uses: actions/checkout@v5 + + - name: Download Cabal Dir + uses: actions/download-artifact@v4 + with: + name: ubuntu-cabal-dir + path: ~/.cabal/ + + - name: Download GHC Dir + uses: actions/download-artifact@v4 + with: + name: ubuntu-ghc-dir + path: ${{ needs.init.outputs.GHC_PATH }} + + - name: Set PATH + run: ${{ needs.init.outputs.PATH }} >> ${GITHUB_PATH} - name: Prepare HTML index run: | @@ -193,15 +283,15 @@ jobs: - name: Generate HTML run: | git clone --depth 1 --single-branch --branch gh-pages https://github.com/agda/agda-stdlib html - rm -f '${{ env.AGDA_HTML_DIR }}'/*.html - rm -f '${{ env.AGDA_HTML_DIR }}'/*.css - ${{ env.AGDA }} --html --html-dir ${{ env.AGDA_HTML_DIR }} index.agda + rm -f '${{ needs.init.outputs.AGDA_HTML_DIR }}'/*.html + rm -f '${{ needs.init.outputs.AGDA_HTML_DIR }}'/*.css + ${{ env.AGDA }} --html --html-dir ${{ needs.init.outputs.AGDA_HTML_DIR }} index.agda cp .github/tooling/* . ./landing.sh - name: Deploy HTML uses: JamesIves/github-pages-deploy-action@v4 - if: success() && env.AGDA_DEPLOY + if: success() && needs.init.outputs.AGDA_DEPLOY with: branch: gh-pages From fd9e589037a7a7c2e6b8095bdf5c0766296af070 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 15:33:42 -0400 Subject: [PATCH 10/46] Split outputting PATH onto separate step --- .github/workflows/ci-ubuntu.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 0377a1c002..5e644d6a13 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -131,11 +131,12 @@ jobs: cabal-update: true - name: Put cabal programs in PATH - id: path run: | echo ~/.cabal/bin >> "${GITHUB_PATH}" echo ${{ steps.install-ghc-cabal.outputs.ghc-path }} >> "${GITHUB_PATH}" - "PATH=${{GITHUB_PATH}}" >> "${GITHUB_OUTPUT}" + + - name: Output PATH + run: "PATH=${{GITHUB_PATH}}" >> "${GITHUB_OUTPUT}" - name: Install alex & happy if: steps.cache-cabal.outputs.cache-hit != 'true' From 52cc1b491a8d4994ab6ee16fb37c06fc4cfdc4a6 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 15:34:48 -0400 Subject: [PATCH 11/46] Fix GITHUB_PATH --- .github/workflows/ci-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 5e644d6a13..60683cfdf8 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -136,7 +136,7 @@ jobs: echo ${{ steps.install-ghc-cabal.outputs.ghc-path }} >> "${GITHUB_PATH}" - name: Output PATH - run: "PATH=${{GITHUB_PATH}}" >> "${GITHUB_OUTPUT}" + run: "PATH=${GITHUB_PATH}" >> "${GITHUB_OUTPUT}" - name: Install alex & happy if: steps.cache-cabal.outputs.cache-hit != 'true' From 8ba924c308c9542bffd043483373a22cfcfc3a8b Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 15:36:18 -0400 Subject: [PATCH 12/46] Fix output PATH step --- .github/workflows/ci-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 60683cfdf8..3b3e94a3eb 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -136,7 +136,7 @@ jobs: echo ${{ steps.install-ghc-cabal.outputs.ghc-path }} >> "${GITHUB_PATH}" - name: Output PATH - run: "PATH=${GITHUB_PATH}" >> "${GITHUB_OUTPUT}" + run: echo "PATH=${GITHUB_PATH}" >> "${GITHUB_OUTPUT}" - name: Install alex & happy if: steps.cache-cabal.outputs.cache-hit != 'true' From e880ba454a7a56195059d81bc3d1badee4fd36fd Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 15:37:30 -0400 Subject: [PATCH 13/46] Fix typo --- .github/workflows/ci-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 3b3e94a3eb..9d58d0db91 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -165,7 +165,7 @@ jobs: path: ~/.cabal/ - name: Upload GHC directory - uses: actions/upload-artificat@v4 + uses: actions/upload-artifact@v4 with: include-hidden-files: true name: ubuntu-ghc-dir From e20f023c6919c3594391643350c5f3f086407c8c Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 15:53:52 -0400 Subject: [PATCH 14/46] Fix GITHUB_PATH read --- .github/workflows/ci-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 9d58d0db91..b0d5ff654f 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -136,7 +136,7 @@ jobs: echo ${{ steps.install-ghc-cabal.outputs.ghc-path }} >> "${GITHUB_PATH}" - name: Output PATH - run: echo "PATH=${GITHUB_PATH}" >> "${GITHUB_OUTPUT}" + run: echo "PATH=${{GITHUB_PATH}}" >> "${GITHUB_OUTPUT}" - name: Install alex & happy if: steps.cache-cabal.outputs.cache-hit != 'true' From 48e0096bf72ede9054b1be4bb2e029da9278186d Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 15:57:56 -0400 Subject: [PATCH 15/46] Fix output PATH --- .github/workflows/ci-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index b0d5ff654f..d69ce5e33f 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -136,7 +136,7 @@ jobs: echo ${{ steps.install-ghc-cabal.outputs.ghc-path }} >> "${GITHUB_PATH}" - name: Output PATH - run: echo "PATH=${{GITHUB_PATH}}" >> "${GITHUB_OUTPUT}" + run: echo "PATH=$PATH" >> "${GITHUB_OUTPUT}" - name: Install alex & happy if: steps.cache-cabal.outputs.cache-hit != 'true' From 530251fdab026a2b1f0c615dbd9a76ea38cdda47 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 16:11:38 -0400 Subject: [PATCH 16/46] Fix setting PATH --- .github/workflows/ci-ubuntu.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index d69ce5e33f..c7bc7873ab 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -76,7 +76,7 @@ jobs: AGDA_COMMIT: ${{ steps.init_vars.outputs.AGDA_COMMIT }} AGDA_HTML_DIR: ${{ steps.init_vars.outputs.AGDA_HTML_DIR }} AGDA_DEPLOY: ${{ steps.init_vars.outputs.AGDA_DEPLOY }} - PATH: ${{ steps.path.outputs.PATH }} + BIN_PATH: ${{ steps.path.outputs.BIN_PATH }} GHC_PATH: ${{ steps.install-ghc-cabal.outputs.ghc-path }} steps: - name: Initialise variables @@ -136,7 +136,7 @@ jobs: echo ${{ steps.install-ghc-cabal.outputs.ghc-path }} >> "${GITHUB_PATH}" - name: Output PATH - run: echo "PATH=$PATH" >> "${GITHUB_OUTPUT}" + run: echo "BIN_PATH=$PATH" >> "${GITHUB_OUTPUT}" - name: Install alex & happy if: steps.cache-cabal.outputs.cache-hit != 'true' @@ -195,7 +195,7 @@ jobs: path: ${{ needs.init.outputs.GHC_PATH }} - name: Set PATH - run: ${{ needs.init.outputs.PATH }} >> ${GITHUB_PATH} + run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} - name: Test stdlib run: | @@ -235,7 +235,7 @@ jobs: name: ubuntu-agdai - name: Set PATH - run: ${{ needs.init.outputs.PATH }} >> ${GITHUB_PATH} + run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} - name: Golden testing run: | @@ -265,7 +265,7 @@ jobs: path: ${{ needs.init.outputs.GHC_PATH }} - name: Set PATH - run: ${{ needs.init.outputs.PATH }} >> ${GITHUB_PATH} + run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} - name: Prepare HTML index run: | From 9c4a73010fc1a3156811b7f5c8e7972a043e053a Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 16:18:38 -0400 Subject: [PATCH 17/46] Add id to output PATH step --- .github/workflows/ci-ubuntu.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index c7bc7873ab..10c53378dc 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -136,6 +136,7 @@ jobs: echo ${{ steps.install-ghc-cabal.outputs.ghc-path }} >> "${GITHUB_PATH}" - name: Output PATH + id: path run: echo "BIN_PATH=$PATH" >> "${GITHUB_OUTPUT}" - name: Install alex & happy From 73dbb64bbcafa4b88f8ad310e89d684ec2eba281 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 16:29:15 -0400 Subject: [PATCH 18/46] Add step to add executable bit to downloaded artifacts --- .github/workflows/ci-ubuntu.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 10c53378dc..ae8f8379e5 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -194,6 +194,11 @@ jobs: with: name: ubuntu-ghc-dir path: ${{ needs.init.outputs.GHC_PATH }} + + - name: Set permissions + run: | + chmod -r +x ~/.cabal/bin/ + chmod -r +x ${{ needs.init.outputs.GHC_PATH }} - name: Set PATH run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} @@ -230,6 +235,11 @@ jobs: name: ubuntu-ghc-dir path: ${{ needs.init.outputs.GHC_PATH }} + - name: Set permissions + run: | + chmod -r +x ~/.cabal/bin/ + chmod -r +x ${{ needs.init.outputs.GHC_PATH }} + - name: Download agdai files uses: actions/download-artifact@v4 with: @@ -253,18 +263,23 @@ jobs: - name: Checkout uses: actions/checkout@v5 - - name: Download Cabal Dir + - name: Download Cabal directory uses: actions/download-artifact@v4 with: name: ubuntu-cabal-dir path: ~/.cabal/ - - name: Download GHC Dir + - name: Download GHC directory uses: actions/download-artifact@v4 with: name: ubuntu-ghc-dir path: ${{ needs.init.outputs.GHC_PATH }} + - name: Set permissions + run: | + chmod -r +x ~/.cabal/bin/ + chmod -r +x ${{ needs.init.outputs.GHC_PATH }} + - name: Set PATH run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} From ecf12eb3e0b1506001be34a90053d73a55f73d51 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 16:33:51 -0400 Subject: [PATCH 19/46] Fix chmod --- .github/workflows/ci-ubuntu.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index ae8f8379e5..13fc85f825 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -197,8 +197,8 @@ jobs: - name: Set permissions run: | - chmod -r +x ~/.cabal/bin/ - chmod -r +x ${{ needs.init.outputs.GHC_PATH }} + chmod -R +x ~/.cabal/bin/ + chmod -R +x ${{ needs.init.outputs.GHC_PATH }} - name: Set PATH run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} @@ -237,8 +237,8 @@ jobs: - name: Set permissions run: | - chmod -r +x ~/.cabal/bin/ - chmod -r +x ${{ needs.init.outputs.GHC_PATH }} + chmod -R +x ~/.cabal/bin/ + chmod -R +x ${{ needs.init.outputs.GHC_PATH }} - name: Download agdai files uses: actions/download-artifact@v4 @@ -277,8 +277,8 @@ jobs: - name: Set permissions run: | - chmod -r +x ~/.cabal/bin/ - chmod -r +x ${{ needs.init.outputs.GHC_PATH }} + chmod -R +x ~/.cabal/bin/ + chmod -R +x ${{ needs.init.outputs.GHC_PATH }} - name: Set PATH run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} From 3bb2f9f8d1ffa5946076d517b2b1e36d29ef109c Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 16:47:12 -0400 Subject: [PATCH 20/46] Add sudo to chmod --- .github/workflows/ci-ubuntu.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 13fc85f825..290cb48544 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -197,8 +197,8 @@ jobs: - name: Set permissions run: | - chmod -R +x ~/.cabal/bin/ - chmod -R +x ${{ needs.init.outputs.GHC_PATH }} + sudo chmod -R 777 ~/.cabal/bin/ + sudo chmod -R 777 ${{ needs.init.outputs.GHC_PATH }} - name: Set PATH run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} @@ -237,8 +237,8 @@ jobs: - name: Set permissions run: | - chmod -R +x ~/.cabal/bin/ - chmod -R +x ${{ needs.init.outputs.GHC_PATH }} + sudo chmod -R 777 ~/.cabal/bin/ + sudo chmod -R 777 ${{ needs.init.outputs.GHC_PATH }} - name: Download agdai files uses: actions/download-artifact@v4 @@ -277,8 +277,8 @@ jobs: - name: Set permissions run: | - chmod -R +x ~/.cabal/bin/ - chmod -R +x ${{ needs.init.outputs.GHC_PATH }} + sudo chmod -R 777 ~/.cabal/bin/ + sudo chmod -R 777 ${{ needs.init.outputs.GHC_PATH }} - name: Set PATH run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} From 030ca82d1fdd0bcaac9aff7c97f777125461c388 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 2 Jul 2026 17:18:06 -0400 Subject: [PATCH 21/46] Add hidden files to upload agdai step --- .github/workflows/ci-ubuntu.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 290cb48544..906068b5d1 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -214,6 +214,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: ubuntu-agdai + include-hidden-files: true path: ./*.agdai test-stdlib-golden: From e6443f15c0445990b8e1b8d9bb0ef49673c1fc3a Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 3 Jul 2026 10:28:50 -0400 Subject: [PATCH 22/46] Set agdai upload path to _build/ --- .github/workflows/ci-ubuntu.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 906068b5d1..174f81f7ea 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -215,7 +215,7 @@ jobs: with: name: ubuntu-agdai include-hidden-files: true - path: ./*.agdai + path: _build/*.agdai test-stdlib-golden: needs: [init, test-stdlib] @@ -245,6 +245,7 @@ jobs: uses: actions/download-artifact@v4 with: name: ubuntu-agdai + path: _build/ - name: Set PATH run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} From 7cdc556fec28359eef18af006f5ec7cee6c99a4e Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 3 Jul 2026 10:40:22 -0400 Subject: [PATCH 23/46] Split html deployment in separate job --- .github/workflows/ci-ubuntu.yml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 174f81f7ea..7cf4e2f901 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -258,8 +258,8 @@ jobs: ######################################################################## ## DOC DEPLOYMENT ######################################################################## - html: - needs: [init, test-stdlib] + html-generate: + needs: init runs-on: ubuntu-latest steps: - name: Checkout @@ -308,6 +308,23 @@ jobs: cp .github/tooling/* . ./landing.sh + - name: Upload agdai files + uses: actions/upload-artifact@v4 + with: + name: ubuntu-html + include-hidden-files: true + path: ${{ needs.init.outputs.AGDA_HTML_DIR }} + + html-delpoy: + needs: [init, html-generate, test-stdlib-golden] + runs-on: ubuntu-latest + steps: + - name: Download HTML + uses: actions/download-artifact@v4 + with: + name: ubuntu-html + path: ${{ needs.init.outputs.AGDA_HTML_DIR }} + - name: Deploy HTML uses: JamesIves/github-pages-deploy-action@v4 if: success() && needs.init.outputs.AGDA_DEPLOY From 475091baa51c113f67d96c3894820c2cf9205867 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 3 Jul 2026 10:51:27 -0400 Subject: [PATCH 24/46] Remove wildcard from agdai upload step --- .github/workflows/ci-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 7cf4e2f901..9861ee2094 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -215,7 +215,7 @@ jobs: with: name: ubuntu-agdai include-hidden-files: true - path: _build/*.agdai + path: _build/ test-stdlib-golden: needs: [init, test-stdlib] From d92f186a911f49b07dacf08b4b6dfbc655a1f58f Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 3 Jul 2026 11:13:52 -0400 Subject: [PATCH 25/46] Run cabal update before golden testing --- .github/workflows/ci-ubuntu.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 9861ee2094..be0a3be979 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -241,6 +241,9 @@ jobs: sudo chmod -R 777 ~/.cabal/bin/ sudo chmod -R 777 ${{ needs.init.outputs.GHC_PATH }} + - name: Cabal update + run: cabal update + - name: Download agdai files uses: actions/download-artifact@v4 with: @@ -319,6 +322,9 @@ jobs: needs: [init, html-generate, test-stdlib-golden] runs-on: ubuntu-latest steps: + - name: Checkout + uses: actions/checkout@v5 + - name: Download HTML uses: actions/download-artifact@v4 with: From 3a081856cf0aaae9b0dc28c75a69c6734d6fd05d Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 3 Jul 2026 11:49:14 -0400 Subject: [PATCH 26/46] Relax base versioning constraints --- tests/_config/template.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/_config/template.cabal b/tests/_config/template.cabal index 9087441805..55dfd067f4 100644 --- a/tests/_config/template.cabal +++ b/tests/_config/template.cabal @@ -14,7 +14,7 @@ common common-build-parameters PatternSynonyms build-depends: - base >= 4.12 && < 4.22 + base >= 4.12 && <= 4.22 , bytestring >= 0.12 && <0.13 , clock >= 0.8 && <0.9 , directory >= 1.3.7 && < 1.4 From ebfe42363a58df19bb12fcee455772567b8a5441 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 3 Jul 2026 12:02:47 -0400 Subject: [PATCH 27/46] Fix version constraint --- tests/_config/template.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/_config/template.cabal b/tests/_config/template.cabal index 55dfd067f4..21cdc2c979 100644 --- a/tests/_config/template.cabal +++ b/tests/_config/template.cabal @@ -14,7 +14,7 @@ common common-build-parameters PatternSynonyms build-depends: - base >= 4.12 && <= 4.22 + base >= 4.12 && < 4.23 , bytestring >= 0.12 && <0.13 , clock >= 0.8 && <0.9 , directory >= 1.3.7 && < 1.4 From 7f3e41a2f7d47205581c2506a48d8e165d52fdb4 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 3 Jul 2026 14:38:58 -0400 Subject: [PATCH 28/46] Fix typo --- .github/workflows/ci-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index be0a3be979..0d38962062 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -311,7 +311,7 @@ jobs: cp .github/tooling/* . ./landing.sh - - name: Upload agdai files + - name: Upload HTML uses: actions/upload-artifact@v4 with: name: ubuntu-html From d2f249110cadb72be527de2359cb6799443d6d80 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Mon, 6 Jul 2026 15:00:24 -0400 Subject: [PATCH 29/46] Remove upload/download agdai steps --- .github/workflows/ci-ubuntu.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 0d38962062..1097e16a5b 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -210,13 +210,6 @@ jobs: ${{ env.AGDA }} -WnoUserWarning --safe EverythingSafe.agda ${{ env.AGDA }} -WnoUserWarning Everything.agda - - name: Upload agdai files - uses: actions/upload-artifact@v4 - with: - name: ubuntu-agdai - include-hidden-files: true - path: _build/ - test-stdlib-golden: needs: [init, test-stdlib] runs-on: ubuntu-latest @@ -243,12 +236,6 @@ jobs: - name: Cabal update run: cabal update - - - name: Download agdai files - uses: actions/download-artifact@v4 - with: - name: ubuntu-agdai - path: _build/ - name: Set PATH run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} From 651945668978a15fce9854fb2df63363c8dfecdd Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Mon, 6 Jul 2026 15:43:09 -0400 Subject: [PATCH 30/46] Cache golden testing builds --- .github/workflows/ci-ubuntu.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 1097e16a5b..41a7ad48c2 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -240,9 +240,26 @@ jobs: - name: Set PATH run: echo "${{ needs.init.outputs.BIN_PATH }}" >> ${GITHUB_PATH} + # always restore the cache, cabal will then figure the rest out + - name: Restore cache + uses: actions/cache/restore@v5 + id: restore-golden + with: + path: ./tests/_config/dist-newstyle/ + key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-golden-cache + - name: Golden testing run: | make testsuite INTERACTIVE='' AGDA_EXEC='agda' GHC_EXEC='ghc' + + # cache the files built during golden testing, but only on master to prevent the cache overfilling too quickly + - name: Save cache + if: github.ref_name == 'master' + uses: actions/cache/save@v5 + id: cache-golden + with: + path: ./tests/_config/dist-newstyle/ + key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-golden-cache ######################################################################## From ef795d17de7a4f2fdad5b02ebb6abbcb75083fde Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Tue, 7 Jul 2026 10:41:31 -0400 Subject: [PATCH 31/46] Add cleanup job to remove artifacts --- .github/workflows/ci-ubuntu.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 41a7ad48c2..9a84f2c55c 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -343,3 +343,20 @@ jobs: branch: gh-pages folder: html git-config-name: Github Actions + + ######################################################################## + ## CLEANUP + ######################################################################## + cleanup: + needs: [html-deploy] + runs-on: ubuntu-latest + if: always() + steps: + - name: Delete artifacts + uses: geekyeggo/delete-artifact@v6 + with: + failOnError: false + name: | + ubuntu-cabal-dir + ubuntu-ghc-dir + ubuntu-html \ No newline at end of file From ea47a1f26451b6b22ec066f3851107d934a27854 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Tue, 7 Jul 2026 10:43:52 -0400 Subject: [PATCH 32/46] Fix formatting --- .github/workflows/ci-ubuntu.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 9a84f2c55c..a51477868f 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -322,7 +322,7 @@ jobs: include-hidden-files: true path: ${{ needs.init.outputs.AGDA_HTML_DIR }} - html-delpoy: + html-deploy: needs: [init, html-generate, test-stdlib-golden] runs-on: ubuntu-latest steps: @@ -352,11 +352,11 @@ jobs: runs-on: ubuntu-latest if: always() steps: - - name: Delete artifacts - uses: geekyeggo/delete-artifact@v6 - with: - failOnError: false - name: | - ubuntu-cabal-dir - ubuntu-ghc-dir - ubuntu-html \ No newline at end of file + - name: Delete artifacts + uses: geekyeggo/delete-artifact@v6 + with: + failOnError: false + name: | + ubuntu-cabal-dir + ubuntu-ghc-dir + ubuntu-html \ No newline at end of file From 6c867b8c17c8dcdf04feab99a9ff4e75bdcaa7e8 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Tue, 7 Jul 2026 14:16:57 -0400 Subject: [PATCH 33/46] Add persistence of agdai files between test-stdlib and test-stdlib-golden --- .github/workflows/ci-ubuntu.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index a51477868f..fd54792cd6 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -210,6 +210,13 @@ jobs: ${{ env.AGDA }} -WnoUserWarning --safe EverythingSafe.agda ${{ env.AGDA }} -WnoUserWarning Everything.agda + - name: Upload agdai files + uses: actions/upload-artifact@v4 + with: + include-hidden-files: true + name: ubuntu-agdai + path: _build/ + test-stdlib-golden: needs: [init, test-stdlib] runs-on: ubuntu-latest @@ -229,6 +236,12 @@ jobs: name: ubuntu-ghc-dir path: ${{ needs.init.outputs.GHC_PATH }} + - name: Download agdai files + uses: actions/download-artifact@v4 + with: + name: ubuntu-agdai + path: _build/ + - name: Set permissions run: | sudo chmod -R 777 ~/.cabal/bin/ From 200a1dc9c3653c70bc65bf863ee49dec3f8b32d3 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Tue, 7 Jul 2026 14:40:35 -0400 Subject: [PATCH 34/46] Update caching to only be invoked if dist-newstyle changes --- .github/workflows/ci-ubuntu.yml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index fd54792cd6..5f423724f8 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -259,20 +259,32 @@ jobs: id: restore-golden with: path: ./tests/_config/dist-newstyle/ - key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-golden-cache + restore-keys: | + ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-golden-cache + + - name: Compute cache hash + id: cache-hash + run: | + { printf "CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_ENV} + - name: Golden testing run: | make testsuite INTERACTIVE='' AGDA_EXEC='agda' GHC_EXEC='ghc' + + - name: Compute new cache hash + id: new-cache-hash + run: | + { printf "NEW_CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_ENV} - # cache the files built during golden testing, but only on master to prevent the cache overfilling too quickly + # cache the files built during golden testing, but only on master and if dist-newstyle has changed to prevent the cache overfilling too quickly - name: Save cache - if: github.ref_name == 'master' + if: github.ref_name == 'master' && steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH uses: actions/cache/save@v5 id: cache-golden with: path: ./tests/_config/dist-newstyle/ - key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-golden-cache + key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-golden-cache-${{ github.sha }} ######################################################################## From 9b2004365ac3212154a405965a0c1d3a3f38a93a Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Tue, 7 Jul 2026 14:53:55 -0400 Subject: [PATCH 35/46] Fix restore cache step in test-stdlib-golden --- .github/workflows/ci-ubuntu.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 5f423724f8..7a205f978e 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -259,6 +259,7 @@ jobs: id: restore-golden with: path: ./tests/_config/dist-newstyle/ + key: ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-golden-cache-${{ github.sha }} restore-keys: | ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-golden-cache From a7684e95e22e8402ad17cb35f35f33fa8ebcafae Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Tue, 7 Jul 2026 15:54:35 -0400 Subject: [PATCH 36/46] Add comments --- .github/workflows/ci-ubuntu.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 7a205f978e..891dadb3c7 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -209,7 +209,8 @@ jobs: cabal run GenerateEverything -- --include-deprecated ${{ env.AGDA }} -WnoUserWarning --safe EverythingSafe.agda ${{ env.AGDA }} -WnoUserWarning Everything.agda - + + # upload agdai files so they can be re-used by test-stdlib-golden - name: Upload agdai files uses: actions/upload-artifact@v4 with: @@ -217,6 +218,9 @@ jobs: name: ubuntu-agdai path: _build/ + ######################################################################## + ## GOLDEN TESTING + ######################################################################## test-stdlib-golden: needs: [init, test-stdlib] runs-on: ubuntu-latest @@ -241,7 +245,7 @@ jobs: with: name: ubuntu-agdai path: _build/ - + - name: Set permissions run: | sudo chmod -R 777 ~/.cabal/bin/ @@ -263,12 +267,13 @@ jobs: restore-keys: | ${{ runner.os }}-${{ env.GHC_VERSION }}-${{ env.CABAL_VERSION }}-golden-cache + # compute a hash to be compared against after running golden tests + # if dist-newstyle changes, it means that the cache needs to be updated, so we use as hash to make that comparison - name: Compute cache hash id: cache-hash run: | { printf "CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_ENV} - - name: Golden testing run: | make testsuite INTERACTIVE='' AGDA_EXEC='agda' GHC_EXEC='ghc' From 1f79e3c7f0319a8b3721edfa2fde626ed490b09a Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 9 Jul 2026 14:19:07 -0400 Subject: [PATCH 37/46] Try running golden tests in parallel --- .github/workflows/ci-ubuntu.yml | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 891dadb3c7..c3972cd241 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -210,19 +210,12 @@ jobs: ${{ env.AGDA }} -WnoUserWarning --safe EverythingSafe.agda ${{ env.AGDA }} -WnoUserWarning Everything.agda - # upload agdai files so they can be re-used by test-stdlib-golden - - name: Upload agdai files - uses: actions/upload-artifact@v4 - with: - include-hidden-files: true - name: ubuntu-agdai - path: _build/ ######################################################################## ## GOLDEN TESTING ######################################################################## test-stdlib-golden: - needs: [init, test-stdlib] + needs: init runs-on: ubuntu-latest steps: - name: Checkout @@ -239,12 +232,6 @@ jobs: with: name: ubuntu-ghc-dir path: ${{ needs.init.outputs.GHC_PATH }} - - - name: Download agdai files - uses: actions/download-artifact@v4 - with: - name: ubuntu-agdai - path: _build/ - name: Set permissions run: | @@ -354,7 +341,7 @@ jobs: path: ${{ needs.init.outputs.AGDA_HTML_DIR }} html-deploy: - needs: [init, html-generate, test-stdlib-golden] + needs: [init, html-generate, test-stdlib-golden, test-stdlib] runs-on: ubuntu-latest steps: - name: Checkout From 191548fc5cc38d78423c42e058d40256328702a1 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 9 Jul 2026 15:06:51 -0400 Subject: [PATCH 38/46] Force cache store --- .github/workflows/ci-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index c3972cd241..3db97278d6 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -272,7 +272,7 @@ jobs: # cache the files built during golden testing, but only on master and if dist-newstyle has changed to prevent the cache overfilling too quickly - name: Save cache - if: github.ref_name == 'master' && steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH + if: steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH uses: actions/cache/save@v5 id: cache-golden with: From c621b8efac4909e6ce5c7246bc7193c1fae357d9 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 9 Jul 2026 15:47:27 -0400 Subject: [PATCH 39/46] Revert "Force cache store" This reverts commit 191548fc5cc38d78423c42e058d40256328702a1. --- .github/workflows/ci-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 3db97278d6..c3972cd241 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -272,7 +272,7 @@ jobs: # cache the files built during golden testing, but only on master and if dist-newstyle has changed to prevent the cache overfilling too quickly - name: Save cache - if: steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH + if: github.ref_name == 'master' && steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH uses: actions/cache/save@v5 id: cache-golden with: From 8df5468092d663ca38709b96fd59fdb111483ada Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 9 Jul 2026 15:48:27 -0400 Subject: [PATCH 40/46] Force cache store --- .github/workflows/ci-ubuntu.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index c3972cd241..5a7a56ecef 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -272,7 +272,6 @@ jobs: # cache the files built during golden testing, but only on master and if dist-newstyle has changed to prevent the cache overfilling too quickly - name: Save cache - if: github.ref_name == 'master' && steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH uses: actions/cache/save@v5 id: cache-golden with: From fa406d18a35610545dfeb84e6361f53888c20a69 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Thu, 9 Jul 2026 16:25:44 -0400 Subject: [PATCH 41/46] Revert "Force cache store" This reverts commit 8df5468092d663ca38709b96fd59fdb111483ada. --- .github/workflows/ci-ubuntu.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 5a7a56ecef..c3972cd241 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -272,6 +272,7 @@ jobs: # cache the files built during golden testing, but only on master and if dist-newstyle has changed to prevent the cache overfilling too quickly - name: Save cache + if: github.ref_name == 'master' && steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH uses: actions/cache/save@v5 id: cache-golden with: From becdd35dc3ab56590bb8c5cdde1d1873d89ae77f Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 10 Jul 2026 10:22:54 -0400 Subject: [PATCH 42/46] Fix cache hash variable being sent to wrong output --- .github/workflows/ci-ubuntu.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index c3972cd241..410a527073 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -259,7 +259,7 @@ jobs: - name: Compute cache hash id: cache-hash run: | - { printf "CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_ENV} + { printf "CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_OUT} - name: Golden testing run: | @@ -268,7 +268,15 @@ jobs: - name: Compute new cache hash id: new-cache-hash run: | - { printf "NEW_CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_ENV} + { printf "NEW_CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_OUT} + + - name: Dummy echo not equal + if: steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH + run: echo "not equal" + + - name: Dummy echo equal + if: steps.cache-hash.outputs.CACHE_HASH == steps.new-cache-hash.outputs.NEW_CACHE_HASH + run: echo "equal" # cache the files built during golden testing, but only on master and if dist-newstyle has changed to prevent the cache overfilling too quickly - name: Save cache From 610b32943ecf94d210b6f5c036a2ddd5ae7765fa Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 10 Jul 2026 10:29:04 -0400 Subject: [PATCH 43/46] Fix typo --- .github/workflows/ci-ubuntu.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index 410a527073..af0a4d52f0 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -259,7 +259,7 @@ jobs: - name: Compute cache hash id: cache-hash run: | - { printf "CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_OUT} + { printf "CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_OUTPUT} - name: Golden testing run: | @@ -268,7 +268,7 @@ jobs: - name: Compute new cache hash id: new-cache-hash run: | - { printf "NEW_CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_OUT} + { printf "NEW_CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_OUTPUT} - name: Dummy echo not equal if: steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH From 72d18ca32d011ce6ed3cae59552446d673c49954 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 10 Jul 2026 10:34:06 -0400 Subject: [PATCH 44/46] Check hash values in dummy steps --- .github/workflows/ci-ubuntu.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index af0a4d52f0..ab13ee5b71 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -272,11 +272,17 @@ jobs: - name: Dummy echo not equal if: steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH - run: echo "not equal" + run: | + echo "not equal" + echo ${{ steps.cache-hash.outputs.CACHE_HASH }} + echo ${{ steps.new-cache-hash.outputs.NEW_CACHE_HASH }} - name: Dummy echo equal if: steps.cache-hash.outputs.CACHE_HASH == steps.new-cache-hash.outputs.NEW_CACHE_HASH - run: echo "equal" + run: | + echo "equal" + echo ${{ steps.cache-hash.outputs.CACHE_HASH }} + echo ${{ steps.new-cache-hash.outputs.NEW_CACHE_HASH }} # cache the files built during golden testing, but only on master and if dist-newstyle has changed to prevent the cache overfilling too quickly - name: Save cache From 2733378d3289482715d8df1286336c1a789d26df Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 10 Jul 2026 10:49:10 -0400 Subject: [PATCH 45/46] Add step to report hashes --- .github/workflows/ci-ubuntu.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index ab13ee5b71..abb0635769 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -270,18 +270,18 @@ jobs: run: | { printf "NEW_CACHE_HASH=" && find tests/_config/dist-newstyle/ -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum ; } >> ${GITHUB_OUTPUT} - - name: Dummy echo not equal - if: steps.cache-hash.outputs.CACHE_HASH != steps.new-cache-hash.outputs.NEW_CACHE_HASH + - name: Report hashes run: | - echo "not equal" - echo ${{ steps.cache-hash.outputs.CACHE_HASH }} - echo ${{ steps.new-cache-hash.outputs.NEW_CACHE_HASH }} + if [ ${{ steps.cache-hash.outputs.CACHE_HASH == steps.new-cache-hash.outputs.NEW_CACHE_HASH }} ]; then + echo "Hashes are equal" + else + echo "Hashes are not equal" + fi - - name: Dummy echo equal - if: steps.cache-hash.outputs.CACHE_HASH == steps.new-cache-hash.outputs.NEW_CACHE_HASH - run: | - echo "equal" + printf "Old hash: " echo ${{ steps.cache-hash.outputs.CACHE_HASH }} + + printf "New hash: " echo ${{ steps.new-cache-hash.outputs.NEW_CACHE_HASH }} # cache the files built during golden testing, but only on master and if dist-newstyle has changed to prevent the cache overfilling too quickly From e9b9423a6b564b7a6e967ed2dd1a3d6a49f30ad4 Mon Sep 17 00:00:00 2001 From: Silas Hayes-Williams Date: Fri, 10 Jul 2026 15:23:27 -0400 Subject: [PATCH 46/46] Fix bash if statement --- .github/workflows/ci-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-ubuntu.yml b/.github/workflows/ci-ubuntu.yml index abb0635769..f6a5f73473 100644 --- a/.github/workflows/ci-ubuntu.yml +++ b/.github/workflows/ci-ubuntu.yml @@ -272,7 +272,7 @@ jobs: - name: Report hashes run: | - if [ ${{ steps.cache-hash.outputs.CACHE_HASH == steps.new-cache-hash.outputs.NEW_CACHE_HASH }} ]; then + if ${{ steps.cache-hash.outputs.CACHE_HASH == steps.new-cache-hash.outputs.NEW_CACHE_HASH }}; then echo "Hashes are equal" else echo "Hashes are not equal"