From 1a5d829909a700ac95dcd732bb07b7b00f914339 Mon Sep 17 00:00:00 2001 From: SaMullinsJr Date: Fri, 28 Aug 2026 09:42:32 -0400 Subject: [PATCH] ci: install D toolchain from the pinned official tarball (issue #3) The issue's condition -- wait for a setup-dlang revision built for Node 24 -- cannot be met: upstream's latest commit (d7d85fc, 2025-10-05) still declares the node20 runtime and their migration issue (#100) is open. Rather than keep the deprecation warning until upstream moves, drop the action entirely. The replacement downloads dmd.2.112.0.linux.tar.xz from downloads.dlang.org and verifies its SHA-256 before extracting, which pins the exact toolchain BYTES rather than a version string handed to a third-party action -- strictly stronger than the full-SHA action pin it replaces, and no JS runtime is involved at all. The dmd binary in that tarball is byte-identical (sha256 596c745f) to the locally verified v0.2.1 build environment's dmd 2.112.0; dub 1.41.0 ships in the same tarball. Dry-run receipt: the d lineage builds cli and unittest configs and passes its suite with ONLY the extracted tarball on PATH. --- .github/workflows/verify.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 1699df2..7dc903c 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -44,11 +44,22 @@ jobs: with: toolchain: '1.94.0' + # Direct pinned-bytes install, replacing dlang-community/setup-dlang + # (issue #3): upstream's latest revision still declares the deprecated + # node20 runtime (their issue #100, open), so the wait-for-upstream + # condition cannot be met. The tarball SHA-256 pins the exact toolchain + # bytes -- stronger than the action's version-string pin -- and the + # dmd binary inside is byte-identical to the locally verified v0.2.1 + # build environment (dmd 2.112.0, dub 1.41.0). No JS runtime involved. - name: Set up D if: matrix.lineage == 'd' - uses: dlang-community/setup-dlang@d7d85fcde7c4cd5f9a6618fce1bccc316e1e910b # v2 - with: - compiler: dmd-2.112.0 + run: | + curl -fsSL -o "$RUNNER_TEMP/dmd.tar.xz" \ + https://downloads.dlang.org/releases/2.x/2.112.0/dmd.2.112.0.linux.tar.xz + echo "4556ecde412c6c43662cd1c6e7cec5c6d567b7e74508287a8a0c3c6c506a7e94 $RUNNER_TEMP/dmd.tar.xz" | sha256sum -c - + tar -C "$RUNNER_TEMP" -xf "$RUNNER_TEMP/dmd.tar.xz" + echo "$RUNNER_TEMP/dmd2/linux/bin64" >> "$GITHUB_PATH" + echo "DC=dmd" >> "$GITHUB_ENV" - name: Set up Haskell if: matrix.lineage == 'haskell'