From f44b50701f46db82ac9c2decd65e9f09bffa0836 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Tue, 4 Aug 2026 11:11:56 -0400 Subject: [PATCH 1/2] CI: fix Windows NSIS install race, drop macos-latest-large, sync template action versions - Windows install now uses `Start-Process -Wait -NoNewWindow`; without it the NSIS silent installer's parent returns before the DLLs land, which was intermittently failing the "Check that magic files are installed" step (only libmagic-1.dll / libgnurx-0.dll were missing under custom-config1, present under the parallel `normal` job). - Comment out the `macos-latest-large` `test_annex_include` entry: the paid larger-Intel runner class has been blocked on billing for weeks, and `macos-15-intel` already provides Intel coverage. - Bump action pins in the template (`upload-artifact` v6->v7, `download-artifact` v7->v8, `dawidd6/action-send-mail` SHA) to match what dependabot merged directly into the yamls; otherwise the next template regeneration silently reverts those updates. - Regenerate `build-macos.yaml` and `build-windows.yaml` accordingly. Co-Authored-By: Claude Code 2.1.221 / Claude Opus 4.7 (1M context) --- .github/workflows/build-macos.yaml | 1 - .github/workflows/build-windows.yaml | 4 ++-- .github/workflows/template/build-{{ostype}}.yaml.j2 | 12 ++++++------ .github/workflows/template/specs.yml | 13 +++++++++---- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-macos.yaml b/.github/workflows/build-macos.yaml index cf582d9939..0185e24065 100644 --- a/.github/workflows/build-macos.yaml +++ b/.github/workflows/build-macos.yaml @@ -202,7 +202,6 @@ jobs: matrix: flavor: ["normal", "crippled-tmp", "custom-config1"] os: [macos-15-intel] - include: [{"flavor": "normal", "os": "macos-latest-large"}] fail-fast: false steps: - name: Checkout this repository diff --git a/.github/workflows/build-windows.yaml b/.github/workflows/build-windows.yaml index 4b2be888a6..d41fde7b61 100644 --- a/.github/workflows/build-windows.yaml +++ b/.github/workflows/build-windows.yaml @@ -246,7 +246,7 @@ jobs: - name: Install git-annex package shell: powershell run: | - ./git-annex-installer_*.exe /S + Start-Process -FilePath (Get-Item ./git-annex-installer_*.exe).FullName -ArgumentList '/S' -Wait -NoNewWindow - name: Check that magic files are installed run: | @@ -352,7 +352,7 @@ jobs: - name: Install git-annex package shell: powershell run: | - ./git-annex-installer_*.exe /S + Start-Process -FilePath (Get-Item ./git-annex-installer_*.exe).FullName -ArgumentList '/S' -Wait -NoNewWindow - name: Define test host alias shell: cmd diff --git a/.github/workflows/template/build-{{ostype}}.yaml.j2 b/.github/workflows/template/build-{{ostype}}.yaml.j2 index f3ecefc08f..7f472294ec 100644 --- a/.github/workflows/template/build-{{ostype}}.yaml.j2 +++ b/.github/workflows/template/build-{{ostype}}.yaml.j2 @@ -286,7 +286,7 @@ jobs: {% endif %} - name: Upload packages - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: {{artifact_basename}}_${{ steps.build-version.outputs.version }} path: | @@ -372,7 +372,7 @@ jobs: - name: Send e-mail on failed run if: failure() && contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) # freeze to v17 - uses: dawidd6/action-send-mail@6e71c855c9a091d80a519621b9fd3e8d252ca40c + uses: dawidd6/action-send-mail@42942bc2f8fba4e611b459a018967a6a7c78c68c with: server_address: ${{ secrets.NOTIFY_SMTP_HOST }} server_port: ${{ secrets.NOTIFY_SMTP_PORT }} @@ -424,7 +424,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download git-annex package - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: name: {{artifact_basename}}_${{ needs.build-package.outputs.build-version }} @@ -544,7 +544,7 @@ jobs: - name: Send e-mail on failed run if: failure() && contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) # freeze to v17 - uses: dawidd6/action-send-mail@6e71c855c9a091d80a519621b9fd3e8d252ca40c + uses: dawidd6/action-send-mail@42942bc2f8fba4e611b459a018967a6a7c78c68c with: server_address: ${{ secrets.NOTIFY_SMTP_HOST }} server_port: ${{ secrets.NOTIFY_SMTP_PORT }} @@ -584,7 +584,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download git-annex package - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: name: {{artifact_basename}}_${{ needs.build-package.outputs.build-version }} @@ -645,7 +645,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download git-annex package - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: name: {{artifact_basename}}_${{ needs.build-package.outputs.build-version }} diff --git a/.github/workflows/template/specs.yml b/.github/workflows/template/specs.yml index 40106317b3..dffde5da13 100644 --- a/.github/workflows/template/specs.yml +++ b/.github/workflows/template/specs.yml @@ -26,9 +26,12 @@ # TODO: Add "crippled-home" back in once # # is fixed - test_annex_include: - - flavor: normal - os: macos-latest-large + # macos-latest-large is a paid larger-Intel runner class; jobs get blocked + # on billing. Since macos-15-intel already provides Intel coverage, + # disable this extra include until billing is sorted. + # test_annex_include: + # - flavor: normal + # os: macos-latest-large artifact_basename: git-annex-macos-dmg artifact_install_steps: - hdiutil attach git-annex_*.dmg @@ -67,7 +70,9 @@ test_annex_flavors: [normal, custom-config1] artifact_basename: git-annex-windows-installer artifact_install_steps: - - ./git-annex-installer_*.exe /S + # -Wait is required because NSIS silent installers fork and the parent + # returns immediately — without it the next step may race the copy. + - Start-Process -FilePath (Get-Item ./git-annex-installer_*.exe).FullName -ArgumentList '/S' -Wait -NoNewWindow test_datalad: true # TODO: reenable -- was hanging on test step # see https://github.com/datalad/datalad-extensions/pull/54 From 08a4cc457d425da597eaad959c84501ab6399aee Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Tue, 4 Aug 2026 23:31:56 -0400 Subject: [PATCH 2/2] CI: pin magic-1.1 in stack extra-deps to unblock Windows/macOS build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both Windows and macOS `build-package` jobs fail at "Build dependencies": * magic must match <=1.1, but magic-1.1.2 is in the Stack configuration (latest matching version is 1.1). Upstream `stack.yaml` uses `resolver: lts-24.52` (which caps `magic` at 1.1) but a transitive dep resolves to `magic-1.1.2`. Stack's own recommendation is to explicitly pin the 1.1 hackage revision. Do that inside the existing "Enable building with magic" step (Windows + macOS + macOS-ARM64 — Ubuntu builds without this step and is unaffected). Co-Authored-By: Claude Code 2.1.221 / Claude Opus 4.7 (1M context) --- .github/workflows/build-macos-arm64.yaml | 3 +++ .github/workflows/build-macos.yaml | 3 +++ .github/workflows/build-windows.yaml | 3 +++ .github/workflows/template/build-{{ostype}}.yaml.j2 | 6 ++++++ 4 files changed, 15 insertions(+) diff --git a/.github/workflows/build-macos-arm64.yaml b/.github/workflows/build-macos-arm64.yaml index ba592163c2..dab3b92c98 100644 --- a/.github/workflows/build-macos-arm64.yaml +++ b/.github/workflows/build-macos-arm64.yaml @@ -104,6 +104,9 @@ jobs: - name: Enable building with magic run: | perl -pli -e 's/magicmime: false/magicmime: true/' stack.yaml + # lts-24 caps `magic` at 1.1 while some transitive dep pulls 1.1.2; + # pin the exact-1.1 hackage revision that stack itself recommends. + echo '- magic-1.1@sha256:3a31ca1c49fa5f6a857f647471739bd240a6020af6ae43e71fb72201fc482fa2,928' >> stack.yaml - name: stack setup run: stack setup diff --git a/.github/workflows/build-macos.yaml b/.github/workflows/build-macos.yaml index 0185e24065..f0c9659ade 100644 --- a/.github/workflows/build-macos.yaml +++ b/.github/workflows/build-macos.yaml @@ -104,6 +104,9 @@ jobs: - name: Enable building with magic run: | perl -pli -e 's/magicmime: false/magicmime: true/' stack.yaml + # lts-24 caps `magic` at 1.1 while some transitive dep pulls 1.1.2; + # pin the exact-1.1 hackage revision that stack itself recommends. + echo '- magic-1.1@sha256:3a31ca1c49fa5f6a857f647471739bd240a6020af6ae43e71fb72201fc482fa2,928' >> stack.yaml - name: stack setup run: stack setup diff --git a/.github/workflows/build-windows.yaml b/.github/workflows/build-windows.yaml index d41fde7b61..e7e259a44f 100644 --- a/.github/workflows/build-windows.yaml +++ b/.github/workflows/build-windows.yaml @@ -100,6 +100,9 @@ jobs: - name: Enable building with magic run: | perl -pli -e 's/magicmime: false/magicmime: true/' stack.yaml + # lts-24 caps `magic` at 1.1 while some transitive dep pulls 1.1.2; + # pin the exact-1.1 hackage revision that stack itself recommends. + echo '- magic-1.1@sha256:3a31ca1c49fa5f6a857f647471739bd240a6020af6ae43e71fb72201fc482fa2,928' >> stack.yaml - name: Set UPGRADE_LOCATION run: | diff --git a/.github/workflows/template/build-{{ostype}}.yaml.j2 b/.github/workflows/template/build-{{ostype}}.yaml.j2 index 7f472294ec..8c885f7c62 100644 --- a/.github/workflows/template/build-{{ostype}}.yaml.j2 +++ b/.github/workflows/template/build-{{ostype}}.yaml.j2 @@ -196,6 +196,9 @@ jobs: - name: Enable building with magic run: | perl -pli -e 's/magicmime: false/magicmime: true/' stack.yaml + # lts-24 caps `magic` at 1.1 while some transitive dep pulls 1.1.2; + # pin the exact-1.1 hackage revision that stack itself recommends. + echo '- magic-1.1@sha256:3a31ca1c49fa5f6a857f647471739bd240a6020af6ae43e71fb72201fc482fa2,928' >> stack.yaml - name: stack setup run: stack setup @@ -234,6 +237,9 @@ jobs: - name: Enable building with magic run: | perl -pli -e 's/magicmime: false/magicmime: true/' stack.yaml + # lts-24 caps `magic` at 1.1 while some transitive dep pulls 1.1.2; + # pin the exact-1.1 hackage revision that stack itself recommends. + echo '- magic-1.1@sha256:3a31ca1c49fa5f6a857f647471739bd240a6020af6ae43e71fb72201fc482fa2,928' >> stack.yaml - name: Set UPGRADE_LOCATION run: |