Joey Hess wrote: > Making all builds verbose by default has both advantages and > disadvantages. > > The disadvantages include making builds possibly so noisy that when one > runs them during daily work, once ignores all output. Including > important compiler warnings. > > (This is the same reason why it's a bad idea to let a codebase > accumulate a lot of compiler warnings!)
At DebConf, Enrico came up with this idea: When the package is building with the display going to the console, something could intercept the stdout and convert \n to \r. Let stderr through untouched. The result would be a build that makes it *very* easy to focus on the warnings, while still providing a progress display of what is going on at any given moment in the build. I've attached a simple proof of concept you can try it out with building your own packages. For example: dpkg-buildpackage | ssssssh (The implementation needs to be improved; it should read both stdout and stderr and multiplex them properly. And it should check if stdout is not to a TTY, and if so avoid munging the build log output. The only other problem is that `make` outputs the lines it runs to stderr and so those continue to pollute the build display.) I'd like to see dpkg-buildpackage modified to use something like this by default, because it would reduce the level of cruft we wade through (often up to our eyeballs) when building packages, and allow concentrating on what's important. At the same time, it allows adding as verbose output as we like and getting that saved in the build logs for when a detailed analysis is needed. -- see shy jo
#!/usr/bin/perl $|=1; my $width=$ENV{COLUMNS} || 80; while (<>) { chomp; print substr($_, 0, $width - 1).(" " x ($width - 1 - length $_))."\r"; }
signature.asc
Description: Digital signature