svn commit: r228157 - head/usr.bin/make

Max Khon fjoe at FreeBSD.org
Thu Dec 1 04:05:57 UTC 2011


Alexander,

On Thu, Dec 1, 2011 at 7:16 AM, Alexander Best <arundel at freebsd.org> wrote:

> Author: fjoe
> > Date: Wed Nov 30 18:07:38 2011
> > New Revision: 228157
> > URL: http://svn.freebsd.org/changeset/base/228157
> >
> > Log:
> >   - Fix segmentation fault when running "+command" when run with -jX -n
> due
> >   to Compat_RunCommand() being called with `cmd' that is not on the
> node->commands
> >   list
> >   - Make ellipsis ("..." command) handling consistent: check for "..."
> command
> >   in job make after variables expansion to match compat make behavior
> >   - Fix empty command handling (after variables expansion and @+-
> modifiers
> >   are processed): now empty commands are ignored in compat make and are
> not
> >   printed in job make case
> >   - Bump MAKE_VERSION to 5-2011-11-30-0
>
> it would also be nice, if at some point, somebody could dive into the code
> to
> see why 'make buildkernel' will let clang produce coloured output, but
> 'make -j(N>1) buildkernel' doesn't (and why adding a -B switch to that
> command
> fixes it).
>

This one is simple: job make (-jX) runs commands with stdin/stdout/stderr
redirected to pipes.
-B turns on compat mode for job make.

This can be demonstrated by running make with -jX or -jX -B with the
following Makefile:
--- cut here ---
all:
        @if [ -t 1 ]; then echo "stdout is a tty"; else echo "stdout is not
a tty"; fi
--- cut here ---

If you really want to see colored output in -jX case you should teach clang
to output ANSI color sequences not only in isatty(1) case, but also
when MAKE_JOBS_FIFO environment variable is present (it is set when make
runs in job mode).

Max


More information about the svn-src-head mailing list