Commit graph

74 commits

Author SHA1 Message Date
Tristan Ross
4e80e1ad4a feat: nix_expr::eval_state::require_list functions
(cherry picked from commit 8498ebe3dddb34b274d83895b9bfecfb36ef6ab7)
2025-10-04 02:31:17 +02:00
Robert Hensing
f7d4499ab2 fix: Use c_char where appropriate
This builds on the previous commit to make it compatible with the
currently locked build configuration.

(cherry picked from commit bd1edec2fa5251263c768c3e2b312eb4f21d2bb4)
2025-10-04 02:31:17 +02:00
Tristan Ross
c924fed81b fix: rust types
(cherry picked from commit 925a0abd694f6409b6d54b6cad3a61fc916215d3)
2025-10-04 02:31:16 +02:00
Robert Hensing
3b7a14f62b feat: EvalState.require_bool
(cherry picked from commit e0d451f22cedae383fa2f18809f3494e674371b4)
2025-10-04 02:31:16 +02:00
Robert Hensing
8f7d3d5385 maint: Add EvalStateBuilder.flakes(settings)
(cherry picked from commit ee55ef51a60abc692fdef69614c9a8ccfa9358e0)
2025-10-04 02:31:16 +02:00
Robert Hensing
2cab738e58 feat: EvalStateBuilder
This supports the more "advanced" `nix_eval_state_builder`, which
has more methods that we'll want to use.

(cherry picked from commit a96047000df6b7022d166a8c35bb6e3075e5eddb)
2025-10-04 02:31:16 +02:00
Robert Hensing
2508facd82 feat: Improve EvalState::require_attrs_select error message
(cherry picked from commit 220b6f4123966d818064f4114477ce8676214b90)
2025-10-04 02:31:16 +02:00
Robert Hensing
cbce27eb64 feat: Support Store::open from environment, not just auto
Note that `"auto"` holds a strange middle ground, reading
part of the general environment, but not all of it. It
ignores `NIX_REMOTE` and the `store` option.

(cherry picked from commit 7ba92a3793c2fe11938e802e6b61edee042b193a)
2025-10-04 02:31:16 +02:00
Robert Hensing
122ee75ce3 fix: Darwin compat
(cherry picked from commit 711d95877a039bcd5b162604a22d1c051b59a49d)
2025-10-04 02:31:16 +02:00
Robert Hensing
d19dd45bbf fix: Mark all pointer manipulation as unsafe
See b43455fdd0468f067741a79a7031ba2fa907f0eb for rationale

(cherry picked from commit b9996c6ddd3973cd419930210bf11a4d1bc6350b)
2025-10-04 02:31:16 +02:00
Robert Hensing
6193575d1e fix: Require non-null pointer in StorePath
Fixes https://github.com/nixops4/nixops4/issues/65,
possible undefined behavior.

This doesn't make the code nice wrt *const/*mut distinction, but
since we're not mutating it, this should be fine.

(cherry picked from commit 75d448aad923a5f835f0562400e223df43103ea4)
2025-10-04 02:31:16 +02:00
Robert Hensing
28deb20a2b feat: EvalState.new_value_attrs
(cherry picked from commit 5b3f4d97f968b518c901c2de3759640b91fd37c2)
2025-10-04 02:31:16 +02:00
Robert Hensing
dc01d3731f feat: Add EvalState::call_multi
(cherry picked from commit e1866f0c61011ffb57b607abe871340aca294f19)
2025-10-04 02:31:16 +02:00
Robert Hensing
8a437b71a0 test: Fix flaky eval_state_value_attrs_names_example
(cherry picked from commit 4583b422038661de02c6fe672559d2519f38dfce)
2025-10-04 02:31:16 +02:00
Robert Hensing
76b92a577d feat: Add EvalState.require_attrs_names (sorted)
(cherry picked from commit 0b1aca5a1ee7136e76a201477643cfc3acbf2676)
2025-10-04 02:31:16 +02:00
Robert Hensing
237a2281c1 refact: require_attrs_names -> require_attrs_names_unsorted
(cherry picked from commit 13a3adf4f17351bc6ba3d91567a642ec1ae704f6)
2025-10-04 02:31:16 +02:00
Robert Hensing
1e3cce7742 refact: Resolve some clippy warnings
(cherry picked from commit dc4bfaa993eb2d712d53f70551db9ac34b0cda08)
2025-10-04 02:31:16 +02:00
Robert Hensing
12d3d62108 fix: Deduplicate stores to work around nix#11979
Fixes tests hanging. Before this commit:

    nix build .#packages.x86_64-linux.nixops4-eval-release

