Age | Commit message (Collapse) | Author |
|
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.
|
|
|
|
libexpr: throw a more helpful eval-error if a builtin is not available due to a missing feature-flag
|
|
to a missing feature-flag
I found it somewhat confusing to have an error like
error: attribute 'getFlake' missing
if the required experimental-feature (`flakes`) is not enabled. Instead,
I'd expect Nix to throw an error just like it's the case when using e.g. `nix
flake` without `flakes` being enabled.
With this change, the error looks like this:
$ nix-instantiate -E 'builtins.getFlake "nixpkgs"'
error: Cannot call 'builtins.getFlake' because experimental Nix feature 'flakes' is disabled. You can enable it via '--extra-experimental-features flakes'.
at «string»:1:1:
1| builtins.getFlake "nixpkgs"
| ^
I didn't use `settings.requireExperimentalFeature` here on purpose
because this doesn't contain a position. Also, it doesn't seem as if we
need to catch the error and check for the missing feature here since
this already happens at evaluation time.
|
|
|
|
Don't allow IFD in flakes by default
|
|
This reverts commit 6678e98411cd3bfe8143a4ba1b35d1451babce32, reversing
changes made to 90b2dd570cbd8313a8cf45b3cf66ddef2bb06e07.
|
|
Errors that depend on the configuration (such as whether
allow-import-from-derivation is set) should not be cached.
|
|
|
|
Without this, flakes within the same tree and same lock data will have
the same fingerprint and the eval cache for one flake will be
incorrectly used for another.
|
|
If we can't write a lock file, pretend the top-level flake is dirty
|
|
|
|
Alternative to #4639. You can still read flake.lock, but at least in
reproducible workflows like NixOS configurations where you require a
non-dirty tree, evaluation will fail because there is no rev.
|
|
This reverts commit e5596113f7fc5e47e058bb15afdf75eee02ed95e.
|
|
With --no-write-lock-file, it's possible that flake.lock is out of
sync with the actual inputs used by the evaluation. So doing fromJSON
(readFile ./flake.lock) will give wrong results.
Fixes #4639.
|
|
nix --help: Display help using lowdown instead of man
|
|
|
|
Fixes #4476.
Fixes #5231.
|
|
Fix use-registries logic in builtins.getFlake
|
|
libfetchers/git: fetch submodules by default
|
|
|
|
add antiquotations to paths
|
|
I don't think this changes the way any program would behave, but it's a
cleaner internal representation.
|
|
|
|
Don't overwrite user provided `lib*_LDFLAGS`
|
|
EvalState lifetime hygiene
|
|
|
|
This fixes a use-after-free bug:
1. s = new EvalState();
2. callFlake()
3. static vCallFlake now references s
4. delete s;
5. s2 = new EvalState();
6. callFlake()
7. static vCallFlake still references s
8. crash
Nix 2.3 did not have a problem with recreating EvalState.
|
|
This fixes a class of crashes and introduces ptr<T> to make the
code robust against this failure mode going forward.
Thanks regnat for the idea of a ref<T> without overhead!
Closes #4895
Closes #4893
Closes #5127
Closes #5113
|
|
Signed-off-by: Pamplemousse <xav.maso@gmail.com>
|
|
|
|
|
|
Use `$(libdir)` while installing .pc files looks like a more generic
solution. For example, it will work for distributions like RHEL or
Fedora where .pc files are installed in `/usr/lib64/pkgconfig`.
|
|
This is a bit more informative than just the hash.
Also, format the diffs a bit nicer.
|
|
Minor maintenance cleaning
|
|
Signed-off-by: Pamplemousse <xav.maso@gmail.com>
|
|
flake-registry should be safe to set to an aribtrary value, since it
is identical to just setting `inputs`.
|
|
|
|
|
|
Enable pthreads for new libraries
|
|
--eval-store and faster closure copying
|
|
Signed-off-by: Pamplemousse <xav.maso@gmail.com>
|
|
Otherwise the lack of pthread causes linking to fail for NetBSD.
|
|
|
|
|
|
Signed-off-by: Pamplemousse <xav.maso@gmail.com>
|
|
|
|
It does not operate on a derivation and does not return a
derivation path. Instead it works at the language level,
where a distinct term "package" is more appropriate to
distinguish the parent object of `meta.position`; an
attribute which doesn't even make it into the derivation.
|
|
Some people want to avoid using registries at all on their system; Instead
of having to add --no-registries to every command, this commit allows to
set use-registries = false in the config. --no-registries is still allowed
everywhere it was allowed previously, but is now deprecated.
Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
|
|
libexpr: Fix read out-of-bound on the heap
|