Message ID | 20200825064342.2037-1-kraxel@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | meson: set colorout to auto | expand |
Hi On Tue, Aug 25, 2020 at 10:44 AM Gerd Hoffmann <kraxel@redhat.com> wrote: > Dunno why the default is set to "always". IMHO it should be "auto", > i.e. only colorize in case stdout goes to a terminal. Cluttering > logfiles and confusing compiler message parsers with terminal control > sequences is not nice ... > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > "Enable colored output with GCC. Ninja redirects stdout/stderr so by default GCC thinks it is not talking to a terminal" https://github.com/mesonbuild/meson/commit/4f63fe498314c385de2d3b6a3a953d15985914d2 Since we use make, I don't know if it's any better. Perhaps meson should set compiler/tools colors = always/never based on what it is connected to at configure time instead?
On Tue, Aug 25, 2020 at 10:59:42AM +0400, Marc-André Lureau wrote: > Hi > > On Tue, Aug 25, 2020 at 10:44 AM Gerd Hoffmann <kraxel@redhat.com> wrote: > > > Dunno why the default is set to "always". IMHO it should be "auto", > > i.e. only colorize in case stdout goes to a terminal. Cluttering > > logfiles and confusing compiler message parsers with terminal control > > sequences is not nice ... > > > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > > > > "Enable colored output with GCC. Ninja redirects stdout/stderr so by > default GCC thinks it is not talking to a terminal" > > https://github.com/mesonbuild/meson/commit/4f63fe498314c385de2d3b6a3a953d15985914d2 Hmm, maybe ninja handles this then, by stripping the terminal sequences in case stdout isn't a terminal. With ninja being the default backend the default kind-of makes sense (for meson upstream) ... > Since we use make, I don't know if it's any better. ... but given qemu uses make not ninja we might prefer something else ;) As far I know make doesn't redirect output. Or maybe it redirects using a pty (instead of a pipe) in case stdout is a terminal. At least auto mode for colored gcc warnings works fine with make. It is colored when started in a terminal, it isn't when started in emacs (and piped through the emacs message parser). > Perhaps meson should set compiler/tools colors = always/never based on what > it is connected to at configure time instead? Why? Even when running configure in a terminal I might use emacs for builds later on. take care, Gerd
Hi On Tue, Aug 25, 2020 at 12:07 PM Gerd Hoffmann <kraxel@redhat.com> wrote: > On Tue, Aug 25, 2020 at 10:59:42AM +0400, Marc-André Lureau wrote: > > Hi > > > > On Tue, Aug 25, 2020 at 10:44 AM Gerd Hoffmann <kraxel@redhat.com> > wrote: > > > > > Dunno why the default is set to "always". IMHO it should be "auto", > > > i.e. only colorize in case stdout goes to a terminal. Cluttering > > > logfiles and confusing compiler message parsers with terminal control > > > sequences is not nice ... > > > > > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > > > > > > > "Enable colored output with GCC. Ninja redirects stdout/stderr so by > > default GCC thinks it is not talking to a terminal" > > > > > https://github.com/mesonbuild/meson/commit/4f63fe498314c385de2d3b6a3a953d15985914d2 > > Hmm, maybe ninja handles this then, by stripping the terminal sequences > in case stdout isn't a terminal. > > With ninja being the default backend the default kind-of makes sense > (for meson upstream) ... > > > Since we use make, I don't know if it's any better. > > ... but given qemu uses make not ninja we might prefer something else ;) > > As far I know make doesn't redirect output. Or maybe it redirects using > a pty (instead of a pipe) in case stdout is a terminal. At least auto > mode for colored gcc warnings works fine with make. It is colored when > started in a terminal, it isn't when started in emacs (and piped through > the emacs message parser). > > Then it looks like you have a legit patch. We can revert it when we switch back to ninja some day. Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > Perhaps meson should set compiler/tools colors = always/never based on > what > > it is connected to at configure time instead? > > Why? Even when running configure in a terminal I might use emacs for > builds later on. > > take care, > Gerd > >
On 8/24/20 11:43 PM, Gerd Hoffmann wrote: > Dunno why the default is set to "always". IMHO it should be "auto", > i.e. only colorize in case stdout goes to a terminal. Cluttering > logfiles and confusing compiler message parsers with terminal control > sequences is not nice ... > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > --- > meson.build | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) Yes please. All the color escape codes has broken emacs make next-error. Although applying this doesn't seem to have helped... r~
On Tue, Aug 25, 2020 at 06:26:33AM -0700, Richard Henderson wrote: > On 8/24/20 11:43 PM, Gerd Hoffmann wrote: > > Dunno why the default is set to "always". IMHO it should be "auto", > > i.e. only colorize in case stdout goes to a terminal. Cluttering > > logfiles and confusing compiler message parsers with terminal control > > sequences is not nice ... > > > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > > --- > > meson.build | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > Yes please. All the color escape codes has broken emacs make next-error. > > Although applying this doesn't seem to have helped... meson remembers the state of the options, so running a build alone doesn't help. rm -rf $builddir and starting over will pick up the new default. You can probably also use "meson configure $something". HTH, Gerd
On 25/08/20 10:11, Marc-André Lureau wrote: > > As far I know make doesn't redirect output. Or maybe it redirects using > a pty (instead of a pipe) in case stdout is a terminal. At least auto > mode for colored gcc warnings works fine with make. It is colored when > started in a terminal, it isn't when started in emacs (and piped through > the emacs message parser). > > Then it looks like you have a legit patch. We can revert it when we > switch back to ninja some day. > > Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com > <mailto:marcandre.lureau@redhat.com>> > make has the same issue if you use -O/--output-sync. Programs are supposed to check MAKE_TERMOUT and MAKE_TERMERR to decide whether to colorize output, but I think pretty much no one does? In any case this would not be a new issue, so b_colorout=auto is preferrable. Paolo
diff --git a/meson.build b/meson.build index df5bf728b57a..558e0139768f 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,6 @@ project('qemu', ['c'], meson_version: '>=0.55.0', - default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_lundef=false'], + default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', + 'b_lundef=false','b_colorout=auto'], version: run_command('head', meson.source_root() / 'VERSION').stdout().strip()) not_found = dependency('', required: false)
Dunno why the default is set to "always". IMHO it should be "auto", i.e. only colorize in case stdout goes to a terminal. Cluttering logfiles and confusing compiler message parsers with terminal control sequences is not nice ... Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- meson.build | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)