-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Opaque dependency #9558
Comments
There is no getting around the fact that this would cause closures to behave differently depending on whether the opaque dependency is present in the Nix store, which violates a core goal of Nix. Furthermore, Nix has no concept of "runtime-only dependencies" because there really is no such thing: e.g. the "runtime-only" dependencies of a compiler become build-time dependencies when that compiler is used in a build process. For reducing CI load, it's probably better to have a FUSE filesystem that fetches store paths on demand. |
Opaqueness would be a property of the relation between a derivation and another store path, not an intrinsic property of the store path. That said I did not describe that the reference closure of the opaque dependency would also be unavailable (unless also referenced non-opaquely) - a straightforward extrapolation, it seems. A FUSE filesystem will not be able to exploit the concurrency allowed by an opaque dependency. If FUSE can be a requirement, I think we can also afford a sandbox that hides opaque paths (and unrelated paths) from the host store. |
I guess Eelco's point is based on the fact that for this to be usable, you need to be able to build a path without pulling in its runtime dependencies, and that means registering it with an incomplete closure. That might not hold true any more in the future (once/if we can separate building a path from registering it in a store), but it is indeed an issue today. |
Yeah, so this
|
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Describe alternatives you've considered
Opaque
Additional context
For exploiting the concurrency, we'll want to have two levels of validity in the store: individually valid, and closure valid. This benefits other processes as well, chiefly substitution and
nix copy
.Duplicate of #1080, but perhaps a different perspective, and this issue could perhaps be more implementation oriented.
Priorities
Add 👍 to issues you find important.
The text was updated successfully, but these errors were encountered: