1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-12-09 02:21:02 +01:00
Commit graph

12458 commits

Author SHA1 Message Date
Graham Christensen
c6f87378db
Update src/libmain/plugin.cc
Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
2025-06-11 10:02:27 -04:00
Graham Christensen
ac6318c9c5
Merge pull request #97 from DeterminateSystems/fix-duplicate-builtins
Don't register extra primops twice
2025-06-11 13:10:23 +00:00
Eelco Dolstra
7f6efe93e4 Don't register extra primops twice
This was the result of a bad merge.
2025-06-11 13:06:14 +02:00
Eelco Dolstra
86785fd9d1 fetchToStore(): Fix caching
This was broken because MountedSourceAccessor did not return a
fingerprint. Previously fingerprints were global to an accessor, but
with a MountedSourceAccessor the fingerprint can be different for each
mount point.
2025-06-06 22:09:35 +02:00
Eelco Dolstra
f8ef941c04 fetchToStore(): Cache in dry-run mode 2025-06-06 21:50:55 +02:00
Eelco Dolstra
74af43ee91
Remove superfluous semicolon
Co-authored-by: Cole Helbling <cole.e.helbling@outlook.com>
2025-06-06 20:03:33 +02:00
Luc Perkins
a989a23d1a
Fix some instances of 'will' 2025-06-06 10:51:58 -07:00
Eelco Dolstra
e18b1637dc Fix display of paths in substituted source trees
These got displayed as e.g.

  «github:NixOS/nixpkgs/adaa24fbf46737f3f1b5497bf64bae750f82942e?narHash=sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY%3D»/nix/store/x9wnkly3k1gkq580m90jjn32q9f05q2v-source/pkgs/stdenv/generic/source-stdenv.sh

Now we get

  «github:NixOS/nixpkgs/adaa24fbf46737f3f1b5497bf64bae750f82942e?narHash=sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY%3D»/pkgs/stdenv/generic/source-stdenv.sh
2025-06-06 19:41:12 +02:00
Eelco Dolstra
a69b99ade0 Add ForwardingSourceAccessor 2025-06-06 19:40:57 +02:00
Seth Flynn
fcdffffa37 lockFlake(): Allow registry lookups for overridden inputs
Fixes #13144

(cherry picked from commit d0a2323829)
2025-06-06 08:12:20 +00:00
Cole Helbling
dfa7b2a288
libstore/unix/derivation-builder: error earlier when sandbox path is inaccessible 2025-06-04 12:16:34 -07:00
Cole Helbling
63e9e9df37
fixup: only show "you can rerun" message if the derivation's platform is supported on this machine 2025-06-03 10:53:05 -07:00
Sergei Zimmerman
a2567f6d7a Clear displayPrefix in makeEmptySourceAccessor
Judging by the comment for `makeEmptySourceAccessor` the prefix has
to be empty:

> Return a source accessor that contains only an empty root directory.

Fixes #13295.

(cherry picked from commit fba1bb0c13)
2025-06-03 19:27:15 +02:00
Cole Helbling
242719cffb
--keep-failed with remote builders will keep the failed build directory on that builder 2025-06-02 14:41:29 -07:00
Graham Christensen
f8aabb0749
Merge pull request #79 from DeterminateSystems/path-position-info
Include the source location when warning about inefficient double copies
2025-06-02 18:51:49 +00:00
Graham Christensen
7a450a8ba9
Update src/libexpr/paths.cc 2025-06-02 14:08:42 -04:00
Graham Christensen
8a82624801
Merge pull request #81 from DeterminateSystems/push-twpuyuspwtpz
Replace ε and ∅
2025-06-02 17:32:11 +00:00
Graham Christensen
1500e541f2 diff-closures: use removed / added words 2025-06-02 11:21:26 -04:00
Eelco Dolstra
665e76f2e5 deletePath(): Keep going when encountering an undeletable file
This should reduce the impact of #5207.
2025-06-02 17:17:09 +02:00
Graham Christensen
724d552b64 Use words like added / removed 2025-06-02 09:30:18 -04:00
Graham Christensen
039d19159f Replace ∅ with (absent) 2025-06-02 09:29:55 -04:00
Graham Christensen
7d2dbbd3aa Rename ε to "(no version)" 2025-06-02 09:22:55 -04:00
Eelco Dolstra
b16fa06ff1 nix store copy-sigs: Add docs 2025-06-02 12:06:21 +02:00
Eelco Dolstra
0278b9e180 nix store copy-sigs: Use http-connections setting to control parallelism
Previously it used the `ThreadPool` default,
i.e. `std:🧵:hardware_concurrency()`. But copying signatures is
not primarily CPU-bound so it makes more sense to use the
`http-connections` setting (since we're typically copying from/to a
binary cache).
2025-06-02 11:44:16 +02:00
Eelco Dolstra
3e45b40d66 Add position info to path values
(Actually, this adds a position field to *all* values.)

