Skip to content

Fix curl/HTTPS transport, update head.hackage hash, rename check-run step#229

Merged
angerman merged 3 commits into
mainfrom
fix/drop-cabal-experimental
Feb 25, 2026
Merged

Fix curl/HTTPS transport, update head.hackage hash, rename check-run step#229
angerman merged 3 commits into
mainfrom
fix/drop-cabal-experimental

Conversation

@angerman
Copy link
Copy Markdown
Collaborator

@angerman angerman commented Feb 25, 2026

Summary

  • Propagate writeShellApplication runtimeInputs via propagatedNativeBuildInputs so $stdenv/setup (sourced by -env container scripts) transitively adds them to PATH for the whole shell environment — fixes HTTPS transport unavailable error (Cabal-7113) where other programs (e.g. GHC's bootstrap cabal) couldn't find curl
  • Update head.hackage FOD hash in tool-map.nix (upstream index updated)
  • Rename workflow step for prefix-less check-runs (hydra-github-bridge now uses bare job names)

Why runtimeInputs weren't visible in -env scripts

The switch from nix print-dev-env to devShellTools (a354771) changed how -env scripts reconstruct the shell environment. writeShellApplication embeds runtimeInputs in the wrapper's own inline PATH, but $stdenv/setup only walks buildInputs/nativeBuildInputs — not the internal PATH of wrappers. Using propagatedNativeBuildInputs on the wrapper derivation is the standard Nix mechanism to make these dependencies transitively visible.

Test plan

  • Hydra CI evaluates successfully (eval 477, 861/861 builds passed on previous commit)
  • GitHub check-runs appear with bare job names (no ci/hydra-build: prefix)
  • All builds pass with propagatedNativeBuildInputs approach (eval for 3f15c02)
  • GHC CI (Get rid of HADRIAN_SETTINGS stable-haskell/ghc#149) curl/cabal HTTPS issue resolved after images rebuilt

@angerman angerman closed this Feb 25, 2026
@angerman angerman reopened this Feb 25, 2026
The hydra-github-bridge no longer prefixes check-run names with
"ci/hydra-build:" for zw3rk CI. Update the step name to match.
The JQ filters and wait-for-hydra action (check: required) now
work correctly with the bare job names.
The head.hackage index is a rolling target — upstream published new
packages, invalidating the previous hash.

  specified: sha256-nFFut7+8NzUps+4MsmnAo2bLp1EE2Dx4eWqTeZ2aYqI=
  got:       sha256-P0hOiQyh54Y5Pyl9rjpEE5Er/u83aeXIKBygzniRZtk=
The wrapped-cabal writeShellApplication includes curl as a
runtimeInput, but that only puts curl on PATH when the wrapper
script itself runs. In the -env container scripts (which source
$stdenv/setup to construct PATH from buildInputs/nativeBuildInputs),
curl is NOT on PATH for other programs.

This breaks GHC CI builds: GHC's Makefile bootstraps its own
stage0 cabal (debug build, no native TLS) which then needs curl
on PATH to download packages from Hackage over HTTPS. Without
curl available, it fails with Cabal-7113.

Fix: add curl directly to buildInputs/nativeBuildInputs in
dynamic.nix, static.nix, and cross-js.nix so it's always
available on PATH regardless of how the environment is sourced.
@angerman angerman force-pushed the fix/drop-cabal-experimental branch from 64d6441 to 76d6b37 Compare February 25, 2026 04:26
@angerman angerman changed the title Drop cabal-experimental, update haskell.nix Fix curl/HTTPS transport, update head.hackage hash, rename check-run step Feb 25, 2026
@angerman angerman added this pull request to the merge queue Feb 25, 2026
Merged via the queue into main with commit 0447c6f Feb 25, 2026
884 checks passed
@angerman angerman deleted the fix/drop-cabal-experimental branch February 25, 2026 06:24
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.

1 participant