| 25 Apr 2025 |
dramforever | for example, your x86_64 to riscv64 cross gcc depends on targetPackages.glibc | 05:19:37 |
outfoxxed | its rather confusing so pkgs == host packages, buildPkgs = build packages, targetPkgs = confusing | 05:21:00 |
outfoxxed | is that right | 05:21:06 |
outfoxxed | this is host x64 target rv64 targetPackages right | 05:21:54 |
dramforever | that's actually a pretty good summary 😆 | 05:23:02 |
outfoxxed | haha | 05:23:29 |
dramforever | let's start from the basics, whenever you build something the build process has (build, host, target) | 05:24:25 |
dramforever | we'll write (b, h, t) from now on | 05:24:30 |
dramforever | and you pass localSystem and crossSystem to nixpkgs, let's call those L and C | 05:24:47 |
dramforever | we build pkgs.gcc from that, what happens? | 05:26:45 |
dramforever | oh btw as i said t doesn't matter if you're not a compiler, so i'll write (b, h, *) in cases where t doesn't matter | 05:27:43 |
dramforever | firstly, the bootstrap process eventually makes a (L, L, L) gcc | 05:28:18 |
dramforever | using that we build a (L, L, C) gcc (without libc) | 05:29:25 |
dramforever | and using that, we build a (L, C, *) glibc | 05:29:55 |
dramforever | we combine the two together to make a (L, L, C) gcc wrapper (contains libc) | 05:30:15 |
outfoxxed | isn't the gcc and glibc build process supposed to be combined in some way nobody else does that makes this overly annoying | 05:32:00 |