On Sun, Jan 25, 2009 at 10:27:51PM +0000, Kris Kennaway wrote: > David O'Brien wrote: >> On Sat, Jan 24, 2009 at 04:01:04PM +0000, Kris Kennaway wrote: >>> After a fresh buildworld on a system last built in November: >>> hydra2# make buildworld -j8 -s >>> --- upgrade_checks --- >>> --- make --- >>> [...] >>> >>> Why the extra-spammy output now? >> It's the intended operation of pmake/bmake from 4.4BSD. One reason I >> believe we haven't trusted 'make -j' in the past is it can be very hard >> to unwind the output when there is a build error. It turns out this is >> because dg in the past neutered them (presumably he didn't understand >> their value). After having used a bmake with the stock behavior I've >> seen how valuable the markers are. > > I consider the change to be exposing debug-level information that is too > noisy to be on by default. What is "debug-level" information? I really don't consider this to be "debug information" any more than the invocation of the compiler. Nor the output from things like 'make obj': ===> share/info (obj) ===> lib (obj) ===> lib/csu/amd64 (obj) ===> lib/libc (obj) ..snip.. With the markers it is easy to write scripts that de-multiplex a build log, giving output roughly what a non-// run would be. This makes it easy to extract errors from build logs. > Also I'm concerned that you've broken things > that expect 'make -s' to actually be silent. 'make -s' : relates to commands executed, not making the output "quiet". >From the man page: Do not echo any commands as they are executed. Equivalent to specifying `_at_' before each command line in the makefile. If something expects 'make -s' to be minimal output it is broken and non-portable as its assuming '-s' does more than SUSv3 requires of it. -s Do not write makefile command lines or touch messages (see -t) to standard output before executing. This mode shall be the same as if the special target .SILENT were specified without prerequisites. .SILENT Prerequisites of this special target are targets themselves; this shall cause commands associated with them not to be written to the standard output before they are executed. Subsequent occurrences of .SILENT shall add to the list of targets with silent commands. If no prerequisites are specified, make shall behave as if the -s option had been specified and no commands or touch messages associated with any target shall be written to standard output. 'make -Q' (or the special target .POSIX:) can be used to quiet the output from 'make -j'. To see just how silent things in our world are I tried '(cd /usr/src ; make -Q -s -j8 world)', which gives output such as: ===> lib/libdwarf (obj,depend,all,install) ===> cddl/usr.bin/ctfconvert (obj,depend,all,install) ===> cddl/usr.bin/ctfmerge (obj,depend,all,install) ===> games/fortune/strfile (obj,depend,all,install) ===> gnu/usr.bin/gperf (obj,depend,all,install) ===> gnu/usr.bin/gperf/doc (obj) ===> gnu/usr.bin/gperf/doc (depend) ===> gnu/usr.bin/gperf/doc (all) ===> gnu/usr.bin/gperf/doc (install) ===> gnu/usr.bin/groff/tmac (obj,depend,all,install) I then configured a GENERIC and ran '(cd ../../GENERIC ; make -j8 -s -Q)', which gives output such as: ===> aic7xxx (obj) ===> aic7xxx/aicasm (obj) ===> aic7xxx/ahc (obj) ===> aic7xxx/ahc/ahc_eisa (obj) ./aicasm: 880 instructions used ./aicasm: 880 instructions used ./aicasm: 880 instructions used ./aicasm: 826 instructions used ./aicasm: 826 instructions used ./aicasm: 826 instructions used ===> aic7xxx/ahc/ahc_isa (obj) ===> aic7xxx/ahc/ahc_pci (obj) ===> aic7xxx/ahd (obj) which also isn't very silent. Wouldn't this behavior of our mk files also break things that expect 'make -s' to be silent? Do you have a test case I could ponder? Maybe -s should imply -Q? But it looks like there is really more work to be done for -s to really be silent. -- -- David (obrien_at_FreeBSD.org)Received on Sun Jan 25 2009 - 22:08:14 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:41 UTC