RFR (preliminary): JDK-8056999 Make hotspot builds less verbose on default log level
Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Fri Sep 5 09:53:23 UTC 2014
On 2014-09-04 06:35, David Holmes wrote:
> Hi Magnus,
> On 1/09/2014 10:11 PM, Magnus Ihse Bursie wrote:
>> Even in the default log level ("warn"), hotspots builds are extremely
>> verbose. With the new jigsaw build system, hotspot is build in parallel
>> with the jdk, and the sheer amount of hotspot output makes the jdk
>> output practically disappear.
>> This fix will make the following changes:
>> * When hotspot is build from the top dir with the default log level, all
>> repetetive and purely informative output is hidden (e.g. names of files
>> compiled, and the "INFO:" blobs).
> I think I probably want a default log level a little more informative
> than that - I like to see visible progress indicators. :)
>> * When hotspot is build from the top dir, with any other log level
>> (info, debug, trace), all output will be there, as before.
> Would be nice to have fixed the excessive/repetitive INFO blocks re
> FDS :) but that requires more than just controlling an on/off switch.
>> * When hotspot is build from the hotspot repo, all output will be there,
>> as before.
>> Note! This is a preliminary review -- I have made the necessary changes
>> for Linux only. If this fix gets thumbs up, I'll continue and apply the
>> same pattern to the rest of the platforms. But I didn't want to do all
>> that duplication until I felt certain that I wouldn't have to change
>> something major. The changes themselves are mostly trivial, but they are
>> all over the place :-(.
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8056999
> Seems to be some overlap with the $(QUIETLY) mechanism - but to be
> honest I always have trouble remembering how that works. In looking at
> it now it seems to me that "$(QUIETLY) echo" is incorrect as the text
> is always echoed, what gets suppressed is the echoing of the echo
> command itself - which seems pointless. So I think all "$(QUIETLY)
> echo" should just be @echo.
I believed that QUIETLY was either set to empty or to @ (default), to
supress output of the actual command. And yes, ever seeing the actual
echo command as well as the output seems pointless, so it could probably
have been @ instead.
But there is no overlap there with my fix. The QUIETLY / @ only handles
whether the echo command itself is written by make before it is
executed. The output is always written anyway, and that is what my fix
> But then replacing @echo with a $(ECHO) that may be silent would seem
> a bit cleaner that "@echo $(LOG_INFO). (Not sure what you are doing in
> the rest of the build).
So what I am doing here is applying the same pattern as we have in the
rest of build-infra. There we have a group of macros (LOG_WARN,
LOG_INFO, LOG_DEBUG and LOG_TRACE). The evaluate to either empty, or to
" > /dev/null". This means that you can determine the log level you want
this particular output to be on, and it's fairly readable what the
intention is. E.g.:
$(ECHO) $(LOG_DEBUG) Starting clusterfrizz process now
It is non-trivial to export these to hospot, so I only copied the
definition of the one I care about for now, LOG_INFO.
I don't think it's a good idea to change $ECHO, since it is used like this
$(ECHO) # Generated file, do not edit! > tmp/myfile.h
You *could* introduce a new $(ECHO_LOG_INFO) or so, but I don't think
it's better. A valuable effect of the build-infra pattern is that it can
be applied to any command (such as build tools), not just echo.
> print_info is nice.
More information about the hotspot-dev