See https://github.com/NixOS/nix/issues/11979

(cherry picked from commit 03af71f92488f2ee683565318f24afd3e3c001df)
2025-10-04 02:31:16 +02:00
Robert Hensing
1c0e2cd72f maint: Unset substituters in nix-expr tests
Runs offline, and would only slow things down.

(cherry picked from commit ea3ef1c59a1fe8e380302acc1885877a1ac8e0b6)
2025-10-04 02:31:16 +02:00
Robert Hensing
77c9be2cbf maint: Fix nix-expr tests by unsetting build hook
(cherry picked from commit 52b6cd6b7867dafe0906184e540c5195ba776ae9)
2025-10-04 02:31:16 +02:00
Robert Hensing
4eade817b6 refact: Remove gc_registering_current_thread
Closes #31

A guard object is more capable, as it can be used in various
control flow and ownership schemes, including async code, but not
that it is not Send.

(cherry picked from commit f9aa5eab2561834c64ef9fe01979a91aee35848f)
2025-10-04 02:31:16 +02:00
Robert Hensing
f177507f88 feat: Add ThreadRegistrationGuard in nix-expr
(cherry picked from commit f287122e354535c2ee2f16c930038b19142f522a)
2025-10-04 02:31:16 +02:00
Robert Hensing
5355b663c0 refact: Inline new_value_function(), a test helper
(cherry picked from commit a354accb952558d30a780eb57fd3161be139db7d)
2025-10-04 02:31:16 +02:00
Robert Hensing
b5f9764c4c refact: Remove some lazy_static test globals
(cherry picked from commit 4f0ce4960ec468679993cc9fd70820f6d0532c09)
2025-10-04 02:31:16 +02:00
Robert Hensing
ee6c04a941 feat: Reintroduce EvalState::new_value_thunk
(cherry picked from commit a2c49a524cf76ca2c9a6759d271d58076756ac09)
2025-10-04 02:31:16 +02:00
Robert Hensing
da9bb4c885 cleanup: Remove EvalState::new_value_function
It provides not so great values for some of the parameters, and we
don't really need its convenience.

(cherry picked from commit 52b7b58eb7fa96a265883cbf92e3a635735fe360)
2025-10-04 02:31:16 +02:00
Robert Hensing
312c86b811 feat: PrimOp type
(cherry picked from commit 67616c4a55b9d98d716384ffc07d3b3880dd76e4)
2025-10-04 02:31:16 +02:00
Robert Hensing
5c43a28cf0 Basic primops support
(cherry picked from commit e1be238ad440ad6f73a4f15cb752439b240a0333)
2025-10-04 02:31:16 +02:00
Robert Hensing
01c9d0b2d3 feat: EvalState.weak_ref()
(cherry picked from commit d7a72c82ebfbfbb1b58fa15044b63648b2109260)
2025-10-04 02:31:16 +02:00
Robert Hensing
3d5c64c4a6 feat: impl Clone for EvalState
(cherry picked from commit f22d9ba23564107480f627a5901a52f044034c98)
2025-10-04 02:31:16 +02:00
Taeer Bar-Yam
c235b32868 check_call_opt_key: [] -> ()
(cherry picked from commit 76966c24dcf6413a4ebdfe0ddba00e3d1d7e5fff)
2025-10-04 02:31:16 +02:00
Taeer Bar-Yam
cc2e640e7f check_call!() macro to use () not []
(cherry picked from commit 66d255af0a5d331782dc24c89bb45d3434f3c109)
2025-10-04 02:31:16 +02:00
Robert Hensing
da26721bea fix: Do not duplicate ctx expr in check_call_opt_key!
(cherry picked from commit 86ddc63a573cd08ec19008448ec2fca33a84159e)
2025-10-04 02:31:16 +02:00
Robert Hensing
35803f4a30 refactor: Remove check_one_call
(cherry picked from commit 065f880e52c6d6cb44e4b857272176ebe2464eea)
2025-10-04 02:31:16 +02:00
Robert Hensing
bf6dbd3f1e fix: Do not duplicate ctx expr in check_call!
(cherry picked from commit 9b6f0c1e66d80ec2e92ce079152edb22c05e9b1e)
2025-10-04 02:31:16 +02:00
Robert Hensing
a6dbf17778 fix: Require mutable Context, as it should be
This spreads out transitively to many places and requires that
we use `check_call!` instead of `check_one_call` in a number of
places.

