aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/util.hh
AgeCommit message (Collapse)Author
2021-11-08Merge branch 'fix-writable-shell' of https://github.com/yorickvP/nixEelco Dolstra
2021-10-15Restore parent mount namespace in restoreProcessContextYorick van Pelt
This ensures any started processes can't write to /nix/store (except during builds). This partially reverts 01d07b1e, which happened because of #2646. The problem was only happening after nix downloads anything, causing me to suspect the download thread. The problem turns out to be: "A process can't join a new mount namespace if it is sharing filesystem-related attributes with another process", in this case this process is the curl thread. Ideally, we might kill it before spawning the shell process, but it's inside a static variable in the getFileTransfer() function. So instead, stop it from sharing FS state using unshare(). A strategy such as the one from #5057 (single-threaded chroot helper binary) is also very much on the table. Fixes #4337.
2021-10-14Make the canReachRoots() traversal non-recursiveEelco Dolstra
2021-10-13Use a thread per connectionEelco Dolstra
2021-10-13Non-blocking garbage collectorEelco Dolstra
The garbage collector no longer blocks other processes from adding/building store paths or adding GC roots. To prevent the collector from deleting store paths just added by another process, processes need to connect to the garbage collector via a Unix domain socket to register new temporary roots.
2021-10-06Don't reset the logger in a vforkEelco Dolstra
9c766a40cbbd3a350a9582d0fd8201e3361a63b2 broke logging from the daemon, because commonChildInit is called when starting the build hook in a vfork, so it ends up resetting the parent's logger. So don't vfork. It might be best to get rid of vfork altogether, but that may cause problems, e.g. when we call an external program like git from the evaluator.
2021-10-05Connect/bind Unix domain sockets in a child processEelco Dolstra
In the child process, we can do a chdir() and avoid the problem of the path not fitting into sockaddr_un.
2021-09-13RunOptions: Use designated initializersEelco Dolstra
Also get rid of _killStderr because it wasn't actually checked anywhere.
2021-07-01Respect TERM=dumb more consistentlyYestin L. Harrison
2021-04-07Restore stack size in child processesEelco Dolstra
Fixes #4673.
2021-04-07restoreSignals() + restoreAffinity() -> restoreProcessContext()Eelco Dolstra
2021-04-07PathSubstitutionGoal: Clean up pipeEelco Dolstra
If there were many top-level goals (which are not destroyed until the very end), commands like $ nix copy --to 'ssh://localhost?remote-store=/tmp/nix' \ /run/current-system --no-check-sigs --substitute-on-destination could fail with "Too many open files". So now we do some explicit cleanup from amDone(). It would be cleaner to separate goals from their temporary internal state, but that would be a bigger refactor.
2021-01-21Remove trailing whitespaceEelco Dolstra
2021-01-08Support binary unit prefixes in command line argumentsEelco Dolstra
2021-01-08string2Int(): Return std::optionalEelco Dolstra
2020-12-02read(): Use char * instead of unsigned char *Eelco Dolstra
This gets rid of some pointless casts.
2020-12-02Sink: Use std::string_viewEelco Dolstra
2020-12-02writeFull/writeFile: Use std::string_viewEelco Dolstra
2020-12-01replaceStrings(): Use std::string_viewEelco Dolstra
2020-10-11Split out `commonChildInit`John Ericson
2020-10-06Factor out common showBytes()Eelco Dolstra
2020-09-21Random header cleanupEelco Dolstra
2020-09-21Move Callback into its own headerEelco Dolstra
This gets rid of the inclusion of <future> in util.hh, cutting compilation time by ~20s (CPU time). Issue #4045.
2020-08-20Allow 'nix' subcommands to provide docs in Markdown formatEelco Dolstra
2020-08-05Merge remote-tracking branch 'upstream/master' into misc-caJohn Ericson
2020-07-30unsigned long long -> uint64_tEelco Dolstra
2020-07-16Merge branch 'optional-derivation-output-storepath' of ↵Carlo Nucera
github.com:obsidiansystems/nix into ca-derivation-data-types
2020-07-12Move C++17 "pattern matching" boilerplat to utils.hhJohn Ericson
2020-06-17Merge remote-tracking branch 'origin/master' into flakesEelco Dolstra
2020-06-15Merge branch 'errors-phase-2' of https://github.com/bburdette/nixEelco Dolstra
2020-06-12Use `std::string_view` in a few more placesJohn Ericson
2020-06-11Merge remote-tracking branch 'upstream/master' into errors-phase-2Ben Burdette
2020-06-04Merge remote-tracking branch 'origin/master' into flakesEelco Dolstra
2020-06-04Make 'nix dev-shell' a deprecated alias for 'nix develop'Eelco Dolstra
2020-05-28Merge remote-tracking branch 'origin/master' into flakesEelco Dolstra
2020-05-11Merge branch 'master' into errors-phase-2Ben Burdette
2020-05-10SimplifyEelco Dolstra
2020-05-08Enable `baseNameOf` testTobias Pflug
Add note about removal of trailing slashes in the doc comment of baseNameOf and enabled the test.
2020-05-08Enable `dirOf` testTobias Pflug
Adjusted the doc comment for `dirOf` to reflect the implementation behavior.
2020-05-07Remove replaceInSetTobias Pflug
The function isn't being used anywhere so it seems safe to remove
2020-05-06Merge remote-tracking branch 'origin/master' into flakesEelco Dolstra
2020-04-29StringSink pre allocateGuillaume Bouchard
When used with `readFile`, we have a pretty good heuristic of the file size, so `reserve` this in the `string`. This will save some allocation / copy when the string is growing.
2020-04-29Remove the `drain` argument from `readFile`Guillaume Bouchard
Now it is always `drain` (see previous commit).
2020-04-24all things error to error.hhBen Burdette
2020-04-23Merge remote-tracking branch 'origin/master' into flakesEelco Dolstra
2020-04-22Don't include error.hh in util.hh to prevent header bloatEelco Dolstra
2020-04-22Merge branch 'error-format' of https://github.com/bburdette/nixEelco Dolstra
2020-04-21add ErrorInfo to BaseErrorBen Burdette
2020-04-16Merge remote-tracking branch 'origin/master' into flakesEelco Dolstra
2020-04-14add NIX_USER_CONF_FILESzimbatm
Motivation: maintain project-level configuration files. Document the whole situation a bit better so that it corresponds to the implementation, and add NIX_USER_CONF_FILES that allows overriding which user files Nix will load during startup.