| 25 Apr 2025 |
dramforever | i don't want to spend the hour building a new x86 gcc | 04:03:27 |
outfoxxed | The intention was to disable hardening in target packages
I'll see how it goes with that off | 04:03:28 |
dramforever | nobody else ran into this because nobody else is overriding the entire freaking stdenv | 04:03:58 |
outfoxxed | does beg the question of why that breaks it | 04:04:47 |
outfoxxed | but I'll give it a shot without overriding that | 04:06:05 |
outfoxxed | currently building | 04:06:08 |
dramforever | .... snowball hasn't had a release since 2021, but is still in pretty active development it seems? | 04:16:46 |
dramforever | fixed for some definition of fixed https://github.com/NixOS/nixpkgs/pull/401632 | 04:56:20 |
dramforever | @outfoxxed:outfoxxed.me: also, just for the record, you basically never need targetPackages unless you're building a compiler | 05:19:05 |
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 |
outfoxxed | so does this mean a "build on L, runs/links on C" glibc? | 05:34:14 |
dramforever | correct | 05:34:53 |
outfoxxed | so what makes gcc single-target? just design choices on their end | 05:35:40 |
dramforever | yes | 05:35:48 |
outfoxxed | most other compilers are (L, L, *) right | 05:36:04 |