mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-02-13 11:42:21 +00:00
package: allow 'tee' to catch up before returning (re: beb3c64a)
In the referenced commit message I neglected to mention that, when
doing bin/package make, we're now running 'tee' in the background
again and the building job in the foreground, as opposed to the
other way around. Foreground jobs are more reliably interruptable.
But that reintroduced the problem fixed in 5b8d29d3
. Now I don't
know what I was thinking then -- the obvious fix is to add a 'wait'
command, allowing 'tee' to catch up before returning to the prompt.
This commit is contained in:
parent
6137b99a6b
commit
7c30a59e25
2 changed files with 16 additions and 2 deletions
|
@ -2821,6 +2821,7 @@ showenv()
|
|||
|
||||
capture() # file command ...
|
||||
{
|
||||
tee_pid=
|
||||
case $make:$noexec in
|
||||
:) case $action in
|
||||
install|make|view)
|
||||
|
@ -2883,7 +2884,7 @@ capture() # file command ...
|
|||
then TEE=tee
|
||||
fi
|
||||
# Connect 'tee' to a FIFO instead of a pipe, so that we can obtain
|
||||
# the build's exit status with 'wait' and use it for $error_status
|
||||
# the build's exit status and use it for $error_status
|
||||
rm -f $o.fifo
|
||||
mkfifo -m 600 $o.fifo || exit
|
||||
(
|
||||
|
@ -2892,6 +2893,7 @@ capture() # file command ...
|
|||
exec rm $o.fifo
|
||||
) &
|
||||
$TEE -a $o < $o.fifo &
|
||||
tee_pid=$!
|
||||
o=$o.fifo
|
||||
;;
|
||||
esac
|
||||
|
@ -2910,6 +2912,11 @@ capture() # file command ...
|
|||
if test "$exit_status" -gt "$error_status"
|
||||
then error_status=$exit_status
|
||||
fi
|
||||
case $tee_pid in
|
||||
?*) # allow 'tee' to catch up before returning to prompt
|
||||
wait "$tee_pid"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
make_recurse() # dir
|
||||
|
|
|
@ -2821,6 +2821,7 @@ showenv()
|
|||
|
||||
capture() # file command ...
|
||||
{
|
||||
tee_pid=
|
||||
case $make:$noexec in
|
||||
:) case $action in
|
||||
install|make|view)
|
||||
|
@ -2883,7 +2884,7 @@ capture() # file command ...
|
|||
then TEE=tee
|
||||
fi
|
||||
# Connect 'tee' to a FIFO instead of a pipe, so that we can obtain
|
||||
# the build's exit status with 'wait' and use it for $error_status
|
||||
# the build's exit status and use it for $error_status
|
||||
rm -f $o.fifo
|
||||
mkfifo -m 600 $o.fifo || exit
|
||||
(
|
||||
|
@ -2892,6 +2893,7 @@ capture() # file command ...
|
|||
exec rm $o.fifo
|
||||
) &
|
||||
$TEE -a $o < $o.fifo &
|
||||
tee_pid=$!
|
||||
o=$o.fifo
|
||||
;;
|
||||
esac
|
||||
|
@ -2910,6 +2912,11 @@ capture() # file command ...
|
|||
if test "$exit_status" -gt "$error_status"
|
||||
then error_status=$exit_status
|
||||
fi
|
||||
case $tee_pid in
|
||||
?*) # allow 'tee' to catch up before returning to prompt
|
||||
wait "$tee_pid"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
make_recurse() # dir
|
||||
|
|
Loading…
Reference in a new issue