!OqhvaDMJdKYUicLDiE:nixos.org

Nixpkgs Stdenv

221 Members
70 Servers

Load older messages


SenderMessageTime
19 Nov 2024
@sternenseemann:systemli.orgsternisorry if I've been difficult :)18:01:14
@emilazy:matrix.orgemilyeh, it's just a bunch of understandable but colliding priorities I think :)18:05:23
@emilazy:matrix.orgemily execline wants to not worry about its own closure size too obsessively, Nixpkgs tests want to be as cheap as possible to run, cross wants to not depend on execution of the host platform, tests need running, binaries want to dynamically generate things 18:06:11
@emilazy:matrix.orgemilyit's all an ugly mess but at least the simple decoupling should reduce some of the pressure points there18:06:39
@emilazy:matrix.orgemilyI think in an ideal world we would have a cross setup where tests and generation of completions/introspection data/etc. are always in separate derivations that can be opted out of, and can run at the Nix level either through emulation or remotely on a (presumably underpowered for building) native machine18:07:50
@emilazy:matrix.orgemilybut that's a massive project18:08:07
@sternenseemann:systemli.orgsterni also for that we would need to solve the binary cache problem™ since you'd probably need to have intermediate artifacts (post buildPhase) as a generic mechanism 18:38:41
@sternenseemann:systemli.orgsterniwhich obviously causes somewhat of a space problem18:38:51
@emilazy:matrix.orgemilyyes18:39:37
@emilazy:matrix.orgemilyI just file every improvement above a certain level of architectural ambition as "TODO in my Nix redesign"18:39:57
@emilazy:matrix.orgemilywhich allows me to remain ruthlessly pragmatic without feeling like I'm betraying my fundamental values :p18:40:17
@p14:matrix.orgp14

emily: I’ve been thinking a bit about what you were saying about separation of interface vs implementation for CA builds. One concern is: if you switch out the implementation, should that not also require a rebuild of downstream software which uses the implementation during the build at least?

I was thinking of the openssl case where ideally updating openssl doesn’t require a rebuild of the world, but as soon as you have a package which in checkPhase exercised the implementation of openssl, that package could be broken by the new implementation but would not have its tests run.

I guess if you depend on the implementation in order to build (or test) then that would require passing the implementation in; and therefore would condition the build on the implementation. I also wonder if I am talking myself into the concept that testing would have to happen in a separate derivation, essentially, which consumes the implementation.

19:32:34
@emilazy:matrix.orgemilyit would have its tests run – tests would happen after the relinking stage19:33:06
@emilazy:matrix.orgemilyyou could avoid these being in serial by using something like Ninja's "validations"19:33:17
@emilazy:matrix.orgemily(with Nix work)19:33:21
@p14:matrix.orgp14But even if you split testing you could still have stuff whose build unfortunately depends on implementation and not just the interface.19:33:22
@emilazy:matrix.orgemilytests don't have to block the build19:33:27
@emilazy:matrix.orgemilyas long as they prevent it from being successful if they fail19:33:35
@p14:matrix.orgp14“Ninja’s validations”?19:33:46
@emilazy:matrix.orgemilyso tests are much more embarrassingly parallelizable in theory19:33:48
@emilazy:matrix.orgemilyuhh, it was discussed in the thread :)19:33:53
@p14:matrix.orgp14Flew over my head if so, apols.19:34:13
@emilazy:matrix.orgemilyyou can say that build X only succeeds if build Y succeeds, but unlike "X depends on Y", build Z that depends on X can run before Y completes19:34:36
@emilazy:matrix.orgemilyhttps://ninja-build.org/manual.html#validations19:34:42
@emilazy:matrix.orgemilythis means that tests could basically happen in parallel to each other and all the relinking19:34:55
@emilazy:matrix.orgemilyyou don't have to finish the tests for libfoo to test application bar that depends on libfoo19:35:05
@emilazy:matrix.orgemilythey can run simultaneously19:35:08
@emilazy:matrix.orgemily(though again this would require support in Nix)19:35:11
@emilazy:matrix.orgemilyas far as "But even if you split testing you could still have stuff whose build unfortunately depends on implementation and not just the interface." goes, it would be statically ruled out by the scheme – with only the stubs, things would just not run19:35:33
@emilazy:matrix.orgemilystuff that absolutely needs it would have to have the bits that need runtime support split out (ties in to the cross conversation we just had in here actually), or to depend directly on relinked stuff and thereby be exempt from the scheme19:35:57

Show newer messages


Back to Room ListRoom Version: 9