-
Notifications
You must be signed in to change notification settings - Fork 0
[pull] master from NixOS:master #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
pull
wants to merge
7,920
commits into
oi2996814:master
Choose a base branch
from
NixOS:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
The cache is now part of fetchers::Settings.
Ensure relative path inputs are relative to the parent node's _actual_ `outPath`, instead of the subtly different `sourceInfo.outPath`. Additionally, non-flake inputs now also have a `sourceInfo` attribute. This fixes the relationship between `self.outPath` and `self.sourceInfo.outPath` in some edge cases. Fixes #13164
This patch adds an EvalProfiler and MultiEvalProfiler that can be used to insert hooks into the evaluation for the purposes of function tracing (what function-trace currently does) or for flamegraph/tracy profilers. See the following commits for how this is supposed to be integrated into the evaluator and performance considerations.
This wires up the {pre,post}FunctionCallHook machinery in EvalState::callFunction and migrates FunctionCallTrace to use the new EvalProfiler mechanisms for tracing. Note that branches when the hook gets called are marked with [[unlikely]] as a hint to the compiler that this is not a hot path. For non-tracing evaluation this should be a 100% predictable branch, so the performance cost is nonexistent. Some measurements to prove support this point: ``` nix build .#nix-cli nix build github:nixos/nix/d692729759e4e370361cc5105fbeb0e33137ca9e#nix-cli --out-link before ``` (Before) ``` $ taskset -c 2,3 hyperfine "GC_INITIAL_HEAP_SIZE=16g before/bin/nix eval nixpkgs#gnome --no-eval-cache" --warmup 4 Benchmark 1: GC_INITIAL_HEAP_SIZE=16g before/bin/nix eval nixpkgs#gnome --no-eval-cache Time (mean ± σ): 2.517 s ± 0.032 s [User: 1.464 s, System: 0.476 s] Range (min … max): 2.464 s … 2.557 s 10 runs ``` (After) ``` $ taskset -c 2,3 hyperfine "GC_INITIAL_HEAP_SIZE=16g result/bin/nix eval nixpkgs#gnome --no-eval-cache" --warmup 4 Benchmark 1: GC_INITIAL_HEAP_SIZE=16g result/bin/nix eval nixpkgs#gnome --no-eval-cache Time (mean ± σ): 2.499 s ± 0.022 s [User: 1.448 s, System: 0.478 s] Range (min … max): 2.472 s … 2.537 s 10 runs ```
Remove global fetcher cache
libexpr: Add `EvalProfiler` and use it for `FunctionCallTrace`
libstore: Use `boost::regex` for GC root discovery
I am on a newer different nixpkgs branch, so I am getting this error
Use correct parent `outPath` for relative path inputs
libutil-tests/json-utils: fix -Werror=sign-compare error
the second equivalence, using a if-else expression, aligns much closer to how most humans think about implication, adding it might help some people :)
Formals are already sorted as it's an invariant of `Formals`.
…ghout the codebase
Use C++14 N3657 transparent comparator for `StringMap` and `StringPairs` (NFC)
libexpr: Use `attrs.alreadySorted()` in primop_functionArgs
docs: add another equivalence for the implication operator
docs: clarify attrset __functor
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
Remove `useDerivation`
Introduce top-level `structuredAttrs` field in JSON derivation format
The Nix daemon detects supported system types at start time, so it needs to be restarted to detect x86_64-darwin support.
Revert "Drop magic-nix-cache"
Improve the Rosetta installation hint
Rework future tense in user-facing messages
Applies a workaround to enforce multiline formatting of lists to reduce code churn introduced in 93a42a5.
Update docs
Restore multiline formatting of lists in meson files
This is useful for certain error recovery paths (no pun intended) that does not thread through the original path name. Change-Id: I2d800740cb4f9912e64c923120d3f977c58ccb7e Signed-off-by: Raito Bezarius <raito@lix.systems>
We now keep around a proper AutoCloseFD around the temporary directory which we plan to use for openat operations and avoiding the build directory being swapped out while we are doing something else. Change-Id: I18d387b0f123ebf2d20c6405cd47ebadc5505f2a Signed-off-by: Raito Bezarius <raito@lix.systems>
We use it immediately for the build temporary directory. Change-Id: I180193c63a2b98721f5fb8e542c4e39c099bb947 Signed-off-by: Raito Bezarius <raito@lix.systems>
`writeFile` lose its `sync` boolean flag to make things simpler. A new `writeFileAndSync` function is created and all call sites are converted to it. Change-Id: Ib871a5283a9c047db1e4fe48a241506e4aab9192 Signed-off-by: Raito Bezarius <raito@lix.systems>
This ensures that `passAsFile` data is created inside the expected temporary build directory by `openat()` from the parent directory file descriptor. This avoids a TOCTOU which is part of the attack chain of CVE-????. Change-Id: Ie5273446c4a19403088d0389ae8e3f473af8879a Signed-off-by: Raito Bezarius <raito@lix.systems>
…irfds When calling `_deletePath` with a parent file descriptor, `openat` is made effective by using relative paths to the directory file descriptor. To avoid the problem, the signature is changed to resist misuse with an assert in the prologue of the function. Change-Id: I6b3fc766bad2afe54dc27d47d1df3873e188de96 Signed-off-by: Raito Bezarius <raito@lix.systems>
…tion In the case the deletion fails, we should ensure that the temporary directory cannot be used for nefarious purposes. Change-Id: I498a2dd0999a74195d13642f44a5de1e69d46120 Signed-off-by: Raito Bezarius <raito@lix.systems>
No need to do hacky stuff like that when we already know the original path.
And drop writeFileAndSync().
If a build directory is accessible to other users it is possible to smuggle data in and out of build directories. Usually this is only a build purity problem, but in combination with other issues it can be used to break out of a build sandbox. to prevent this we default to using a subdirectory of nixStateDir (which is more restrictive). (cherry picked from pennae Lix commit 55b416f6897fb0d8a9315a530a9b7f0914458ded) (store setting done by roberth)
Fixes error: … while processing sandbox path '/private/tmp/nix-shell.0MDgyx/nix-test/ca/repl/store/nix/var/nix/builds/nix-build-simple.drv-65916-3910734210' (/private/tmp/nix-shell.0MDgyx/nix-test/ca/repl/store) error: 'nix' is too short to be a valid store path which happened because we were now putting the build directory underneath the store directory.
libexpr: further removal of `std::string` copies
Fix typo: remove an extra word
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot]
Can you help keep this open source service alive? 💖 Please sponsor : )