diff options
author | Allan McRae <allan@archlinux.org> | 2008-12-08 12:21:03 +1000 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2009-01-16 22:24:21 +1000 |
commit | 708ce1480f83e01af7a6aba2db04e7982c313673 (patch) | |
tree | 1c229bede730e88189cfa7409c574a61bc4fd542 | |
parent | 9804911c5fbe7363d22f2384953bbcc3e57c1959 (diff) |
makepkg: hack around tee in run_package function
Piping the package function through tee to log the outut also
clears any variables set in the package function. This is a
problem in split packages as package variable overrides are done
in the package function. This is fixed by creating a node which
the output is piped through and duplicated using the tee function.
Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r-- | scripts/makepkg.sh.in | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 4d33a9c0..f2c9b363 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -740,7 +740,16 @@ run_package() { mv "$BUILDLOG" "$BUILDLOG.$i" fi - package 2>&1 | tee "$BUILDLOG"; ret=${PIPESTATUS[0]} + # ensure overridden package variables suvrive tee with split packages + logpipe=$(mktemp -u "$startdir/logpipe.XXXXXXXX") + mknod "$logpipe" p + exec 3>&1 + tee "$BUILDLOG" < "$logpipe" & + exec 1>"$logpipe" 2>"$logpipe" + package 2>&1 || ret=$? + sync + exec 1>&3 2>&3 3>&- + rm "$logpipe" else package 2>&1 || ret=$? fi |