3 ms·
> Nixpkgs also doesn't seem to require that all packages be built from source - which, if you're really looking for reproducibility, is a downside. Does Guix n
by rssoconnor 2y ago
> Nixpkgs also doesn't seem to require that all packages be built from source - which, if you're really looking for reproducibility, is a downside.
Does Guix not have GHC (Glasgow Haskell Compiler) or did it somehow bootstrap GHC? Last time I checked bootstrapping GHC on today's hardware is effectively an unsolved problem. [1]
> NixOS does not have an equivalent to Guix's full-source bootstrap
While you are not wrong, there is nothing fundamentally stopping Nixpkgs from being bootstrapped in a similar way to Guix. emilytrau has already done a lot of the work. [2]
[1] https://elephly.net/posts/2017-01-09-bootstrapping-haskell-part-1.html https://elephly.net/posts/2017-01-09-bootstrapping-haskell-p...
[2] https://github.com/NixOS/nixpkgs/pull/227914 https://github.com/NixOS/nixpkgs/pull/227914
- ryukafalz 2y ago> Does Guix not have GHC (Glasgow Haskell Compiler) or did it somehow bootstrap GHC? Last time I checked bootstrapping GHC on today's hardware is effectively an unsolved problem. I think you're right, it looks like they've gotten a little further now than in that post but there's still a gap in the bootstrap chain. So maybe not every package is fully bootstrapped, but they do seem to take it more seriously. > While you are not wrong, there is nothing fundamentally stopping Nixpkgs from being bootstrapped in a similar way to Guix. emilytrau has already done a lot of the work. Yes, I agree, and I hope they get there! I just also think that acknowledging the places where Guix is currently ahead isn't wrong. Nix isn't the only game in town anymore.
- rssoconnor 2y ago> it looks like they've gotten a little further now than in that post Can you say more, or provide any references? I would be interested in the state of the art here.
- ryukafalz 2y agoThere's a comment in the Guix source (added by the author of that first post you linked, Ricardo Wurmus) that seems to indicate that they found a way around the segfault problem described in the post by using a registerised version of GHC: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/haskell.scm#n366 https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages... I had to look up exactly what this means, not being very familiar with the Haskell ecosystem myself. It looks like it's not the raw source form and is architecture-specific, but it's also not the compiled binary form. So that's not perfect, but better than relying on the compiled binaries I guess. (Unfortunate for me since my laptop is ARM and I'd like to be able to use git-annex, haha.) But this seems to work for older versions of GHC. This post by Simon Tournier from last year describes the current situation near the bottom, and from what I can tell this is still correct: https://simon.tournier.info/posts/2023-10-01-bootstrapping.html https://simon.tournier.info/posts/2023-10-01-bootstrapping.h... > The bootstrapping problem for Haskell is not solved. And Ricardo works hard on it. Currently, from the older GHC around (4.08.2), which relies on gcc-2.95 – part of the Bootstrapping story above – it is possible to chain until version 6.10.4. Then versions 6.12.3 and 7.4.2 are not packaged yet for completing the Haskell chain from version 4.08.2 to modern version as 9.2.5; fully connecting the dots with bootstrap-seeds and dropping these 450MiB of binaries. The solution of this chicken-or-the-egg is not yet complete.
- rekado 2y agoThe technical details of the quote are correct, but FWIW I'm no longer working on the GHC bootstrap. It's fun for a while but the lack of interest in the Haskell community and the general high level of ridicule and hostility from the rest of the software world towards all things GNU / free software / bootstrapping have kinda turned me off the whole computer thing.
- ryukafalz 2y agoThat's unfortunate to hear, I'm sorry you've had to deal with that :(
- rekado 2y agoI've built up to GHC 6 (I've stopped after reaching 6) from GHC 4. GHC 4 does use some generated C files, so it's not a pure bootstrap, but it's still much better than taking a binary of GHC 6 or later. (I'm the author of the 2017 blog post. I had planned a follow-up but since I didn't have much to show I scrapped it.)
- rssoconnor 2y agoIs this committed to Guix and/or otherwise available somewhere?
- rekado 2y agoIt's part of Guix. It starts here: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/haskell.scm?id=6ddb855f988c33c83d7781517bbf4763c5f77928#n188 https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages...