summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2008-12-08 12:21:03 +1000
committerAllan McRae <allan@archlinux.org>2009-01-16 22:24:21 +1000
commit708ce1480f83e01af7a6aba2db04e7982c313673 (patch)
tree1c229bede730e88189cfa7409c574a61bc4fd542
parent9804911c5fbe7363d22f2384953bbcc3e57c1959 (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.in11
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