Skip to content

ci: install D toolchain from the pinned official tarball - #4

Merged
SaMullinsJr merged 1 commit into
mainfrom
fix/d-toolchain-pinned-tarball
Aug 28, 2026
Merged

ci: install D toolchain from the pinned official tarball#4
SaMullinsJr merged 1 commit into
mainfrom
fix/d-toolchain-pinned-tarball

Conversation

@SaMullinsJr

Copy link
Copy Markdown
Member

Closes #3.

The issue's wait-for-upstream condition cannot be met: dlang-community/setup-dlang's latest revision (d7d85fc, 2025-10-05) still declares using: "node20" in its action.yml, and upstream's Node migration issue (dlang-community/setup-dlang#100) is open with no Node 24 revision to pin to. So this drops the action instead of waiting.

What replaces it

A plain run: step that downloads dmd.2.112.0.linux.tar.xz from downloads.dlang.org, verifies its SHA-256 (4556ecde...) before extracting, and puts dmd2/linux/bin64 on the PATH with DC=dmd.

  • Stronger pin than before: the SHA-pinned action still resolved compiler: dmd-2.112.0 to whatever bytes the mirror served; this pins the toolchain bytes themselves.
  • No JS runtime involved, so the deprecation warning and the forced Node 24 migration both become irrelevant to this job.
  • Same toolchain: the dmd binary inside the pinned 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

The d lineage was built and tested locally with only the extracted tarball on PATH (env -i with the tarball's bin64 prepended): dub build --config=cli, dub build --config=unittest, and baionstd-canon-test all pass (exit 0).

The verify (d) job on this PR is the live proof.

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.
@SaMullinsJr
SaMullinsJr merged commit 6ab3af5 into main Aug 28, 2026
10 checks passed
@SaMullinsJr
SaMullinsJr deleted the fix/d-toolchain-pinned-tarball branch August 28, 2026 13:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update D toolchain setup action when a Node 24-native pinned revision exists

1 participant