mirror of
https://github.com/NixOS/nix.git
synced 2025-11-29 05:31:00 +01:00
immediately add the result as a permanent GC root. This is the only
way to prevent a race with the garbage collector. For instance, the
old style
ln -s $(nix-store -r $(nix-instantiate foo.nix)) \
/nix/var/nix/gcroots/result
has two time windows in which the garbage collector can interfere
(by GC'ing the derivation and the output, respectively). On the
other hand,
nix-store --add-root /nix/var/nix/gcroots/result -r \
$(nix-instantiate --add-root /nix/var/nix/gcroots/drv \
foo.nix)
is safe.
* nix-build: use `--add-root' to prevent GC races.
28 lines
654 B
C++
28 lines
654 B
C++
#ifndef __SHARED_H
|
|
#define __SHARED_H
|
|
|
|
#include <string>
|
|
|
|
#include "util.hh"
|
|
|
|
|
|
/* These are not implemented here, but must be implemented by a
|
|
program linking against libmain. */
|
|
|
|
/* Main program. Called by main() after the ATerm library has been
|
|
initialised and some default arguments have been processed (and
|
|
removed from `args'). main() will catch all exceptions. */
|
|
void run(Strings args);
|
|
|
|
/* Should print a help message to stdout and return. */
|
|
void printHelp();
|
|
|
|
/* Ugh. No better place to put this. */
|
|
Path makeRootName(const Path & gcRoot, int & counter);
|
|
void printGCWarning();
|
|
|
|
|
|
extern string programId;
|
|
|
|
|
|
#endif /* !__SHARED_H */
|