Home / Input Output / haskell.nix
Apr 02, 10-11 PM (0)
Apr 02, 11-12 AM (0)
Apr 03, 12-1 AM (1)
Apr 03, 1-2 AM (0)
Apr 03, 2-3 AM (0)
Apr 03, 3-4 AM (0)
Apr 03, 4-5 AM (0)
Apr 03, 5-6 AM (0)
Apr 03, 6-7 AM (0)
Apr 03, 7-8 AM (0)
Apr 03, 8-9 AM (0)
Apr 03, 9-10 AM (0)
Apr 03, 10-11 AM (0)
Apr 03, 11-12 PM (0)
Apr 03, 12-1 PM (0)
Apr 03, 1-2 PM (0)
Apr 03, 2-3 PM (0)
Apr 03, 3-4 PM (0)
Apr 03, 4-5 PM (0)
Apr 03, 5-6 PM (0)
Apr 03, 6-7 PM (0)
Apr 03, 7-8 PM (0)
Apr 03, 8-9 PM (0)
Apr 03, 9-10 PM (0)
Apr 03, 10-11 PM (0)
Apr 03, 11-12 AM (0)
Apr 04, 12-1 AM (0)
Apr 04, 1-2 AM (0)
Apr 04, 2-3 AM (0)
Apr 04, 3-4 AM (0)
Apr 04, 4-5 AM (0)
Apr 04, 5-6 AM (0)
Apr 04, 6-7 AM (0)
Apr 04, 7-8 AM (0)
Apr 04, 8-9 AM (0)
Apr 04, 9-10 AM (0)
Apr 04, 10-11 AM (0)
Apr 04, 11-12 PM (0)
Apr 04, 12-1 PM (0)
Apr 04, 1-2 PM (0)
Apr 04, 2-3 PM (1)
Apr 04, 3-4 PM (0)
Apr 04, 4-5 PM (0)
Apr 04, 5-6 PM (0)
Apr 04, 6-7 PM (0)
Apr 04, 7-8 PM (0)
Apr 04, 8-9 PM (0)
Apr 04, 9-10 PM (0)
Apr 04, 10-11 PM (0)
Apr 04, 11-12 AM (0)
Apr 05, 12-1 AM (1)
Apr 05, 1-2 AM (0)
Apr 05, 2-3 AM (0)
Apr 05, 3-4 AM (0)
Apr 05, 4-5 AM (0)
Apr 05, 5-6 AM (0)
Apr 05, 6-7 AM (0)
Apr 05, 7-8 AM (0)
Apr 05, 8-9 AM (0)
Apr 05, 9-10 AM (0)
Apr 05, 10-11 AM (0)
Apr 05, 11-12 PM (0)
Apr 05, 12-1 PM (0)
Apr 05, 1-2 PM (0)
Apr 05, 2-3 PM (0)
Apr 05, 3-4 PM (0)
Apr 05, 4-5 PM (0)
Apr 05, 5-6 PM (0)
Apr 05, 6-7 PM (0)
Apr 05, 7-8 PM (0)
Apr 05, 8-9 PM (0)
Apr 05, 9-10 PM (0)
Apr 05, 10-11 PM (0)
Apr 05, 11-12 AM (0)
Apr 06, 12-1 AM (1)
Apr 06, 1-2 AM (0)
Apr 06, 2-3 AM (0)
Apr 06, 3-4 AM (0)
Apr 06, 4-5 AM (0)
Apr 06, 5-6 AM (0)
Apr 06, 6-7 AM (0)
Apr 06, 7-8 AM (0)
Apr 06, 8-9 AM (0)
Apr 06, 9-10 AM (0)
Apr 06, 10-11 AM (0)
Apr 06, 11-12 PM (0)
Apr 06, 12-1 PM (0)
Apr 06, 1-2 PM (0)
Apr 06, 2-3 PM (0)
Apr 06, 3-4 PM (0)
Apr 06, 4-5 PM (0)
Apr 06, 5-6 PM (0)
Apr 06, 6-7 PM (0)
Apr 06, 7-8 PM (0)
Apr 06, 8-9 PM (0)
Apr 06, 9-10 PM (0)
Apr 06, 10-11 PM (0)
Apr 06, 11-12 AM (0)
Apr 07, 12-1 AM (1)
Apr 07, 1-2 AM (0)
Apr 07, 2-3 AM (1)
Apr 07, 3-4 AM (0)
Apr 07, 4-5 AM (0)
Apr 07, 5-6 AM (0)
Apr 07, 6-7 AM (0)
Apr 07, 7-8 AM (0)
Apr 07, 8-9 AM (0)
Apr 07, 9-10 AM (0)
Apr 07, 10-11 AM (0)
Apr 07, 11-12 PM (0)
Apr 07, 12-1 PM (0)
Apr 07, 1-2 PM (0)
Apr 07, 2-3 PM (0)
Apr 07, 3-4 PM (0)
Apr 07, 4-5 PM (0)
Apr 07, 5-6 PM (0)
Apr 07, 6-7 PM (0)
Apr 07, 7-8 PM (2)
Apr 07, 8-9 PM (0)
Apr 07, 9-10 PM (0)
Apr 07, 10-11 PM (0)
Apr 07, 11-12 AM (0)
Apr 08, 12-1 AM (2)
Apr 08, 1-2 AM (0)
Apr 08, 2-3 AM (2)
Apr 08, 3-4 AM (1)
Apr 08, 4-5 AM (0)
Apr 08, 5-6 AM (0)
Apr 08, 6-7 AM (0)
Apr 08, 7-8 AM (0)
Apr 08, 8-9 AM (0)
Apr 08, 9-10 AM (1)
Apr 08, 10-11 AM (0)
Apr 08, 11-12 PM (0)
Apr 08, 12-1 PM (0)
Apr 08, 1-2 PM (0)
Apr 08, 2-3 PM (0)
Apr 08, 3-4 PM (0)
Apr 08, 4-5 PM (0)
Apr 08, 5-6 PM (0)
Apr 08, 6-7 PM (0)
Apr 08, 7-8 PM (0)
Apr 08, 8-9 PM (0)
Apr 08, 9-10 PM (0)
Apr 08, 10-11 PM (0)
Apr 08, 11-12 AM (1)
Apr 09, 12-1 AM (0)
Apr 09, 1-2 AM (0)
Apr 09, 2-3 AM (0)
Apr 09, 3-4 AM (1)
Apr 09, 4-5 AM (0)
Apr 09, 5-6 AM (0)
Apr 09, 6-7 AM (0)
Apr 09, 7-8 AM (1)
Apr 09, 8-9 AM (0)
Apr 09, 9-10 AM (0)
Apr 09, 10-11 AM (3)
Apr 09, 11-12 PM (0)
Apr 09, 12-1 PM (0)
Apr 09, 1-2 PM (0)
Apr 09, 2-3 PM (0)
Apr 09, 3-4 PM (0)
Apr 09, 4-5 PM (0)
Apr 09, 5-6 PM (0)
Apr 09, 6-7 PM (0)
Apr 09, 7-8 PM (0)
Apr 09, 8-9 PM (0)
Apr 09, 9-10 PM (0)
Apr 09, 10-11 PM (0)
20 commits this week Apr 02, 2026 - Apr 09, 2026
Add linker pool allocator for aarch64 under qemu (cf GHC #24432)
When running the GHC RTS linker under qemu user-mode emulation,
mmap hint addresses are ignored, causing allocations to scatter
across the address space. This leads to ADR_GOT_PAGE relocation
overflow (±4GB range exceeded) on aarch64.

This patch pre-allocates a single contiguous 512MB RWX pool and
sub-allocates from it for all linker needs: sections, GOT, BSS,
and COMMON symbols. The pool is split into RW (growing down) and
RX (growing up) halves, guaranteeing all allocations stay close.

Also fixes GOT slot allocation for STB_LOCAL symbols (e.g.
approx_tab in Android NDK's libm.a) which have GOT-relative
relocations but were not assigned GOT slots.

Applied to GHC 9.6.7, 9.8.3+, 9.10.2+ (versions that already use
m32 for regular sections but missed BSS, COMMON, and GOT).

Enables android and aarch64-cross TH tests (annotations,
js-template-haskell, th-dlls) that were previously disabled due to
iserv hanging under qemu.
Add GHC 9.12.4 (#2490)
* Add GHC 9.12.4

- Add ghc-9.12.4-iog branch on stable-haskell/ghc from release tag
- Add lazy-inputs/ghc9124 flake input
- Add ghc9124 compiler definition in bootstrap.nix
- Update latestVerMap to default 9.12 series to 9.12.4
- Add ghc9124 to ghc9141 bootstrap fallback chain
- Create ghc-9.12.4-Cabal-3.14.patch (adapted for 9.12.4 changes
  in utils/genprimopcode/Main.hs)
- Exclude ghc-16bit-elf-section-header-overflow.patch from 9.12.4+
  (already upstreamed)

* Bump head.hackage

* Fix android iserv-proxy-interpreter: link -ldl and update head.hackage hash

The GHC RTS references dlopen/dlclose/dlsym/dlerror even with
-dynamic-system-linker disabled. Add -ldl to the android
iserv-proxy-interpreter linker flags to resolve undefined symbols.

Also update the head.hackage repository hash in test/cabal.project.local.

* Use stdio pipes for iserv-proxy, enable Windows TH tests

Replace TCP socket communication between iserv-proxy and the
interpreter with stdin/stdout pipes (--pipe/--stdio modes). TCP
networking inside nix-linux-builder VMs is unreliable, causing iserv
to hang during Template Haskell evaluation.

The proxy now spawns the interpreter as a subprocess and communicates
via its stdin/stdout, bypassing TCP entirely. The old TCP mode is
preserved for backward compatibility.

Also:
- Add -optl-ldl to android ghcOptions (GHC RTS references dlopen even
  with -dynamic-system-linker disabled)
- Enable TH tests (annotations, th-dlls, th-dlls-minimal,
  js-template-haskell) for ucrt64 Windows cross-compilation
- Disable mingwW64 (msvcrt) due to Rosetta wine crash
- Android TH tests remain disabled pending linker pool patch

* Extend Windows DLL symbol type fix to GHC 9.14+

The ghc-9.10-windows-dll-dependent-symbol-type-fix.patch was not applied
to GHC 9.14.1, but the fix was never upstreamed. This caused FFI calls
to C DLLs to crash in the iserv interpreter during TH evaluation
(th-dlls-minimal test). Remove the upper version bound so it applies to
all GHC versions from 9.4 onwards.

* Fix cabal-simple-prof android -ldl and add stack resolver for ghc9124

- Add --ghc-option=-optl-ldl to cabal-simple-prof android override
  (same fix as iserv-proxy-interpreter for missing dlopen symbols)
- Add stack-ghc9124.yaml resolver for ghc-lib-reinstallable test
Use stdio pipes for iserv-proxy, enable Windows TH tests
Replace TCP socket communication between iserv-proxy and the
interpreter with stdin/stdout pipes (--pipe/--stdio modes). TCP
networking inside nix-linux-builder VMs is unreliable, causing iserv
to hang during Template Haskell evaluation.

The proxy now spawns the interpreter as a subprocess and communicates
via its stdin/stdout, bypassing TCP entirely. The old TCP mode is
preserved for backward compatibility.

Also:
- Add -optl-ldl to android ghcOptions (GHC RTS references dlopen even
  with -dynamic-system-linker disabled)
- Enable TH tests (annotations, th-dlls, th-dlls-minimal,
  js-template-haskell) for ucrt64 Windows cross-compilation
- Disable mingwW64 (msvcrt) due to Rosetta wine crash
- Android TH tests remain disabled pending linker pool patch
Fix rsync permissions for VirtioFS-backed Nix stores (#2491)
* Use rsync --chmod=u+w to fix builds on VirtioFS-backed stores

Apple's VirtioFS (used by nix-linux-builder for Linux-on-Darwin builds)
does not honor Linux DAC_OVERRIDE. When rsync -a copies from read-only
Nix store paths, it preserves the 555 directory permissions, creating
truly unwritable directories on VirtioFS. Subsequent file writes into
these directories fail with EACCES.

Adding --chmod=u+w to rsync makes directories owner-writable as they
are created, preventing the permission lockout. This is a no-op on
native Linux where DAC_OVERRIDE already grants write access regardless
of directory permissions.

The separate chmod -R +w calls are no longer needed since rsync now
sets the correct permissions during copy.

* cd nix-tools && nix flake update haskellNix --override-input haskellNix github:input-output-hk/haskell.nix/angerman/fix-rsync-virtiofs-permissions

Needed to fix hydra eval error

---------

Co-authored-by: Hamish Mackenzie <[email protected]>
Use rsync --chmod=u+w to fix builds on VirtioFS-backed stores
Apple's VirtioFS (used by nix-linux-builder for Linux-on-Darwin builds)
does not honor Linux DAC_OVERRIDE. When rsync -a copies from read-only
Nix store paths, it preserves the 555 directory permissions, creating
truly unwritable directories on VirtioFS. Subsequent file writes into
these directories fail with EACCES.

Adding --chmod=u+w to rsync makes directories owner-writable as they
are created, preventing the permission lockout. This is a no-op on
native Linux where DAC_OVERRIDE already grants write access regardless
of directory permissions.

The separate chmod -R +w calls are no longer needed since rsync now
sets the correct permissions during copy.