| 22 Feb 2025 |
Janus | readme says "Mutually recursive modules are allowed the same way as with GHC, using .hs-boot files." | 06:03:44 |
Alex | In reply to @janus.troelsen:matrix.org as far as I understand, going from GHC to GHC is considered easy? if the minimal bootstrap you refer to is microhs, surely the biggest issue is doing the jump from microhs to GHC , and specifically choosing a suitable version of GHC. Yes, that's what I foresee being the most difficult.
Planned approaches, from most desirable to least:
- Use mhs directly as a boot compiler with the GHC build system. Unlikely to work because it would require being able to build Hadrian and probably explicit support from GHC. If the GHC maintainers are keen on it, maybe one day it'll be possible.
- Use mhs to build ghc-bin, then boot GHC with it.
- Use mhs to boot an old GHC version, then build a long chain of versions to get to the modern ones.
| 06:23:37 |
emily | In reply to @janus.troelsen:matrix.org as far as I understand, going from GHC to GHC is considered easy? if the minimal bootstrap you refer to is microhs, surely the biggest issue is doing the jump from microhs to GHC , and specifically choosing a suitable version of GHC. the minimal bootstrap is the elaborate C/Mes/etc. stuff, I wasn't talking about Haskell | 14:39:17 |
emily | I was just saying there has been work on that for Nixpkgs | 14:39:27 |
emily | anyway, it was something about Hadrian issues with new GHCs making us use an old GHC for bootstrap, but I wasn't clear on the details | 14:40:07 |
emily | In reply to @emilazy:matrix.org the minimal bootstrap is the elaborate C/Mes/etc. stuff, I wasn't talking about Haskell (the "256 bytes + Linux kernel + build orchestrator" thing a la Guix) | 14:41:20 |
alexfmpe | Thanks, worked like a charm | 18:52:11 |
alexfmpe | I was handed a list of dozens of packages that don't need dontCheck anymore | 18:52:37 |
alexfmpe | I don't see how to use the same approach for doJailbreak though
Turns out this works for doCheck because that's a property of stdenv.mkDerivation
however doJailbreak triggers splicing in postPatch so it's not directly inspectable from the outside | 18:55:51 |
alexfmpe | also much less likely to vary between ghc versions than test suite failures | 18:58:04 |
alexfmpe | * also much more likely to vary between ghc versions than test suite failures | 18:58:10 |
Alex | Here's an idea: override Haskell's mkDerivation to add all of the function arguments to passthru. Since it's passthru, it shouldn't invalidate caching.
Otherwise, there's also this ugly hack.
nix-repl> (haskell.lib.doJailbreak haskellPackages.lens).postPatch
"echo \"Run jailbreak-cabal to lift version restrictions on build inputs.\"\n/nix/store/7q7kmsirmz061126189935lwjw5yhdlv-jailbreak-cabal-1.4/bin/jailbreak-cabal lens.cabal\n"
nix-repl> (haskell.lib.dontJailbreak haskellPackages.lens).postPatch
""
| 20:10:47 |
Alex | Ah, wait, by "from the outside", you mean not within the Nix interpreter itself? As in, you need a property within the .drv that an external program can read? | 20:12:41 |
alexfmpe | In reply to @alex:tunstall.xyz Ah, wait, by "from the outside", you mean not within the Nix interpreter itself? As in, you need a property within the .drv that an external program can read? Nono I meant "after the fact". Like, when accessing haskellPackages.foo | 22:58:08 |
alexfmpe | In reply to @alex:tunstall.xyz
Here's an idea: override Haskell's mkDerivation to add all of the function arguments to passthru. Since it's passthru, it shouldn't invalidate caching.
Otherwise, there's also this ugly hack.
nix-repl> (haskell.lib.doJailbreak haskellPackages.lens).postPatch
"echo \"Run jailbreak-cabal to lift version restrictions on build inputs.\"\n/nix/store/7q7kmsirmz061126189935lwjw5yhdlv-jailbreak-cabal-1.4/bin/jailbreak-cabal lens.cabal\n"
nix-repl> (haskell.lib.dontJailbreak haskellPackages.lens).postPatch
""
Oh, you're saying to disable postPatch all together | 22:58:50 |
alexfmpe | I guess that's usable | 22:59:21 |
alexfmpe | I did think about shoving 'jailbreak' in passthru, but that only lets me read, not write right? | 23:00:28 |
alexfmpe | doCheck works because the one I can set is the same mkDerivation will read | 23:00:49 |
alexfmpe | passthru just 'mirrors' | 23:00:59 |
alexfmpe | There's no pass-by-reference | 23:01:10 |
alexfmpe | In reply to @alexfmpe:matrix.org I guess that's usable As in, few false positivirs | 23:01:54 |
alexfmpe | * As in, few false positives | 23:02:02 |
Alex | Well you can override mkDerivation to completely ignore doJailbreak too. It's not entirely clear to me what you're trying to do. | 23:02:13 |
alexfmpe | In reply to @alexfmpe:matrix.org As in, few false positives Vanishingly few if I just sed out the jailbreak-cabal line | 23:02:44 |