* Use named pipes explicitly instead of through bash's process
substitution feature (which appears to be buggy - there's no way to wait for an output redirection, and bash sometimes appears to die due to subtle timing conditions). This also removes the most egregious dependency on bash. svn path=/nixpkgs/trunk/; revision=1258
This commit is contained in:
parent
2ec94563bc
commit
f7035ee5ca
@ -1,19 +0,0 @@
|
|||||||
{stdenv, genericStdenv, gccWrapper}:
|
|
||||||
|
|
||||||
genericStdenv {
|
|
||||||
name = "stdenv-darwin";
|
|
||||||
preHook = ./prehook.sh;
|
|
||||||
initialPath = "/usr/local /usr /";
|
|
||||||
|
|
||||||
inherit stdenv;
|
|
||||||
|
|
||||||
gcc = gccWrapper {
|
|
||||||
name = "gcc-darwin";
|
|
||||||
nativeTools = true;
|
|
||||||
nativeGlibc = true;
|
|
||||||
nativePrefix = "/usr";
|
|
||||||
inherit stdenv;
|
|
||||||
};
|
|
||||||
|
|
||||||
shell = "/bin/bash";
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
export NIX_ENFORCE_PURITY=
|
|
||||||
export NIX_DONT_SET_RPATH=1
|
|
||||||
export NIX_NO_SELF_RPATH=1
|
|
||||||
dontFixLibtool=1
|
|
||||||
NIX_STRIP_DEBUG=0
|
|
||||||
echo XXX $NIX_DONT_SET_RPATH
|
|
@ -203,19 +203,24 @@ ensureDir() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Redirect stdout/stderr to a `tee' process that writes the specified
|
# Redirect stdout/stderr to a named pipe connected to a `tee' process
|
||||||
# file (and also to our original stdout). This requires bash. The
|
# that writes the specified file (and also to our original stdout).
|
||||||
# original stdout is saved in descriptor 3.
|
# The original stdout is saved in descriptor 3.
|
||||||
startLog() {
|
startLog() {
|
||||||
local logFile=${logNr}_$1
|
local logFile=${logNr}_$1
|
||||||
logNr=$((logNr + 1))
|
logNr=$((logNr + 1))
|
||||||
if test "$logPhases" = 1; then
|
if test "$logPhases" = 1; then
|
||||||
ensureDir $logDir
|
ensureDir $logDir
|
||||||
|
|
||||||
exec 3>&1
|
exec 3>&1
|
||||||
|
|
||||||
if test "$dontLogThroughTee" != 1; then
|
if test "$dontLogThroughTee" != 1; then
|
||||||
# Put this in an `eval' so that non-bash shells (or bash
|
# This required named pipes (fifos).
|
||||||
# invoked as `sh') won't choke on parsing this file.
|
logFifo=$NIX_BUILD_TOP/log_fifo
|
||||||
eval "exec > >(tee $logDir/$logFile) 2>&1"
|
test -p $logFifo || mkfifo $logFifo
|
||||||
|
tee $logDir/$logFile < $logFifo &
|
||||||
|
logTeePid=$!
|
||||||
|
exec > $logFifo 2>&1
|
||||||
else
|
else
|
||||||
exec > $logDir/$logFile 2>&1
|
exec > $logDir/$logFile 2>&1
|
||||||
fi
|
fi
|
||||||
@ -232,6 +237,14 @@ logNr=0
|
|||||||
stopLog() {
|
stopLog() {
|
||||||
if test "$logPhases" = 1; then
|
if test "$logPhases" = 1; then
|
||||||
exec >&3 2>&1
|
exec >&3 2>&1
|
||||||
|
|
||||||
|
# Wait until the tee process has died. Otherwise output from
|
||||||
|
# different phases may be mixed up.
|
||||||
|
if test -n "$logTeePid"; then
|
||||||
|
wait $logTeePid
|
||||||
|
logTeePid=
|
||||||
|
rm $logFifo
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
{stdenv, glibc, pkgs, genericStdenv, gccWrapper}:
|
|
||||||
|
|
||||||
genericStdenv {
|
|
||||||
name = "stdenv-nix-linux";
|
|
||||||
preHook = ./prehook.sh;
|
|
||||||
initialPath = (import ../nix/path.nix) {pkgs = pkgs;};
|
|
||||||
|
|
||||||
inherit stdenv;
|
|
||||||
|
|
||||||
gcc = gccWrapper {
|
|
||||||
name = pkgs.gcc.name;
|
|
||||||
nativeTools = false;
|
|
||||||
nativeGlibc = false;
|
|
||||||
inherit (pkgs) gcc binutils;
|
|
||||||
inherit stdenv glibc;
|
|
||||||
shell = pkgs.bash ~ /bin/sh;
|
|
||||||
};
|
|
||||||
|
|
||||||
shell = pkgs.bash ~ /bin/bash;
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
export NIX_ENFORCE_PURITY=1
|
|
@ -150,7 +150,7 @@
|
|||||||
|
|
||||||
|
|
||||||
# Testing the new stdenv-linux (TODO: remove this eventually).
|
# Testing the new stdenv-linux (TODO: remove this eventually).
|
||||||
stdenvLinuxTest = (import ../stdenv/nix-linux-branch) {
|
stdenvLinuxTest = (import ../stdenv/nix-linux) {
|
||||||
stdenv = stdenvLinuxBoot2;
|
stdenv = stdenvLinuxBoot2;
|
||||||
pkgs = stdenvLinuxBoot2Pkgs;
|
pkgs = stdenvLinuxBoot2Pkgs;
|
||||||
glibc = stdenvLinuxGlibc;
|
glibc = stdenvLinuxGlibc;
|
||||||
@ -158,7 +158,7 @@
|
|||||||
inherit gccWrapper;
|
inherit gccWrapper;
|
||||||
};
|
};
|
||||||
|
|
||||||
stdenvDarwinTest = (import ../stdenv/darwin-branch) {
|
stdenvDarwinTest = (import ../stdenv/darwin) {
|
||||||
stdenv = stdenvInitial;
|
stdenv = stdenvInitial;
|
||||||
genericStdenv = import ../stdenv/generic-branch;
|
genericStdenv = import ../stdenv/generic-branch;
|
||||||
inherit gccWrapper;
|
inherit gccWrapper;
|
||||||
|
Loading…
Reference in New Issue
Block a user