Age | Commit message (Collapse) | Author |
|
Rather than having them plain strings scattered through the whole
codebase, create an enum containing all the known experimental features.
This means that
- Nix can now `warn` when an unkwown experimental feature is passed
(making it much nicer to spot typos and spot deprecated features)
- It’s now easy to remove a feature altogether (once the feature isn’t
experimental anymore or is dropped) by just removing the field for the
enum and letting the compiler point us to all the now invalid usages
of it.
|
|
I had started the trend of doing `std::visit` by value (because a type
error once mislead me into thinking that was the only form that
existed). While the optomizer in principle should be able to deal with
extra coppying or extra indirection once the lambdas inlined, sticking
with by reference is the conventional default. I hope this might even
improve performance.
|
|
In particular, this now works:
$ nix path-info --eval-store auto --store https://cache.nixos.org nixpkgs#hello
Previously this would fail as it would try to upload the hello .drv to
cache.nixos.org. Now the .drv is instantiated in the local store, and
then we check for the existence of the outputs in cache.nixos.org.
|
|
In the following commits it will become less prevalent.
|
|
|
|
It isn't needed anymore now that don't need to eagerly resolve
everything like we used to do. So we can safely get rid of it
|
|
It's not fixed nor useful atm, so better keep it hidden
Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
|
|
Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
|
|
Once a build is done, get back to the original derivation, and register
all the newly built outputs for this derivation.
This allows Nix to work properly with derivations that don't have all
their build inputs available − thus allowing garbage collection and
(once it's implemented) binary substitution
|
|
PRs #4370 and #4348 had a bad interaction in that the second broke the fist
one in a not trivial way.
The issue was that since #4348 the logic for detecting whether a
derivation output is already built requires some logic that was specific
to the `LocalStore`.
It happens though that most of this logic could be upstreamed to any `Store`,
which is what this commit does.
|
|
Rather than storing the derivation outputs as `drvPath!outputName` internally,
store them as `drvHashModulo!outputName` (or `outputHash!outputName` for
fixed-output derivations).
This makes the storage slightly more opaque, but enables an earlier
cutoff in cases where a fixed-output dependency changes (but keeps the
same output hash) − same as what we already do for input-addressed
derivations.
|
|
Let's get one step closer to the daemon not needing to fork.
|
|
|
|
Fixes #4235.
|
|
See https://github.com/NixOS/nix/pull/4056#discussion_r493661632
|
|
|
|
|
|
|
|
This reverts commit 9ab07e99f527d1fa3adfa02839da477a1528d64b.
|
|
|
|
|
|
We no longer need the `*Opt` to disambiguate.
|
|
If we resolve using the known path of a derivation whose output we
didn't have, we previously blew up. Now we just fail gracefully,
returning the map of all outputs unknown.
|
|
We will sometimes try to query the outputs of derivations we can't
resolve. That's fine; it just means we don't know what those outputs are
yet.
|
|
ca-floating-upstream
|
|
|
|
Revise division of labor in deserialization of derivations
|
|
Co-authored-by: Théophane Hufschmitt <regnat@users.noreply.github.com>
|
|
|
|
|
|
Insead they should be opaque `/<hash>` like the placeholders we already
have.
|
|
|
|
derivation-header-include-order
|
|
|
|
Offer a safer interface for path and pathOpt
|
|
Forgot to add this hunk!
|
|
into single-ca-drv-build
|
|
|
|
The name is now stored with the derivation itself.
|
|
|
|
|
|
github.com:obsidiansystems/nix into templated-daemon-protocol
|
|
new-interface-for-path-pathOpt
|
|
templated-daemon-protocol
|
|
derivation-primop-floating-output
|
|
|
|
|
|
|
|
This refactor should *not* change the wire protocol.
|
|
derivation-header-include-order
|