dcc37c236c
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 */
|