This allows improving the "inefficient double copy" warning by showing
where the source path came from in the source, e.g.

  warning: Performing inefficient double copy of path '/home/eelco/Dev/patchelf/' to the store at /home/eelco/Dev/patchelf/flake.nix:30:17. This can typically be avoided by rewriting an attribute like `src = ./.` to `src = builtins.path { path = ./.; name = "source"; }`.
2025-05-30 17:31:34 +02:00
Eelco Dolstra
8ca4d2ef08 fromStructuredAttrs(): Don't crash if exportReferencesGraph is a string
Fixes

  error: [json.exception.type_error.302] type must be array, but is string

and other crashes.

Fixes #13254.

(cherry picked from commit d877b0c0cc)
2025-05-25 05:55:27 +00:00
Eelco Dolstra
acc3cd460d Don't use 'callback' object that we may have moved out of
(cherry picked from commit fa6e10ea6a)
2025-05-25 05:55:27 +00:00
Graham Christensen
4e08d4a917
Merge pull request #72 from DeterminateSystems/gustavderdrache/system-builderror
Make platform checks throw BuildError like other failures
2025-05-24 02:14:21 +00:00
gustavderdrache
562ed80bb7
Update src/libstore/unix/build/derivation-builder.cc
Co-authored-by: Cole Helbling <cole.e.helbling@outlook.com>
2025-05-23 18:58:37 -04:00
Eelco Dolstra
af7bfe7827 fromStructuredAttrs(): Don't crash if exportReferencesGraph is a string
Fixes

  error: [json.exception.type_error.302] type must be array, but is string

and other crashes.

Fixes #13254.
2025-05-24 00:46:37 +02:00
Eelco Dolstra
09d46ad93a Don't use 'callback' object that we may have moved out of 2025-05-24 00:46:37 +02:00
gustavderdrache
61c3efb4f4 Make platform checks throw BuildError like other failures 2025-05-23 17:40:02 -04:00
gustavderdrache
0b66fd3c34 Update src/libexpr/include/nix/expr/eval-settings.hh
Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
2025-05-22 17:30:14 -04:00
gustavderdrache
8825cd56b5 Log warnings on IFD with new option 2025-05-22 17:30:14 -04:00
Eelco Dolstra
1246506152 Tagging release 2.29.0
-----BEGIN PGP SIGNATURE-----
 
 iQFHBAABCAAxFiEEtUHVUwEnDgvPFcpdgXC0cm1xmN4FAmgvHQQTHGVkb2xzdHJh
 QGdtYWlsLmNvbQAKCRCBcLRybXGY3qVRCACZ22QWsHqvn6EEROSoSLbAH9/LqLOQ
 jvDzVQ3jk+2LznLt+grfaiTP69nL4SmzMjjeRQxGCnKnDNfHyPkxv5ddRJjX0SCA
 A89m6Fctas5frtbhmKDnLBx3lwKEFS0sq2qEp4uYUb9hU1gaByaLUbGcUUXQ2P3c
 fD1lm0uK/Z9IXY4h3/pyfp7tacYynuO+5E8F1C7T81hc/fA8EUBj6Yof1Ykx/Hg5
 Qj+iQ6y1i94XU4Y3SJYy8mjmILdsYNj+ICQ0IYQuWEARTiGZqLfo2uGtSroR5hLy
 PqYpqp9whQOpb7PyoQ28A0Gzc43O/MgpHnZO+KjV07SFXeqDnoWdltse
 =GWRg
 -----END PGP SIGNATURE-----

Merge tag '2.29.0' into sync-2.29

Tagging release 2.29.0
2025-05-22 14:53:09 +02:00
Jörg Thalheim
90eb2f759c libutil-tests/json-utils: fix -Werror=sign-compare error
I am on a newer different nixpkgs branch, so I am getting this error

(cherry picked from commit 1290b7e53d)
2025-05-19 14:16:43 +00:00
Eelco Dolstra
5d7ebaed24 Merge remote-tracking branch 'origin/2.29-maintenance' into sync-2.29 2025-05-19 16:12:55 +02:00
Sergei Zimmerman
29d98da636 libstore: Depend on boost_regex explicitly
(cherry picked from commit 18a5589f9a)
2025-05-18 19:46:17 +00:00
Sergei Zimmerman
b33fd1e4fb libstore: Use boost::regex for GC root discovery
As it turns out using `std::regex` is actually the bottleneck
for root discovery. Just substituting `std::` -> `boost::`
makes root discovery twice as fast (3x if counting only userspace time).

Some rather ad-hoc measurements to motivate the switch:

