| 11 Nov 2024 |
emily | oh, because of the awful ancient GCCs thing? | 22:09:52 |
emily | that's GCC < 10, right? | 22:09:58 |
Randy Eckenrode | Yes. | 22:10:02 |
Randy Eckenrode | The builder is pretty messy, so trying to conditionally doing it looked worse. | 22:10:09 |
emily | I'm dropping those anyway, so maybe problem solved? | 22:10:18 |
Randy Eckenrode | In reply to @sternenseemann:systemli.org Randy Eckenrode: do you think it is possible to get rid of this https://github.com/NixOS/nixpkgs/blob/03676a7e0ff1a54a9dabd749559ed6beca5abd5c/pkgs/stdenv/generic/default.nix#L117-L119? This is kind of annoying since it means that all of buildPackages gets rebuilt when changing targetPlatform even if derivations are target agnostic Darwin doesn’t need rpaths set though. How to handle that when Darwin is the target platform? | 22:11:00 |
Randy Eckenrode | In reply to @emilazy:matrix.org I'm dropping those anyway, so maybe problem solved? As long as Darwin doesn’t resume setting rpaths again. | 22:11:13 |
emily | would we want to? | 22:12:01 |
emily | In reply to @reckenrode:matrix.org Darwin doesn’t need rpaths set though. How to handle that when Darwin is the target platform? it's just a default for ld-wrapper, right? so it can go in the ld-wrapper derivation? | 22:12:15 |
emily | I guess that would still rebuild the world though. | 22:12:32 |
emily | it might just need patching in ld64. | 22:12:43 |
sterni | Randy Eckenrode: it should be moved into the cc wrapper somehow since then we can be sure that target is relevant | 22:12:45 |
sterni | can probably be put in its setup hook | 22:12:53 |
sterni | or maybe binutils | 22:12:57 |
emily | what's a binutils? :) | 22:13:16 |
Randy Eckenrode | In reply to @emilazy:matrix.org it might just need patching in ld64. Why would ld64 need patching? There’s nothing wrong with it. | 22:13:23 |
emily | In reply to @reckenrode:matrix.org Why would ld64 need patching? There’s nothing wrong with it. well, since it would mean fewer things changing depending on stdenv.targetPlatform. | 22:13:49 |
emily | but it might not be the right place. probably the wrapper is a better idea. (but then adjusting the target platform would still result in rebuilds, right?) | 22:14:05 |
emily | (really need targetPlatform = null…) | 22:14:31 |
Randy Eckenrode | I have two main concerns:
- Darwin is not forced to be like other platforms for the sake of convenience. We’re finally undoing a lot of that after the refactor; and
- Darwin tooling is not hacked up to work around number 1.
| 22:15:53 |
emily | I think it's more about a general principle that targetPlatform differences should not cause rebuilds of things that don't care about targetPlatform | 22:16:49 |
emily | whereas currently targetPlatform being Darwin or not rebuilds the world | 22:16:59 |
emily | in an ideal world the unwrapped LLVM derivation wouldn't even be able to look at targetPlatform, e.g. | 22:17:28 |
emily | currently, rg 'targetPlatform\.is' pkgs/stdenv is two Darwins and two ghcjses | 22:18:36 |
emily | (one of the Darwins is harmless, just making makeStaticBinaries throw) | 22:18:57 |
emily | (and the ghcjs mentions also look harmless) | 22:19:12 |
Randy Eckenrode | So if we can move this to the wrapper, that seems fine. | 22:21:14 |
Randy Eckenrode | In reply to @emilazy:matrix.org whereas currently targetPlatform being Darwin or not rebuilds the world That seems to be a Nix problem where any change in puts cause rebuilds even when they don’t matter. | 22:21:34 |
Randy Eckenrode | In reply to @emilazy:matrix.org whereas currently targetPlatform being Darwin or not rebuilds the world * | 22:22:05 |