Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Apr 2011 21:39:46 +0200
From:      Roman Divacky <rdivacky@freebsd.org>
To:        harti@freebsd.org
Cc:        hackers@freebsd.org
Subject:   make question
Message-ID:  <20110427193946.GA41659@freebsd.org>

next in thread | raw e-mail | index | archive | help
hi harti!


You seem to have messed with bsd make so I have a question for you  :)

When a job is about to be executed in JobStart() a pipe is created with
its ends connected to job->inPipe/job->outPipe. When the job is actually
created in JobExec() the ps.out is set to job->outPipe so that in
JobDoOutput() we can read from that pipe and basically just parse the output
for shell->noPrint and leaving it out from the output. This is meant (I think)
for supressing the "filter" thing. Ie. that if we do some @command the
restoration of setting of quiet mode is filtered out.


In -B mode we do it differently, as we invoke one shell per command we don't
have to insert quiet/verbose commands and thus avoid all the piping/parsing
dance.

So my question is - why don't we invoke one shell per command by default
and avoid the piping/parsing? Is this because of performance? I think that
the piping/parsing of the output can have worse impact than invoking a shell
for every command. Especially given that most targets consists of just one
command.

Thank you for the answer!

Roman



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110427193946.GA41659>