Date: Thu, 28 Apr 2011 17:52:58 +0200 From: Hartmut Brandt <hartmut.brandt@dlr.de> To: Roman Divacky <rdivacky@freebsd.org> Cc: hackers@freebsd.org Subject: Re: make question Message-ID: <20110428174523.I61666@beagle.kn.op.dlr.de> In-Reply-To: <20110427193946.GA41659@freebsd.org>
index | next in thread | previous in thread | raw e-mail
Hi Roman, On Wed, 27 Apr 2011, Roman Divacky wrote: RD>You seem to have messed with bsd make so I have a question for you :) Yeah, that was some time ago ... RD>When a job is about to be executed in JobStart() a pipe is created with RD>its ends connected to job->inPipe/job->outPipe. When the job is actually RD>created in JobExec() the ps.out is set to job->outPipe so that in RD>JobDoOutput() we can read from that pipe and basically just parse the output RD>for shell->noPrint and leaving it out from the output. This is meant (I think) RD>for supressing the "filter" thing. Ie. that if we do some @command the RD>restoration of setting of quiet mode is filtered out. RD> RD> RD>In -B mode we do it differently, as we invoke one shell per command we don't RD>have to insert quiet/verbose commands and thus avoid all the piping/parsing RD>dance. RD> RD>So my question is - why don't we invoke one shell per command by default RD>and avoid the piping/parsing? Is this because of performance? I think that RD>the piping/parsing of the output can have worse impact than invoking a shell RD>for every command. Especially given that most targets consists of just one RD>command. The answer is in /usr/share/doc/psd/12.make. This is so one can write something like debug: DEBUG_FLAGS=-g for i in $(SUBDIR); do $(MAKE) -C $$i all done instead of: debug: DEBUG_FLAGS=-g \ for i in $(SUBDIR); do \ $(MAKE) -C $$i all ; \ done -B means 'backward compatible' and does what the original v7 make did: one shell per command. This means you don't have to write the backslashes and the shell variable will be seen in the sub-makes and programs. I think we can change this, because it would break makefiles that assume that the entire script is given to the shell in one piece. hartihome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110428174523.I61666>