(cherry picked from commit 6bc31dcf206518a7be7f0ac6e773d5dfe25531ea)
2025-10-04 02:31:16 +02:00
Robert Hensing
93a2db836a doc: Clarify why we test call and apply and how they relate
(cherry picked from commit 17c7a8d30d1c4d99eeb84a6203ae33d2ba781edb)
2025-10-04 02:31:16 +02:00
Robert Hensing
b04d429f19 test: Make sure require_* functions force thunks
(cherry picked from commit 69b661db22e4b16fb08d322f5fede480438e2b71)
2025-10-04 02:31:16 +02:00
Robert Hensing
878b793161 test: eval_state_require_int_forces_thunk
(cherry picked from commit 90de70936a726a8ae1aaf3e9aacb9a83b8d30b72)
2025-10-04 02:31:16 +02:00
Robert Hensing
c16a9b0595 refact: Make require_attrs_select* error handling regular
(cherry picked from commit de6c6cbd462202405bc787fed02dee249cf16973)
2025-10-04 02:31:16 +02:00
Robert Hensing
61efb9b79f refact: Add Context::check_one_call(f)
This makes it easier to stick to a regular pattern and not forget
to check the context afterwards.

(cherry picked from commit 966ef3769a23075f5d660a48cf5a7307df925dbf)
2025-10-04 02:31:16 +02:00
Robert Hensing
c775792b63 fix: Do not unwrap() in require_int
(cherry picked from commit c7d2e3e02a977424634ee12015265906e18039a0)
2025-10-04 02:31:16 +02:00
Robert Hensing
22ffd20c53 refact: Use Option instead of custom ValueTypeOrThunk
This loses the custom name for "thunk", but checking thunkness is
a niche use case that I don't think we should spend much code on.

(cherry picked from commit 7bdff525c13234ce6a32ea9346292d948b0840c1)
2025-10-04 02:31:16 +02:00
Philipp
19361acb12 rename value_type_forced to value_type
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
(cherry picked from commit 3bf206a38e20109bbee9cd781e66bcd895ed95ce)
2025-10-04 02:31:16 +02:00
Philipp Zander
627b31d6c5 refact: adjust ValueType use sites
(cherry picked from commit 9d9f7d59c6df3db26f331e63c9b210f8fae19061)
2025-10-04 02:31:16 +02:00
Philipp Zander
673f80e243 refact: remove Thunk from ValueType and introduce ValueTypeOrThunk to address #30
(cherry picked from commit 97c05175b633b364686790549b11e43cfb2f1d2c)
2025-10-04 02:31:16 +02:00
Philipp Zander
d89fb1803f doc: EvalState::eval_from_string
(cherry picked from commit b1de918abddc8166973c956ec77d597dae92f928)
2025-10-04 02:31:16 +02:00
Philipp Zander
fe4d62d083 test nix_store_open's params argument
(cherry picked from commit 2cebb64daacdc612e7ff916dc32b0fe5ed89dbfc)
2025-10-04 02:31:16 +02:00
Philipp Zander
ec28176852 adjust all tests to nix_store_open's new signature
(cherry picked from commit da9bf071709bc9e48a0a02531e78b2a71a9b4eba)
2025-10-04 02:31:16 +02:00
Robert Hensing
37da6411d0 maint: Use /// for doc comments
(cherry picked from commit 4a390197f71653dda99696ed5c9cbca8c6a95a4b)
2025-10-04 02:31:16 +02:00