1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-05 04:01:47 +02:00
Commit graph

11799 commits

Author SHA1 Message Date
Robert Hensing
dccabc8f84
Merge pull request #12294 from DeterminateSystems/fix-thread-pool-error
processGraph(): Don't throw ThreadPoolShutDown if there is an exception
2025-01-20 16:23:32 +01:00
Eelco Dolstra
2cb494f561 nix upgrade-nix: Fix build on mingw 2025-01-20 16:06:55 +01:00
Eelco Dolstra
89e5047e12 Fix libflake build on mingw 2025-01-20 15:50:04 +01:00
Eelco Dolstra
a78f55ef97 GitInputScheme: Fix mingw build
Mingw apparently is less smart about coercing std::filesystem::path into strings.
2025-01-20 15:39:14 +01:00
Eelco Dolstra
263a818bee
Merge pull request #12296 from DeterminateSystems/release-source-early
addMultipleToStore(): Move pathsToCopy
2025-01-20 15:16:59 +01:00
Eelco Dolstra
2669e4ac4f
Add comment
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2025-01-20 14:57:56 +01:00
Eelco Dolstra
c656725a15 mingw: Check for S_ISSOCK 2025-01-20 14:52:23 +01:00
Eelco Dolstra
cc838e8181 addMultipleToStore(): Move pathsToCopy
This allows RemoteStore::addMultipleToStore() to free the Source
objects early (and in particular the associated sinkToSource()
buffers). This should fix #7359. For example, memory consumption of

  nix copy --derivation --to ssh-ng://localhost?remote-store=/tmp/nix --derivation --no-check-sigs \
    /nix/store/4p9xmfgnvclqpii8pxqcwcvl9bxqy2xf-nixos-system-...drv

went from 353 MB to 74 MB.
2025-01-20 14:23:02 +01:00
Eelco Dolstra
a8c69cc907 processGraph(): Don't throw ThreadPoolShutDown if there is an exception
Fixes

  $ nix copy --derivation --to /tmp/nix /nix/store/...
  error: cannot enqueue a work item while the thread pool is shutting down

The ThreadPoolShutDown exception was hiding the reason for the thread
pool shut down, e.g.

  error: cannot add path '/nix/store/03sl46khd8gmjpsad7223m32ma965vy9-fix-static.patch' because it lacks a signature by a trusted key
2025-01-20 13:25:31 +01:00
mergify[bot]
bcb92a5fa0
Merge pull request #12133 from momeemt/#11991-logs_ignore_empty_lines
libmain: fix ignoring empty lines in the print-build-logs option
2025-01-18 13:52:25 +00:00
Eelco Dolstra
f5548c17ed getSourcePath(): Return std::filesystem::path 2025-01-17 13:21:53 +01:00
Eelco Dolstra
9003343b53 Git fetcher: Replace RepoInfo::url by a std::variant
Previously the 'url' field was either a path or a URL, depending on
'isLocal'. This replaces both fields by a std::variant, which is more
type-safe.
2025-01-17 13:21:53 +01:00
Eelco Dolstra
43a170a554
Merge pull request #12277 from DeterminateSystems/warn-relative-git
Warn against the use of relative 'git+file:' flake inputs
2025-01-17 12:49:24 +01:00
Eelco Dolstra
3197c19a31 Add link to tracking issue 2025-01-17 12:34:38 +01:00
Eelco Dolstra
f0271090b2 Drop unused 'settings' argument 2025-01-16 23:47:57 +01:00
Eelco Dolstra
5807b5cda0 Trivial changes from lazy-trees
Rename allowLookup -> useRegistries, rename lockRootPath ->
followsPrefix, drop an unnecessary getFlake() variant.
2025-01-16 23:44:18 +01:00
Eelco Dolstra
17b6557c03
Merge pull request #12275 from andrewhamon/ah/set-priority-nix-env-install
nix-env: add a --priority flag to --install
2025-01-16 22:04:35 +01:00
Andy Hamon
6ea339ce8a
Update src/nix-env/nix-env.cc
Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
2025-01-16 11:53:43 -08:00
Andy Hamon
3716ded8df nix-env: add a --priority flag to --install
nix-env can read priorities from a derivations meta attributes, but this
only works when installing a nix expression.

