mirror of
https://github.com/NixOS/nix
synced 2025-06-27 04:21:16 +02:00
* Make nix-env --dry-run print the paths to be substituted correctly
again. (After the previous substituter mechanism refactoring I didn't update the code that obtains the references of substitutable paths.) This required some refactoring: the substituter programs are now kept running and receive/respond to info requests via stdin/stdout.
This commit is contained in:
parent
fc691e1cbd
commit
3c92ea399d
14 changed files with 338 additions and 272 deletions
|
@ -579,7 +579,14 @@ AutoCloseFD::AutoCloseFD(int fd)
|
|||
|
||||
AutoCloseFD::AutoCloseFD(const AutoCloseFD & fd)
|
||||
{
|
||||
abort();
|
||||
/* Copying a AutoCloseFD isn't allowed (who should get to close
|
||||
it?). But as a edge case, allow copying of closed
|
||||
AutoCloseFDs. This is necessary due to tiresome reasons
|
||||
involving copy constructor use on default object values in STL
|
||||
containers (like when you do `map[value]' where value isn't in
|
||||
the map yet). */
|
||||
this->fd = fd.fd;
|
||||
if (this->fd != -1) abort();
|
||||
}
|
||||
|
||||
|
||||
|
@ -832,7 +839,7 @@ string runProgram(Path program, bool searchPath, const Strings & args)
|
|||
pipe.readSide.close();
|
||||
|
||||
if (dup2(pipe.writeSide, STDOUT_FILENO) == -1)
|
||||
throw SysError("dupping from-hook write side");
|
||||
throw SysError("dupping stdout");
|
||||
|
||||
std::vector<const char *> cargs; /* careful with c_str()! */
|
||||
cargs.push_back(program.c_str());
|
||||
|
@ -868,6 +875,17 @@ string runProgram(Path program, bool searchPath, const Strings & args)
|
|||
}
|
||||
|
||||
|
||||
void closeMostFDs(const set<int> & exceptions)
|
||||
{
|
||||
int maxFD = 0;
|
||||
maxFD = sysconf(_SC_OPEN_MAX);
|
||||
for (int fd = 0; fd < maxFD; ++fd)
|
||||
if (fd != STDIN_FILENO && fd != STDOUT_FILENO && fd != STDERR_FILENO
|
||||
&& exceptions.find(fd) == exceptions.end())
|
||||
close(fd); /* ignore result */
|
||||
}
|
||||
|
||||
|
||||
void quickExit(int status)
|
||||
{
|
||||
#ifdef __CYGWIN__
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue