dot/gnus-local.el.distorted: Expand the `spotify' and `gandi' patterns.
[profile] / bin / mdw-build
index 10557a8..09f99d5 100755 (executable)
@@ -188,13 +188,11 @@ case $jobs in 1) ;; *) makeopts="$makeopts -j$jobs" ;; esac
 ##
 ##    0 -- original stdin (never touched)
 ## 1, 2 -- stdout, stderr, redirected to 3 while running comamnds
-##  log -- original stderr (verbose), or logfile (quiet); captures command
-##             output
-## diag -- null (verbose), or logfile (quiet); primary diagnostic output
+##  log -- logfile and original stderr (verbose), or logfile only (quiet);
+##             captures command output
+## diag -- logfile; primary diagnostic output
 ## term -- orginal stderr; secondary diagnostic output (with colours)
 
-exec {log}>&2 {diag}>/dev/null {term}>&2
-
 notify () {
   colour=$1 message=$2
   echo $message >&$diag
@@ -253,7 +251,7 @@ while [ ! -f configure.ac -a ! -f configure.in -a \
   esac
   cd ..
 done
-assign toppath $(pwd)
+toppath=$(pwd)
 
 ## Build any necessary qualifiers.
 qual= sep=.
@@ -263,18 +261,23 @@ case ${SBOX_SESSION_DIR+t},${DEB_BUILD_ARCH+t} in
 esac
 
 ## Construct the output directory.
-assign releasepath $toppath/dist-$build$qual
+releasepath=$toppath/dist-$build$qual
 chmod -R +w $releasepath 2>/dev/null || :
 rm -rf $releasepath 2>/dev/null || :
 mkdir $releasepath
+logfile=$releasepath/mdw-build.log
+exec {term}>&2
+exec {diag}>>$logfile || fail "Failed to create log."
 case $verbose in
-  no)
-    exec {log}>&- {diag}>&-
-    exec {diag}>$releasepath/mdw-build.log {log}>&$diag ||
-      fail "Failed to create log."
-    ;;
+  no) exec {log}>&$diag ;;
+  yes) exec {log}> >(tee -a $logfile >&$term {term}>&- {diag}>&-) ;;
 esac
 
+## Repeat the earlier assignments for tbe benefit of the logfile.
+assign toppath $toppath
+assign releasepath $releasepath
+assign logfile $logfile
+
 ## Do we have a Git repository?
 case "$checkout,$setup,$(yesno [ -d $toppath/.git ])" in
   yes,no,*)