!OqhvaDMJdKYUicLDiE:nixos.org

Nixpkgs Stdenv

225 Members
72 Servers

Load older messages


SenderMessageTime
19 Nov 2024
@emilazy:matrix.orgemilyto which the answer is, now it means the bootstrap chain for basic tests is a bunch longer, unless we hack around it or strip down the closure14:20:57
@sternenseemann:systemli.orgsterniyou don't need to use canExecute there, just don't test emulator if hostPlatform == buildPlatform if you really care about the speed of the tests14:20:58
@emilazy:matrix.orgemily but the whole point of having a NOP emulator is that you can just use it without needing to replicate that logic everywhere. 14:21:24
@emilazy:matrix.orgemily(that wouldn't work for i686 anyway I think)14:21:36
@sternenseemann:systemli.orgsterniI think it's worse to have like weird code for no reason that relies on bootstrapping logic14:21:56
@sternenseemann:systemli.orgsternithat's always a recipe for having to debug some eval problem for a week down the road14:22:17
@emilazy:matrix.orgemilyok. then can we go back to just vendoring a 5-line C program?14:22:17
@emilazy:matrix.orgemilythat would solve all the issues and be even fewer builds14:22:26
@emilazy:matrix.orgemily and execline can do whatever 14:22:32
@sternenseemann:systemli.orgsternino I'd say just use buildPackages.execline honestly, it's the simplest and cleanest14:22:48
@sternenseemann:systemli.orgsternithe problem just affects nixpkgs developers and we can just split the tests up, so you don't run the emulator tests if you're in a hurry, right?14:23:15
@sternenseemann:systemli.orgsterniand often you'd need to test cross anyways, then it makes no difference anyways14:23:32
@emilazy:matrix.orgemily I don't think hacks like #351768 are cleaner than int main(int argc, char **argv) { execvp(argv[1], argv+1) }. 14:24:12
@sternenseemann:systemli.orgsterni but yeah vendoring exec(1) is also an option, but it's also kind of silly 14:24:15
@emilazy:matrix.orgemilyI think adding >100 builds to the cycle time of testing compiler changes is painful14:24:43
@emilazy:matrix.orgemilyit's not about "emulator tests"14:25:02
@emilazy:matrix.orgemilythe emulator is used so that the cc-wrapper tests support both cross and native14:25:10
@emilazy:matrix.orgemilythere's nothing to skip14:25:22
@emilazy:matrix.orgemily needing logic to conditionalize it to be something that isn't painful to include in the closure defeats the whole point of having a NOP .emulator for when one platform can execute the other 14:25:44
@sternenseemann:systemli.orgsternithe silly thing is probably having the noop emulator15:28:35
@emilazy:matrix.orgemily why? it lets you uniformly handle native and cross. e.g. https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/ju/jujutsu/package.nix#L95-L107 or gobject-introspection stuff. we should use it more over canExecute if anything. 15:29:50
@sternenseemann:systemli.orgsterniit's an emulator that isn't an emulator15:30:55
@sternenseemann:systemli.orgsterni pkgs.writeShellScript "exec" "exec \"$@\"" 15:31:25
@emilazy:matrix.orgemilyit's the base case of emulation. handling native and cross uniformly is a good thing15:38:09
@emilazy:matrix.orgemilylooks like the shell script approach goes from 330 to 332 builds, so I guess that way is fine15:38:22
@emilazy:matrix.orgemilyI'll PR that instead15:38:26
@sternenseemann:systemli.orgsterniemulation shouldn't be a part of cross compilation, honestly, that's the root problem15:43:36
@emilazy:matrix.orgemily how would you prefer to handle things like gobject-introspection and anything else that requires running the produced binary to end up with a correct build of the resulting package? 15:44:39
@emilazy:matrix.orgemilyopened https://github.com/NixOS/nixpkgs/pull/357309, will test it now15:45:02
@sternenseemann:systemli.orgsterniWell I don't deny that it's sometimes necessary, but we shouldn't write emulator-first code since emulation is a crutch for packages that can't be cross-compiled properly.15:55:38

Show newer messages


Back to Room ListRoom Version: 9