mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-14 02:06:16 +02:00
* Don't fork in `nix run'.
This commit is contained in:
parent
f915f77349
commit
278ea4097e
3 changed files with 25 additions and 46 deletions
26
src/nix.cc
26
src/nix.cc
|
@ -406,15 +406,6 @@ void runPkg(string hash, const vector<string> & args)
|
||||||
|
|
||||||
runner = getFromEnv(env, "run");
|
runner = getFromEnv(env, "run");
|
||||||
|
|
||||||
/* Fork a child to build the package. */
|
|
||||||
pid_t pid;
|
|
||||||
switch (pid = fork()) {
|
|
||||||
|
|
||||||
case -1:
|
|
||||||
throw Error("unable to fork");
|
|
||||||
|
|
||||||
case 0: { /* child */
|
|
||||||
|
|
||||||
/* Fill in the environment. We don't bother freeing the
|
/* Fill in the environment. We don't bother freeing the
|
||||||
strings, since we'll exec or die soon anyway. */
|
strings, since we'll exec or die soon anyway. */
|
||||||
for (Environment::iterator it = env.begin();
|
for (Environment::iterator it = env.begin();
|
||||||
|
@ -437,21 +428,7 @@ void runPkg(string hash, const vector<string> & args)
|
||||||
execv(runner.c_str(), (char * *) args2);
|
execv(runner.c_str(), (char * *) args2);
|
||||||
|
|
||||||
cout << strerror(errno) << endl;
|
cout << strerror(errno) << endl;
|
||||||
|
throw Error("unable to execute runner");
|
||||||
cout << "unable to execute runner\n";
|
|
||||||
_exit(1); }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* parent */
|
|
||||||
|
|
||||||
/* Wait for the child to finish. */
|
|
||||||
int status;
|
|
||||||
if (waitpid(pid, &status, 0) != pid)
|
|
||||||
throw Error("unable to wait for child");
|
|
||||||
|
|
||||||
if (!WIFEXITED(status) || WEXITSTATUS(status) != 0)
|
|
||||||
throw Error("unable to run package");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -750,7 +727,6 @@ void main2(int argc, char * * argv)
|
||||||
/* Parse the global flags. */
|
/* Parse the global flags. */
|
||||||
while (argc) {
|
while (argc) {
|
||||||
string arg(*argv);
|
string arg(*argv);
|
||||||
cout << arg << endl;
|
|
||||||
if (arg == "-h" || arg == "--help") {
|
if (arg == "-h" || arg == "--help") {
|
||||||
printUsage();
|
printUsage();
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -4,4 +4,7 @@ export LD_LIBRARY_PATH=$glib/lib:$atk/lib:$pango/lib:$gtk/lib:$gnet/lib:$pspell/
|
||||||
|
|
||||||
ldd $pan/bin/pan
|
ldd $pan/bin/pan
|
||||||
|
|
||||||
$pan/bin/pan $*
|
prog=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
$pan/bin/$prog $*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
id : pan-0.13.91-run
|
id : pan-0.13.91-run-2
|
||||||
|
|
||||||
pan <- ./pan-0.13.91.nix
|
pan <- ./pan-0.13.91.nix
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue