| 24 Oct 2025 |
emily | we still should avoid having availability headers that are randomly inconsistent between the internal and public SDK though, which is why just doing the #define will work better if we do want __SPI_AVAILABLE across the board | 02:15:29 |
emily | no way out of having some custom headers given CoreSymbolication and all | 02:15:54 |
Randy Eckenrode | And APFS.framework. | 02:16:21 |
emily | btw, I don't think I understand the atf infinite recursion thing. why does doing it in the stdenv not work with pkgsStatic? | 02:16:31 |
Randy Eckenrode | I think I’ve done a few others as well. That’s expected. | 02:16:33 |
emily | because pkgsStatic is cross so it skips the override and then the static apple-sdk infrecs? | 02:16:51 |
Randy Eckenrode | Yeah. ATF needs to be in checkInputs and nativeCheckInputs because it provides a runner and a library you need to link. For pkgsStatic, that library is pkgsStatic.atf, which depends on the SDK, which depends on pkgsStatic.libiconv, which depends on pkgsStatic.atf. | 02:18:16 |
Randy Eckenrode | Native stdenvs can untie that knot with overrides, but cross ones either can’t or don’t. | 02:18:37 |
emily | perhaps we should propagate the extra packages from the stdenv rather than apple-sdk | 02:18:41 |
Randy Eckenrode | It wouldn’t matter where it’s propagated. | 02:19:03 |
Randy Eckenrode | The static stdenv would depend on pkgsStatic.libiconv, which etc. | 02:19:30 |
emily | right, but you can at least stdenv.override { extraBuildInputs = [ ]; } | 02:26:09 |
emily | and I was thinking it'd be easier to get the bootstrap to do the right thing | 02:26:18 |
emily | hmm | 02:27:24 |
emily | pkgs/stdenv/cross/default.nix seems to only add the SDK in the last stage | 02:27:28 |
samasaur | did you have a particular one in mind? I just looked through them and I didn't see anything that looked like it would cause this problem/solve it for CFNetwork | 02:28:22 |
emily | we have some SDK stuff | 02:28:32 |
emily | thought it might be relevant | 02:28:36 |
emily | though I deleted most of that stuff | 02:28:38 |
samasaur | i'm really baffled by why CFNetwork and Network behave differently | 02:29:01 |
samasaur | they appear to be treated identically by qt, and we don't seem to do any patching for either of those explicitly | 02:29:51 |
samasaur | so as I understand it either both should be picked up from the SDK or neither should be | 02:30:11 |
Randy Eckenrode | That would remove the SDK. You’d have to add it back. | 02:31:05 |
emily | right | 02:31:40 |
emily | seems best to just fix the cross stdenv. if only I knew why it was broken | 02:31:47 |
Randy Eckenrode | I think less specific to this example is coming up with a solution to the general problem of conditional arguments. The solution given in the by-name RFC was to add your package to all-packages.nix, but it seems the desire now is not to have packages there? | 02:32:19 |
Randy Eckenrode | That’s one example. It’s potentially anything that has a recursive dependency that the bootstrap had to break up. | 02:33:03 |
Randy Eckenrode | Like in the old source-based SDK how xnu depended on python3 but relied on the bootstrap to override it with python3Minimal to break the infinite recursion. | 02:34:15 |
emily | that shouldn't be an issue for cross though | 02:38:40 |
emily | since cross already has a bootstrapped toolchain | 02:38:44 |