| 13 Jan 2025 |
m1-s | Hi, i am working on a project where I just updated from nix 22.11 to 24.11. this project uses a haskell library that does ffi stuff. since the update I am getting the following error when trying to compile something that uses the ffi haskell library:
> <no location info>: error:
> /nix/store/ig69mqspa9a7gmkib1p05rndsfmp5qjl-mypackage-0.1.0/lib/ghc-9.6.6/lib/x86_64-linux-ghc-9.6.6/mypackage-0.1.0-GG7CxsqkGDRPE7u83aSVw-ghc9.6.6.so: undefined symbol: my_function
Anyone has a clue what broke or how to debug this? Did anything change in the way nix/ghc handles ffi things since nix 22.11?
| 08:05:19 |
m1-s | it builds in the dev shell with cabal. just not in nix. so i must be missing some flags in my nix build. dont know which though. | 08:17:12 |
| KSP Atlas joined the room. | 09:55:20 |
Collin Arnett | Redacted or Malformed Event | 11:11:03 |
alexfmpe | I had something similar looking once but for a symbol from a dependency. Whatever the cause was, it got fixed by overriding that dep to use cabal 3.6+ | 15:47:50 |
alexfmpe | But I was using an older nixpkgs, it wasn't happening on newer ones | 15:48:15 |
alexfmpe | hmm do you maybe have some conditionals in .cabal that look relevant?
cabal2nix isn't great at handling them | 15:49:14 |
alexfmpe | huuh how is it that nix-build -A haskell.packages.ghc910.aeson-gadt-th works even though https://hackage.haskell.org/package/aeson-gadt-th has base <4.20 ? | 23:21:08 |
maralorn | Normally jailbreak | 23:21:39 |
maralorn | I guess you know that 😃 | 23:22:14 |
alexfmpe | ah derp it was hidden on configuration.nix-nix | 23:22:14 |
alexfmpe | * ah derp it was hidden on configuration-nix.nix | 23:22:22 |
| 14 Jan 2025 |
sterni (he/him) | Cabal 3.14.1.1 breaks GHC 9.12 bootstrap and it's kind of interesting how this happened
- So to begin with GHC 9.12 arbitrarily requests Cabal 3.14 for hadrian because they need it for some feature. Since no previous GHC actually ships this version of Cabal, you can't use the core package.
- Cabal 3.14.1.1 newly introduces a constraint on unix that is supposed to prevent building it with a buggy version of unix (a bug that apparently only affects 32bit platforms). I must say that these is a questionable decision and seems like abusing the constraint system. It's also strange that even though the bug only affects certain platforms, the constraint isn't conditional. (https://github.com/haskell/unix/pull/318)
- Since GHC 9.10 which we use for bootstrapping ships an affected version of Unix we get a violated constraint.
Which goes to show that making your bootstrapping process more complex, things will go wrong as soon as someone steps just a tiny bit away from the CI tested bootstrap plans that pin every dependency.
| 13:13:17 |
maralorn | Phew | 13:15:20 |
maralorn | sterni: Can we override Cabal and unix? | 13:17:13 |
sterni (he/him) | yes, but it's a massive headache becasue unix is also used by other libraries | 13:17:32 |
sterni (he/him) | The patch for unix is trivial we can probably just pick it onto every GHC we ship. | 13:17:55 |
maralorn | Sounds good | 13:18:16 |
sterni (he/him) | The question is whether we even need it
On that platform (as well as any other glibc/musl platform), however, CTimeVal isn't used for anything at all because there are #ifdefs that prefer using utimensat which takes CTimeSpec instead. This fix is therefore quite theoretical, as it is unknown whether there are any platforms actually affected.
| 13:18:18 |
maralorn | Still annoying | 13:18:20 |
maralorn | 😆 | 13:18:33 |
sterni (he/him) | It seems very unnecessary, yes. | 13:18:34 |
maralorn | I wonder which bug this is supposed to prevent. | 13:23:03 |
maralorn | That is a super cautious bound bump. | 13:23:36 |
sterni (he/him) | it broke ghcup on debian | 13:23:52 |
maralorn | Oh | 13:24:06 |
sterni (he/him) | but it seems a little extreme still | 13:24:20 |
sterni (he/him) | our i686-linux at least still uses 32bit time_t etc. | 13:24:47 |
sterni (he/him) | going to make the patch PR at some later point | 13:25:43 |
sterni (he/him) | also uh https://github.com/haskell/ghcup-hs/issues/1107#issuecomment-2571330758 | 13:26:24 |