nix-env can also install bare store paths, however meta attributes are
not readable in that case. This means that a store path can not be
installed with a specific priority.

Some cases where it is advantageous to install a store path: a remote
host following a `nix copy`, or any time you want to save some
evaluation time and happen to already know the store path.

This PR addresses this shortcoming by adding a --priority flag to
nix-env --install.
2025-01-16 11:46:25 -08:00
Eelco Dolstra
12e14956e2 Warn against the use of relative 'git+file:' flake inputs 2025-01-16 17:23:31 +01:00
Eelco Dolstra
2ca0c62a8d Remove some unnecessary quotes around std::filesystem::path 2025-01-16 17:06:59 +01:00
Eelco Dolstra
043df13f72
Merge pull request #10089 from edolstra/relative-flakes
Improve support for relative path inputs
2025-01-16 14:21:27 +01:00
Eelco Dolstra
db46d40b12 Update release note 2025-01-16 13:15:20 +01:00
Eelco Dolstra
8b1fb92a0c flakes.md: Fix indentation that broke the list 2025-01-16 11:31:22 +01:00
Eelco Dolstra
5d03ef9caf PathInputSchema::getAbsPath(): Return std::filesystem::path 2025-01-16 11:26:14 +01:00
Eelco Dolstra
550fe889ee Merge remote-tracking branch 'origin/master' into relative-flakes 2025-01-16 11:05:10 +01:00
John Ericson
0c101679b4
Merge pull request #12261 from NixOS/packaging
Packaging cleanups, add RossComputerGuy as `-llvm` maintainer
2025-01-15 17:25:15 -05:00
John Ericson
e02026adae
Merge pull request #12254 from DeterminateSystems/fix-relative-path-on-cli
Fix relative 'path:' flakerefs in the CLI
2025-01-15 15:19:56 -05:00
mergify[bot]
c45dfeeef3
Merge pull request #12220 from DeterminateSystems/allow-dirty-locks
Add setting 'allow-dirty-locks'
2025-01-15 20:18:28 +00:00
mergify[bot]
9c239d4353
Merge pull request #12107 from bryango/feature
fetchers/git: make relative path absolute for local repo
2025-01-15 19:55:12 +00:00
Robert Hensing
7ad02b62e0 refactor: Remove redundant parameters 2025-01-15 20:01:00 +01:00
Robert Hensing
cab347b4eb refactor: Move ld=gold rule to mesonBuildLayer 2025-01-15 20:01:00 +01:00
Robert Hensing
61467b72af
Merge pull request #12229 from RossComputerGuy/feat/llvm
Add LLVM to Flake
2025-01-15 19:35:19 +01:00
Eelco Dolstra
ff9d886f3c Use isAbsolute() 2025-01-14 17:42:26 +01:00
Eelco Dolstra
ff8e2fe84e Fix relative 'path:' flakerefs in the CLI
And handle relative 'git+file:' flakerefs while we're at it (these
crashed with an assertion failure).