(On master)

```
nix build github:nixos/nix/1e822bd4149a8bce1da81ee2ad9404986b07914c#nix-cli --out-link result-1e822bd4149a8bce1da81ee2ad9404986b07914c
taskset -c 2,3 hyperfine "result-1e822bd4149a8bce1da81ee2ad9404986b07914c/bin/nix store gc --dry-run --max 0"
Benchmark 1: result-1e822bd4149a8bce1da81ee2ad9404986b07914c/bin/nix store gc --dry-run --max 0
  Time (mean ± σ):     481.6 ms ±   3.9 ms    [User: 336.2 ms, System: 142.0 ms]
  Range (min … max):   474.6 ms … 487.7 ms    10 runs
```

(After this patch)

```
taskset -c 2,3 hyperfine "result/bin/nix store gc --dry-run --max 0"
Benchmark 1: result/bin/nix store gc --dry-run --max 0
  Time (mean ± σ):     254.7 ms ±   9.7 ms    [User: 111.1 ms, System: 141.3 ms]
  Range (min … max):   246.5 ms … 281.3 ms    10 runs
```

`boost::regex` is a drop-in replacement for `std::regex`, but much faster.
Doing a simple before/after comparison doesn't surface any change in behavior:

```
result/bin/nix store gc --dry-run -vvvvv --max 0 |& grep "got additional" | wc -l
result-1e822bd4149a8bce1da81ee2ad9404986b07914c/bin/nix store gc --dry-run -vvvvv --max 0 |& grep "got additional" | wc -l
```

(cherry picked from commit 3a1301cd6d)
2025-05-18 19:46:16 +00:00
Eelco Dolstra
136cc106e7 Restore the hash mismatch activity 2025-05-18 13:10:08 +02:00
Eelco Dolstra
f50117ba4c Revert storeFS to use makeFSSourceAccessor()
Need to investigate why store->getFSAccessor() breaks a test.
2025-05-18 10:01:57 +02:00
Eelco Dolstra
c20642ac7b Merge remote-tracking branch 'origin/2.29-maintenance' into detsys-main 2025-05-16 12:48:44 +02:00
Jörg Thalheim
7f488dc7d3 rename StoreDirConfigItself to StoreDirConfigBase
context: https://github.com/NixOS/nix/pull/13154#discussion_r2081904653
(cherry picked from commit 2dd2142754)
2025-05-15 10:04:22 +00:00
John Ericson
f70796309d
Merge pull request #13193 from xokdvium/lru-cache
libutil: Less unnecessary copying in `LRUCache`
2025-05-14 19:29:53 -04:00
John Ericson
d7481b4b63 Factor out resolveStoreConfig
Leverage #10766 to show how we can now resolve a store configuration
without actually opening the store for that resolved configuration.

Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2025-05-14 18:30:25 -04:00
Sergei Zimmerman
d955b401a7
libutil: Sprinkle some noexcept on LRUCache::{size,clear}
The underlying containers are already noexcept to destroy and dtors are
noexcept in general.
2025-05-14 22:14:46 +00:00
Sergei Zimmerman
2f2e04142e
libutil: Simplify LRUCache::get by using list splice
Splicing the list element to the back can be done in
a much simpler and concise way without the need for
erasing and re-inserting the element. Doing it this
way is equivalent to just moving node pointers around,
whereas inserting/erasing allocates/deallocates new nodes.
2025-05-14 22:05:53 +00:00
Sergei Zimmerman
cd61e922ff
libutil: Use heterogeneous lookup for LRUCache
This gets rid of some ugly std::string_view -> std::string
conversions, which are an eye-sore and lead to extra copying.
2025-05-14 21:42:35 +00:00
Sergei Zimmerman
90d70aa4c9
libutil: Format lru-cache.hh
Rip off the band-aid for further refactors. The diff is
very small, so it makes to get it out of the way first.
2025-05-14 21:23:13 +00:00
John Ericson
d972f9e2e2 Split out store-open.hh and store-registration.hh
The existing header is a bit too big. Now the following use-cases are
separated, and get their own headers:

- Using or implementing an arbitrary store: remaining `store-api.hh`

  This is closer to just being about the `Store` (and `StoreConfig`)
  classes, as one would expect.

- Opening a store from a textual description: `store-open.hh`

  Opening an aribtrary store implementation like this requires some sort
  of store registration mechanism to exists, but the caller doesn't need
  to know how it works. This just exposes the functions which use such a
  mechanism, without exposing the mechanism itself

- Registering a store implementation: `store-registration.hh`

  This requires understanding how the mechanism actually works, and the
  mechanism in question involves templated machinery in headers we
  rather not expose to things that don't need it, as it would slow down
  compilation for no reason.
2025-05-14 16:07:57 -04:00