RFR: JDK-8148655 LOG=cmdlines and other build-infra fixes

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Tue Feb 2 11:03:40 UTC 2016

On 2016-02-02 09:49, Erik Joelsson wrote:
> On 2016-02-01 22:36, Magnus Ihse Bursie wrote:
>> On 2016-02-01 16:01, Erik Joelsson wrote:
>>> Hello,
>>> InitSupport.gmk:
>>> The comment still refers to ",nofile".
>> I'll fix.
>>> I would probably have made an effort to replace "$(ECHO) $(call 
>>> ShellQuote, $2) > $(strip $1).cmdline &&" with a call to WriteFile.
>> I did think about that, yes. However, I didn't figure out a 
>> satisfactory way to solve it. The problem is that WriteFile, on GNU 
>> Make < 4, results in a $(shell) call, which seemed worse than a 
>> chained call to echo, when we already is in a shell command line in a 
>> recipe. I wasn't too keen on creating a WriteFileInRecipe version 
>> either. So I couldn't figure out a way to do that that I was happy 
>> with. But I'm open to suggestions (or even better, working code :-)).
> I realize a $(shell) call isn't ideal, but the performance difference 
> will most likely only be noticeable on Windows, where we know we have 
> $(file) anyway.


Here's a version where ExecuteWithLog has gotten even more TLC:

Changes, compared to the previous webrev, are in the files 
JavaCompilation.gmk, MakeBase.gmk and InitSupport.gmk.

The following changes has been made since the last webrev:
* Use WriteFile in ExecuteWithLog
* Introduce and use LogCmdlines in ExecuteWithLog, to use $(info) 
instead of echo.
  (Together, these two also has the benefit och making LOG=debug more 
* Introduce and use LogWarn to get correct order of logging (due to 
* Remove one layer of subshells ( ... ) which improves performance slightly
* Call MakeDir instead of MKDIR.
* Fix MakeDir to properly support a list of directories


> /Erik
>> /Magnus
>>> /Erik
>>> On 2016-01-30 11:27, Magnus Ihse Bursie wrote:
>>>> This is yet another collection of fixes from the build-infra 
>>>> hotspot project forest that has a stand-alone value.
>>>> The most important change is the support of a new log option, 
>>>> cmdlines. This is, like the old "nofile", an option that can be 
>>>> added to a log level, e.g. "LOG=info,cmdlines" or used standalone 
>>>> "LOG=cmdlines" (in which case the log level stays at default). With 
>>>> this in place, the command line of "important" commands are 
>>>> printed. Examples of "important" commands are compiler and linker 
>>>> calls. Examples of "non-important" commands are "mkdir" or "cat". 
>>>> Note that at this point, not all "important" calls are identified, 
>>>> typically in esoteric stuff like gensrc.
>>>> Apart from this, a few other changes are also included:
>>>> * Allow DEBUG_SYMBOLS to be individually turned off (follow up to 
>>>> JDK-8145596)
>>>> * Support .S assembly files
>>>> * Expose USERNAME outside configure
>>>> * Fix broken indentation
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8148655
>>>> WebRev: 
>>>> http://cr.openjdk.java.net/~ihse/JDK-8148655-LOG-cmdlines-and-misc-fixes/webrev.01
>>>> /Magnus

More information about the build-dev mailing list