aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2024-03-09Merge pull request #9926 from 9999years/fix-cycle-detection-in-nix-repleldritch horrors
Fix cycle detection in `nix repl` (cherry picked from commit e190c20c3394fd1a5cd9be1afc3f30ab32dcd36b) Change-Id: Ie385e781b9f0b7171ca653bcd53a990bb41f9e4b
2024-03-09Minor formatting tweakseldritch horrors
(cherry picked from commit 365b831e6f290c733da6879dae871dada343a1eb) Change-Id: Ife3d269d2f87d6e3fe8a348995019dfc08ac75eb
2024-03-09Update src/libexpr/eval.cceldritch horrors
Co-authored-by: John Ericson <git@JohnEricson.me> (cherry picked from commit 80b84710b8c676620ed1e8bf8ff3bb1d5bc19b80) Change-Id: I128555f1ae13cf0e202f565ee439f698efe12431
2024-03-09don't repeatedly look up ast internal symbolseldritch horrors
these symbols are used a *lot*, so it makes sense to cache them. this mostly increases clarity of the code (however clear one may wish to call the parser desugaring here), but it also provides a small performance benefit. (cherry picked from commit 09a1128d9e2ff0ae6176784938047350d6f8a782) Change-Id: I73d9f66be4555168e048cb2d542277251580c2d1
2024-03-09decouple parser and EvalStateeldritch horrors
there's no reason the parser itself should be doing semantic analysis like bindVars. split this bit apart (retaining the previous name in EvalState) and have the parser really do *only* parsing, decoupled from EvalState. (cherry picked from commit b596cc9e7960b9256bcd557334d81e9d555be5a2) Change-Id: I481a7623afc783e9d28a6eb4627552cf8a780986
2024-03-09slim down parser.yeldritch horrors
most EvalState and Expr members defined here could be elsewhere, where they'd be easier to maintain (not being embedded in a file with arcane syntax) and *somewhat* more faithfully placed according to the path of the file they're defined in. (cherry picked from commit e1aa585964c3d864ebff0030584f3349a539d615) Change-Id: Ibc704567462bb40f37cda05d8fadd465519db5f5
2024-03-09rename ParserState::{makeCurPos -> at}eldritch horrors
most instances of this being used do not refer to the "current" position, sometimes not even to one reasonably close by. it could also be called `makePos` instead, but `at` seems clear in context. (cherry picked from commit 835a6c7bcfd0b22acc16f31de5fc7bb650d52017) Change-Id: I17cab8a6cc14cac5b64624431957bfcf04140809
2024-03-09move ParseData to own header, rename to ParserStateeldritch horrors
ParserState better describes what this struct really is. the parser really does modify its state (most notably position and symbol tables), so calling it that rather than obliquely "data" (which implies being input only) makes sense. (cherry picked from commit 007605616477f4f0d8a0064c375b1d3cf6188ac5) Change-Id: I92feaec796530e1d4d0f7d4fba924229591cea95
2024-03-09make parser utility functions members of ParseDataeldritch horrors
all of them need access to parser state in some way. make them members to allow this without fussing so much. (cherry picked from commit 1b09b80afac27c67157d4b315c237fa7bb9b8d08) Change-Id: I3145c95666a5617b735eff7cb403c54c0fe86347
2024-03-09simplify parse error reportingeldritch horrors
since nix doesn't use the bison `error` terminal anywhere any invocation of yyerror will immediately cause a failure. since we're *already* leaking tons of memory whatever little bit bison allocates internally doesn't much matter any more, and we'll be replacing the parser soon anyway. coincidentally this now also matches the error behavior of URIs when they are disabled or ~/ paths in pure eval mode, duplicate attr detection etc. (cherry picked from commit e8d9de967fe47a7f9324b0022a2ef50df59f419d) Change-Id: I560c50d11dceddc2d7cf9ed2c6c631a309ce574e
2024-03-09remove ParserFormalseldritch horrors
this is a proper subset of Formals anyway, so let's just use those and avoid the extra allocations and moves. (cherry picked from commit f07388bf985c2440413f398cf93d5f5840d1ec8c) Change-Id: I4508c9c9c918cbaaed649dc753eb86f5cafc7ab6
2024-03-09Merge pull request #9754 from 9999years/print-value-when-coercion-failseldritch horrors
Print the value in `error: cannot coerce` messages (cherry picked from commit 5b7bfd2d6b89d7dd5f54c1ca6c8072358d31a84e) === test taken from 6e8d5983143ae576e3f4b1d2954a5267f2943a49; it was added previously (and not backported because its pr was a mostly-revert), but it's useful to have around. Change-Id: Icbd14b55e3610ce7b774667bf14b82e6dc717982
2024-03-09Merge pull request #9818 from Ma27/print-value-on-function-call-type-erroreldritch horrors
libexpr: print value of what is attempted to be called as function (cherry picked from commit 50e5d7b883042852538371237e32a66bb22f0485) Change-Id: I7cb6290bd8f244e83bfce3b2eed2a4c8b4f16a83
2024-03-09Merge pull request #9753 from 9999years/print-value-on-type-erroreldritch horrors
Print the value in `value is X while a Y is expected` error (cherry picked from commit 5f72a97092da6af28a7d2b2a50d74e9d34fae7e1) Change-Id: Idb4bc903ae59a0f5b6fb3b1da4d47970fe0a6efe
2024-03-09Unify and refactor value printingeldritch horrors
Previously, there were two mostly-identical value printers -- one in `libexpr/eval.cc` (which didn't force values) and one in `libcmd/repl.cc` (which did force values and also printed ANSI color codes). This PR unifies both of these printers into `print.cc` and provides a `PrintOptions` struct for controlling the output, which allows for toggling whether values are forced, whether repeated values are tracked, and whether ANSI color codes are displayed. Additionally, `PrintOptions` allows tuning the maximum number of attributes, list items, and bytes in a string that will be displayed; this makes it ideal for contexts where printing too much output (e.g. all of Nixpkgs) is distracting. (As requested by @roberth in https://github.com/NixOS/nix/pull/9554#issuecomment-1845095735) Please read the tests for example output. Future work: - It would be nice to provide this function as a builtin, perhaps `builtins.toStringDebug` -- a printing function that never fails would be useful when debugging Nix code. - It would be nice to support customizing `PrintOptions` members on the command line, e.g. `--option to-string-max-attrs 1000`. (cherry picked from commit 0fa08b451682fb3311fe58112ff05c4fe5bee3a4, ) === Restore ambiguous value printer for `nix-instantiate` The Nix team has requested that this output format remain unchanged. I've added a warning to the man page explaining that `nix-instantiate --eval` output will not parse correctly in many situations. (cherry picked from commit df84dd4d8dd3fd6381ac2ca3064432ab31a16b79) Change-Id: I7cca6b4b53cd0642f2d49af657d5676a8554c9f8
2024-03-08Unindent `print.hh` declarationseldritch horrors
(cherry picked from commit c9125603a535f82cc9a53f47533f0a3d174e7008) Change-Id: I137a272feee7eb42a017f373cbe4705b0e79b7c1
2024-03-07Merge changes I03bbff94,I778edad1,Iaa80073b,Ib1d58fe4 into maineldritch horrors
* changes: Add release notes Print how many checks are run Print derivation paths Log what `nix flake check` does
2024-03-07Merge pull request #9324 from 9999years/fix-8854-take-2eldritch horrors
Don't attempt to `git add` ignored files (cherry picked from commit 359990dfdc713c80aabd7ea6f7e4528628fbe108) === also added a regression test that isn't upstream to be sure we're actually fixing the bug. Change-Id: I8267a3d0ece9909d8008b7435b90e7b3eee366f6
2024-03-07Merge pull request #9890 from obsidiansystems/remove-unneeded-toRealPatheldritch horrors
Change an `allowPath` call to take a store path again (cherry picked from commit 7c9ed1b1a325fe64a186e9d454607eaa0a7e8951) Change-Id: Ia5ec924315a1f2640a0438cfb4b1ee0689cd3558
2024-03-07Merge pull request #9560 from ↵eldritch horrors
obsidiansystems/serve-proto-unkeyed-valid-path-info-serializer Factor out `ServeProto::Serialiser<UnkeyedValidPathInfo>` and test (cherry picked from commit 139982997eec493a0f74105c427953f6be77da6d) Change-Id: I28e4ba5a681a90d81915a56e6dbaa5456d64f96d
2024-03-07Merge pull request #9032 from Ma27/structured-attrs-env-varseldritch horrors
structured attrs: improve support / usage of NIX_ATTRS_{SH,JSON}_FILE (cherry picked from commit 3c042f3b0b0a7ef9c47bf049f5410dbd4aac9e90) Change-Id: I7e41838338ee1edf31fff6f9e354c3db2bba6c0e
2024-03-07Print how many checks are runeldritch horrors
(cherry picked from commit d75a5f427a385e56c821fdf49a70a150fe7fe6fd) Change-Id: I778edad1928adf90a69d0bbe8dd36623181b20d4
2024-03-07Print derivation pathseldritch horrors
Also be more consistent with quotes around attribute paths (cherry picked from commit 9404ce36e4edd1df12892089bdab1ceb7d4d7a97) Change-Id: Iaa80073b4a07a6ffef106a3c12ecd02b4f6f67aa
2024-03-07Log what `nix flake check` doeseldritch horrors
There's still room for improvement, but this produces much more informative output with `-v`: ``` $ nix flake check -v evaluating flake... checking flake output 'checks'... checking derivation checks.aarch64-darwin.ghcid-ng-tests... checking derivation checks.aarch64-darwin.ghcid-ng-clippy... checking derivation checks.aarch64-darwin.ghcid-ng-doc... checking derivation checks.aarch64-darwin.ghcid-ng-fmt... checking derivation checks.aarch64-darwin.ghcid-ng-audit... checking flake output 'packages'... checking derivation packages.aarch64-darwin.ghcid-ng... checking derivation packages.aarch64-darwin.ghcid-ng-tests... checking derivation packages.aarch64-darwin.default... checking flake output 'apps'... checking flake output 'devShells'... checking derivation devShells.aarch64-darwin.default... running flake checks... warning: The check omitted these incompatible systems: aarch64-linux, x86_64-darwin, x86_64-linux Use '--all-systems' to check all. ``` (cherry picked from commit 49221493e243c4d10e69e7465a21be53902e16a8) Change-Id: Ib1d58fe48cc82f4801a2ee5f91ba0d5a74907c0b
2024-03-07Merge pull request #9787 from obsidiansystems/bind-proc-syserroreldritch horrors
`bind`: give same treatment as `connect` in #8544, dedup (cherry picked from commit 28674247ec792a981741198abc190a71bb254b82) Change-Id: I1ac5fc43fa10ec5f37a226730c3d84033fdbfd52
2024-03-07Merge pull request #8544 from edolstra/handle-missing-gc-socketeldritch horrors
LocalStore: :addTempRoot(): Handle ENOENT (cherry picked from commit 7115edc85af060ef235ac0270245ab46cc828f7c) Change-Id: Ie6b1596049c3fde09b98f2f0727899f98e48e6b1
2024-03-07Merge pull request #9985 from alois31/symlink-resolutioneldritch horrors
Restore `builtins.pathExists` behavior on broken symlinks (cherry picked from commit d53c8901ef7f2033855dd99063522e3d56a19dab) === note that this variant differs markedly from the source commit because we haven't endured quite as much lazy trees. Change-Id: I0facf282f21fe0db4134be5c65a8368c1b3a06fc
2024-03-07Merge pull request #10074 from lf-/jade/ban-implicit-fallthrougheldritch horrors
Warn on implicit switch case fallthrough (cherry picked from commit 21282c3c204597641402c6bcff8fc9ee7bc31fa1) Change-Id: I5ebbdfb6c037d2c55254f37dd391c07c2ce7443e
2024-03-06Merge "fix: bounds check result in getMaxCPU" into mainjade
2024-03-06fix: bounds check result in getMaxCPUJade Lovelace
Upstream-Bug: https://github.com/NixOS/nix/issues/9725 Upstream-PR: https://github.com/NixOS/nix/pull/10172 Change-Id: I2b8e8b15ee28951be98e5cbe3ccea5b9c8de5994
2024-03-07Merge pull request #9934 from nmeum/absPath-out-of-boundseldritch horrors
absPath: Explicitly check if path is empty before accessing it (cherry picked from commit 6ec08b85f607852eb6f976c1392c4917d0a53787) Change-Id: Ieeb53fb65d0e334e6017ceb3a48b3b6ae1047843
2024-03-06Merge pull request #9280 from R-VdP/rvdp/fix_remote_logging_phase_reportingeldritch horrors
Include phase reporting in log file for ssh-ng builds (cherry picked from commit b1e7d7cad625095656fff05ac4aedeb12135110a) Change-Id: I4076669b0ba160412f7c628ca9113f9abbc8c303
2024-03-07Copy the output of fixed-output derivations before registering themPuck Meerburg
It is possible to exfiltrate a file descriptor out of the build sandbox of FODs, and use it to modify the store path after it has been registered. To avoid that issue, don't register the output of the build, but a copy of it (that will be free of any leaked file descriptor). Test that we can't leverage abstract unix domain sockets to leak file descriptors out of the sandbox and modify the path after it has been registered. (cherry picked from commit 2dadfeb690e7f4b8f97298e29791d202fdba5ca6) (tests cherry picked from commit c854ae5b3078ac5d99fa75fe148005044809e18c) Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io> Co-authored-by: Theophane Hufschmitt <theophane.hufschmitt@tweag.io> Co-authored-by: Tom Bereknyei <tomberek@gmail.com> Change-Id: I87cd58f1c0a4f7b7a610d354206b33301e47b1a4
2024-03-05Merge pull request #9634 from 9999years/combine-abstract-pos-and-poseldritch horrors
Combine `AbstractPos`, `PosAdapter`, and `Pos` (cherry picked from commit 113499d16fc87d53b73fb62fe6242154909756ed) === this is a bit cursed because originally it was based on InputAccessor code that we don't have and moved/patched features we likewise don't have (fetchToStore caching, all the individual accessors, ContentAddressMethod). the commit is adjusted accordingly to match (remove caching, ignore accessors, use FileIngestionMethod). note that `state.rootPath . CanonPath == abs` and computeStorePathForPath works relative to cwd, so the slight rewrite in the moved fetchToStore is legal. Change-Id: I05fd340c273f0bcc8ffabfebdc4a88b98083bce5
2024-03-05Merge pull request #9860 from 9999years/set-stack-darwineldritch horrors
Increase stack size on macOS as well as Linux (cherry picked from commit efb91d5979a625d5c50558aeabfd24e802ed9173, 4a2444b3f32a2f5d42c4d65302793b987d1ac667) Change-Id: Ieb72283c61bb9e360683f531d6635697b293c313
2024-03-05Merge pull request #9443 from ivan770/reproducibilityeldritch horrors
doc: fix machine-specific capabilities leaking (cherry picked from commit dda0e34ecf16bb1c736d585414122a7e3587db70) Change-Id: I3d07cc5039ee954b215a7a27caa3bf7359d92c26
2024-03-04Merge pull request #9915 from 9999years/evaluating-attribute-positioneldritch horrors
Add position information to `while evaluating the attribute` errors in the debugger (cherry picked from commit ffe67c86a8ef3695e5c8b9c9800c192ac633dded) Change-Id: I177ea5ec60898abe09fb9d80d9602b2a32ff8f44
2024-03-04Merge pull request #10010 from 9999years/fix-9941eldritch horrors
Fix "Failed tcsetattr(TCSADRAIN)" when `nix repl` is not a TTY (cherry picked from commit 864fc85fc88ff092725ba99907611b2b8d2205fb) Change-Id: I8198674b935fabd741a349cc74544e61c53ea7b3
2024-03-04Merge pull request #10067 from ramboman/fix-proxy-nixeldritch horrors
`nix`: Fix `haveInternet` to check for proxy (cherry picked from commit accae60e7710a18f6f2bd7d2f4cd836bcd76b684) Change-Id: I996dafdcd266f4bc5806386c86b19040120842bf
2024-03-04Merge pull request #10054 from syvb/channel-unpack-counteldritch horrors
Say how many channels were unpacked in nix-channel (cherry picked from commit 9ae665b9e1dc64c507ab6002fc5d7824208f3777) Change-Id: Ie0950cf32123b550c5b83981a020e513f72a9b7c
2024-03-04Merge pull request #10055 from GrahamDennis/gdennis/faster-flake-lock-parsingeldritch horrors
Faster flake.lock parsing (cherry picked from commit ff4fa4dbd307fb155155421a7ec0625383dcedeb) Change-Id: I34325834770db66fa56f0d8d02d3d2322dea3c65
2024-03-04Ban building Nix with NDEBUGeldritch horrors
When reviewing old PRs, I found that #9997 adds some code to ensure one particular assert is always present. But, removing asserts isn't something we do in our own release builds either in the flake here or in nixpkgs, and is plainly a bad idea that increases support burden, especially if other distros make bad choices of build flags in their Nix packaging. For context, the assert macro in the C standard is defined to do nothing if NDEBUG is set. There is no way in our build system to set -DNDEBUG without manually adding it to CFLAGS, so this is simply a configuration we do not use. Let's ban it at compile time. I put this preprocessor directive in src/libutil.cc because it is not obvious where else to put it, and it seems like the most logical file since you are not getting a usable nix without it. Upstream-PR: https://github.com/NixOS/nix/pull/10126 Original-Change-Id: I513cceaac1371decb3d96231e6ef9181c910c218 Change-Id: I531a51f6348a746e8e41d88203b08f614898356c
2024-03-04Merge pull request #9992 from edolstra/fix-warningeldritch horrors
Fix "may be used uninitialized" warning (cherry picked from commit c4ebb82da4eade975e874da600dc50e9dec610cb) Change-Id: I0ce99bf102ad12902f7055c29a56e665b8320ca8
2024-03-04Merge pull request #9974 from edolstra/less-chatty-post-build-hookeldritch horrors
runPostBuildHook(): Be less chatty (cherry picked from commit 28a988bdde7b20abff9000162015500c44a5812b) Change-Id: Ibb49b71bf631d04d08970d719f091221b15c5036
2024-03-04Merge pull request #9933 from pennae/debugger-fixeldritch horrors
fix debugger crashing while printing envs (cherry picked from commit 9b8b4860913afdb7f9cb1e1e81f9a9dd192cd1c1) Change-Id: Ica6a17e4b3e3b8b8093719f442c28be7f13be09d
2024-03-04Merge pull request #9918 from 9999years/debugger-locals-for-let-expressionseldritch horrors
Expose locals from `let` expressions to the debugger (cherry picked from commit acef4f17a2daab4ccdf656bdf229792db2f779e4) Change-Id: Ib3623254f67ac762f4e7230d625e9f87dff38a84
2024-03-04Merge pull request #9924 from 9999years/rename-yellowtxteldritch horrors
Rename `yellowtxt` -> `magentatxt` (cherry picked from commit fb78a99e04206e7b1df84a362bb87d3300b41855) Change-Id: I9ade553d9f499e6713aeff3463c9a653a880a051
2024-03-04Merge pull request #9919 from 9999years/reduce-debugger-cluttereldritch horrors
Reduce visual clutter in the debugger (cherry picked from commit f388a6148dae0fc999f1a67d0b96d76788f9b97f) Change-Id: I21bfe3e9f75816484b0f46dbe09e0ff40b22c6d9
2024-03-04Merge pull request #9930 from rvl/print-dev-env-unbound-variableseldritch horrors
print-dev-env: Avoid using unbound shellHook variable (cherry picked from commit 25385a408ef7281d966c8732608833e224b32586) Change-Id: Id1aca13942adfa628f7bdcfc0b6fc03bb3bab9ea
2024-03-04Merge pull request #9913 from 9999years/debugger-positionseldritch horrors
Print positions in `--debugger`, instead of pointers (cherry picked from commit 49cf090cb2f51d6935756a6cf94d568cab063f81) Change-Id: Ic27917b2aab3657c28d599898377bf0c14753f8a