From owner-freebsd-current@FreeBSD.ORG Sun Jan 25 23:29:45 2009 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 185FC106566B; Sun, 25 Jan 2009 23:29:45 +0000 (UTC) (envelope-from kris@FreeBSD.org) Received: from dhcp-172-28-76-91.eur.corp.google.com (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 690F78FC0A; Sun, 25 Jan 2009 23:29:43 +0000 (UTC) (envelope-from kris@FreeBSD.org) Message-ID: <497CF5E6.4040007@FreeBSD.org> Date: Sun, 25 Jan 2009 23:29:42 +0000 From: Kris Kennaway User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: obrien@freebsd.org, Kris Kennaway , FreeBSD Current References: <497B3B40.3040306@FreeBSD.org> <20090125203751.GA89522@dragon.NUXI.org> <497CE767.3080109@FreeBSD.org> <20090125230814.GF89522@dragon.NUXI.org> In-Reply-To: <20090125230814.GF89522@dragon.NUXI.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Subject: Re: Noisy make -j output X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jan 2009 23:29:45 -0000 David O'Brien wrote: > 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? As in the snippet I posted, all of the internal make targets that are executed are now being exposed to the user. make buildworld -j -s is especially unclean. > 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 `@' 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? I'm thinking of custom makefiles that capture the output and post-process it, which will now have extra text inserted into the output along with the output that is expected to be there. > 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. I think -s should either imply -Q or -Q should just go away. Kris