Commit graph

600 commits

Author SHA1 Message Date
puck 577ef6e478 Use our own Thread struct instead of std::thread
We'd highly prefer using std::thread here; but this won't let us configure the stack
size. macOS uses 512KiB size stacks for non-main threads, and musl defaults to 128k.
While Nix configures a 64MiB size for the main thread, this doesn't propagate to the
threads we launch here. It turns out, running the evaluator under an anemic stack of
0.5MiB has it overflow way too quickly. Hence, we have our own custom Thread struct.
2024-06-09 13:20:20 +00:00
jade ed7a959ae1 update lix pin to actually work 2024-05-30 12:50:13 -07:00
jade d05f8e86a9 Merge pull request 'lix: deal with util.hh removal' (#7) from jade/util-hh-removal into main
Reviewed-on: #7
2024-05-30 02:33:13 +00:00
jade b67c46d320 lix: deal with util.hh removal 2024-05-29 19:17:54 -07:00
jade 30cf61fd26 fix: don't crash on startup on macOS
This is caused, through several layers of absurdity, by runtime type
information of Nix things being invisible due to -fvisibility=hidden
inside n-e-j.

We don't have any idea why n-e-j has -fvisibility=hidden, since blame
says it's from the initial commit. It is plausible that it was some
ill-advised optimization but it's not sound.

The crash is caused by dynamic_cast<RootArgs *>(MyArgs *) failing, which
is in turn caused by the RTTI being invisible.

See: https://www.qt.io/blog/quality-assurance/one-way-dynamic_cast-across-library-boundaries-can-fail-and-how-to-fix-it
Fixes: #2
2024-05-27 18:23:13 -06:00
jade 13524829d1 Merge pull request 'nixexpr -> lixexpr' (#5) from jade/lixexpr into main
Reviewed-on: #5
2024-05-23 23:24:26 +00:00
jade a94f80e512 nixexpr -> lixexpr 2024-05-23 16:23:45 -07:00
raito 02bcbe0c0e Merge pull request 'fix crash in worker when opening the store' (#4) from open-store-crash into main
Reviewed-on: #4
2024-05-11 15:49:35 +00:00
Jörg Thalheim 52e96bd421 fix crash in worker when opening the store 2024-05-11 17:41:27 +02:00
Linus Heckemann 2dbcbe4179 flake: actually use lix 2024-05-09 13:12:12 +02:00
eldritch horrors 793841a9b7 fix drv.cc invalid output throw
EvalState::error does not return an exception instance in lix, but an
exception *builder*. throwing this thing will not trigger any catches,
which then causes the worker process to die without reporting an error
to the collector. this confuses the collector and causes *it* to exit,
effectively breaking nix-eval-jobs for anything that has broken attrs.
2024-04-18 18:05:33 +02:00
Linus Heckemann c3d8ca19b3 EvalError needs to reference an eval state now 2024-04-15 19:35:05 +02:00
Linus Heckemann c1ee00bf7c ProcessOptions: remove allowVfork field
This was removed in Lix 1f8b85786eed623319e5c71a5341b15e3006f870
2024-04-15 19:30:56 +02:00
Linus Heckemann 14e4308346 parseCmdline: no allowShebang arg
This arg was only introduced in Nix 2.19 (commit ffd414eb756dcb3c64348551d5dbaf674c0d4900)
2024-04-15 19:30:32 +02:00
Linus Heckemann a2bd945259 hasPrefix -> starts_with
hasPrefix was removed in lix commit 61e21b25576f7f3491f6a837bf59d8b44c6897a0
2024-04-15 19:28:36 +02:00
Linus Heckemann 733f3051b1 Fix include paths for Nix headers
While the previous style seems more sensible to me (the header names
are quite generic), the pkg-config definitions both from upstream Nix
and from Lix specify -I${includedir}/nix in CFLAGS rather than
-I${includedir}. This may be worth changing, but for now I want
nix-eval-jobs to work and this does what I want.
2024-04-15 19:20:21 +02:00
Jörg Thalheim 6b03a93296
Merge pull request #292 from nix-community/renovate/lock-file-maintenance
Lock file maintenance
2024-01-14 15:34:46 +01:00
renovate[bot] 69371f7bae Update cachix/install-nix-action action to v25 2024-01-12 17:34:52 +00:00
renovate[bot] 64104a3c55 Lock file maintenance 2023-12-25 01:06:16 +00:00
renovate[bot] 1a9b928a5f
Lock file maintenance 2023-12-25 01:02:06 +00:00
Jörg Thalheim 3c6e1234af flake.nix: return to nixpkgs-unstable 2023-12-17 12:15:15 +00:00
Jörg Thalheim 8ef37192bd README: add check-cache-status and nixpkgs evaluation examples 2023-12-17 12:15:15 +00:00
Jörg Thalheim 280de12085 README: update json and help output 2023-12-17 12:15:15 +00:00
Jörg Thalheim e3d71921c3 buffered-io: also check for interrupts in readline
This allows us to more reliable interrupt nix-eval-jobs
2023-12-17 12:15:15 +00:00
Jörg Thalheim 4a1123c42d
Merge pull request #289 from nix-community/joerg-ci
fix exit status reporting when evaluation fails
2023-12-16 17:15:45 +01:00
Jörg Thalheim b73f7ceff4 classify SIGSEV/SIGBUS as infinite recursion errors 2023-12-16 11:58:01 +01:00
Jörg Thalheim 093b8ce5cc apply treefmt 2023-12-16 11:44:08 +01:00
Jörg Thalheim b4f7eb3c77 fix ci for infinite recursion case 2023-12-16 11:40:34 +01:00
Jörg Thalheim 4d97e5a386 improve infinite recursion errors 2023-12-16 10:52:23 +01:00
Jörg Thalheim 83df9d4e24 fix exit status reporting when evaluation fails 2023-12-16 09:48:37 +01:00
Jörg Thalheim 89927c434c make sure we also define HAVE_STRUCT_DIRENT_D_TYPE outside of autotools 2023-12-16 09:24:42 +01:00
Jörg Thalheim 8daea338f3 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/0838486e9183ce39398f01b221766e68b50f405c' (2023-12-10)
  → 'github:NixOS/nixpkgs/203ecda835bcf69633df7183459283543dd4a874' (2023-12-15)
• Updated input 'treefmt-nix':
    'github:numtide/treefmt-nix/afdd5e48a0869b389027307652a658051c0d2f96' (2023-12-10)
  → 'github:numtide/treefmt-nix/d06b70e5163a903f19009c3f97770014787a080f' (2023-12-13)
2023-12-16 09:20:53 +01:00
Jörg Thalheim 4b6d34214d add include-what-you-use to devshell 2023-12-16 09:20:53 +01:00
Jörg Thalheim 1f4bbded61 optimize imports with "include-what-you-use" 2023-12-16 09:20:53 +01:00
renovate[bot] 843dc25cfe chore(deps): lock file maintenance 2023-12-11 00:21:12 +00:00
Jörg Thalheim 521380076d release proc.pid properly before calling waitpid() 2023-12-10 20:36:24 +00:00
Jörg Thalheim e1ad62cef1 include orignal json in worker error message 2023-12-10 20:36:24 +00:00
Jörg Thalheim d48cfadb3d fix catching eval errors on macOS 2023-12-10 20:36:24 +00:00
Jörg Thalheim c00fcbba8d drop obsolete compiler warning suppression 2023-12-10 20:36:24 +00:00
Jörg Thalheim b6ec7d2ecf make MyArgs non-copyable
this seems to have weird effects
2023-12-10 20:36:24 +00:00
Jörg Thalheim b24c03e2de simplify collector function
looks like the lambda doesn't buy us anything here.
2023-12-10 20:36:24 +00:00
Jörg Thalheim 97dd8023e8
Merge pull request #283 from nix-community/joerg-ci
apply treefmt
2023-12-10 17:03:00 +01:00
Jörg Thalheim b267eb917d apply treefmt 2023-12-10 17:00:31 +01:00
Jörg Thalheim f970ec3524 add test for evaluation errors 2023-12-10 16:59:14 +01:00
Jörg Thalheim e7c30b306d don't fail nix-eval-jobs on eval errors
This error handling was copied by accident in 5c764d4a67 (diff-a79ded172fd76747492a417a39848b6c25c14238e65971e6a05fe81706d5048fR622)
2023-12-10 15:57:18 +00:00
Jörg Thalheim 36a5368dfc include missing filesystem header 2023-12-10 14:52:52 +00:00
Jörg Thalheim 3be8c48f54 fix format 2023-12-10 14:52:52 +00:00
Jörg Thalheim a03f039a56 split nix-eval-jobs further into smaller files 2023-12-10 14:52:52 +00:00
Jörg Thalheim 880c66a7d1 move drvs ot its own class 2023-12-10 15:07:38 +01:00
Jörg Thalheim db3099bc8f move argument parsing to new file 2023-12-10 14:22:32 +01:00