Fixes #12248.
2025-01-14 17:30:13 +01:00
Brian McKenna
0be55f869b windows: create files if they don't exist, and with write permission 2025-01-14 16:46:31 +11:00
Brian McKenna
3bd7fa3bb4 local-store: fix infinite loop on Windows
Also switch to std::filesystem.
2025-01-14 13:23:29 +11:00
Brian McKenna
b644e5750e Remove broken stack size logic from Windows
The API only changes the stack size once there's already a stack
overflow exception. Pretty useless.
2025-01-14 13:07:23 +11:00
Eelco Dolstra
cd0127f957 Merge remote-tracking branch 'origin/master' into relative-flakes 2025-01-13 14:13:56 +01:00
Eelco Dolstra
a78f998cc7
Merge pull request #12238 from apoelstra/2025-01--unsorted-gc
gc: replace ordered sets with unordered sets for in-memory caches
2025-01-13 13:33:12 +01:00
Andrew Poelstra
4fac767b52
gc: replace ordered sets with unordered sets for in-memory caches
During garbage collection we cache several things -- a set of known-dead
paths, a set of known-alive paths, and a map of paths to their derivers.
Currently they use STL maps and sets, which are ordered structures that
typically are backed by binary trees. Since we are putting pseudorandom
paths into these and looking them up by exact key, we don't need the
ordering, and we're paying a nontrivial cost per insertion.

The existing maps require O(n log n) memory and have O(log n) insertion
and lookup time.

We could instead use unordered maps, which are typically backed by
hashmaps. These require O(n) memory and have O(1) insertion and lookup
time.

On my system this appears to result in a dramatic speedup -- prior to
this patch I was able to delete 400k paths out of 9.5 million over the
course of 34.5 hours. After this patch the same result took 89 minutes.

This result should NOT be taken at face value because the two runs
aren't really comparable; in particular the first started when I had 9.5
million store paths and the seconcd started with 7.8 million, so we are
deleting a different set of paths starting from a much cleaner
filesystem. But I do think it's indicative.

Related: https://github.com/NixOS/nix/issues/9581
2025-01-12 20:23:36 +00:00
Dominique Martinet
afac093b34 libutil: thread-pool: ensure threads finished on error
This fixes segfaults with nix copy when there was an error processing
addMultipleToStore.

Running with ASAN/TSAN pointed at an use-after-free with threads from
the pool accessing the graph declared in processGraph after the function
was exiting and destructing the variables.

It turns out that if there is an error before pool.process() is called,
for example while we are still enqueuing tasks, then pool.process()
isn't called and threads are still left to run.

By creating the pool last we ensure that it is stopped first before
running other destructors even if an exception happens early.

[ lix porting note: nix does not name threads so the patch has been
adapted to not pass thread name ]

Link: https://git.lix.systems/lix-project/lix/issues/618
Link: https://gerrit.lix.systems/c/lix/+/2355
2025-01-12 15:11:13 +09:00
mergify[bot]
84f116e3cf
Merge pull request #12167 from RossComputerGuy/fix/unsupported-type-docker
nix flake: clarify error message when file is an unknown type
2025-01-11 20:44:06 +00:00
Tristan Ross
47cf93ba80
Add LLVM to Flake 2025-01-10 18:08:27 -08:00
Leandro Reina
b08b7bee4e Merge remote-tracking branch 'upstream/master' into lfs 2025-01-10 18:33:03 +01:00
Leandro Reina
2a2518b408 LFS code review 2025-01-10 18:32:09 +01:00
Eelco Dolstra
e161393299 Add setting 'allow-dirty-locks'
This allows writing lock files with dirty inputs, so long as they have
a NAR hash. (Currently they always have a NAR hash, but with lazy
trees that may not always be the case.)

Generally dirty locks are bad for reproducibility (we can detect if
the dirty input has changed, but we have no way to fetch it except
substitution). Hence we don't allow them by default.

Fixes #11181.
2025-01-10 17:55:30 +01:00
Tristan Ross
22adffec34
nix flake: clarify error message when file is an unknown type 2025-01-10 08:07:51 -08:00
Leandro Reina
4c42b1c7cb Add ability to POST to FileTransfer
Plus, switched CURLOPT_PROGRESSFUNCTION to CURLOPT_XFERINFOFUNCTION since docs say it's deprecated
2025-01-10 16:11:44 +01:00
Bryan Lai
96bd9bad2f fetchers/git: make path absolute for local repo 2025-01-10 11:37:29 +08:00