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:
>>> 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
>>> 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
>>>> * Support .S assembly files
>>>> * Expose USERNAME outside configure
>>>> * Fix broken indentation
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8148655
More information about the build-dev