chiark / gitweb /
bin/mdw-build: Always create the logfile, even in verbose builds.
[profile] / bin / mdw-build
index b5bbbf3a1cf703e8b1ef8337edbf3b33485ec405..09f99d523639ce7bbe81da2e5210ac4d292cdcc3 100755 (executable)
@@ -188,9 +188,9 @@ 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)
 
 notify () {
@@ -265,20 +265,18 @@ 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 {diag}>$releasepath/mdw-build.log {log}>&$diag ||
-      fail "Failed to create log."
-    ;;
-  yes)
-    exec {diag}>/dev/null {log}>&2
-    ;;
+  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