Nice work!

I wonder what happens if you invoke this target from the build output directory? I can imagine it not working too well, but would like a graceful exit in that case.

/Erik

On 2015-09-17 06:41, Magnus Ihse Bursie wrote:
A common scenario in when working in the build system is to want to check if a particular change results in a change in the build output or not, or a more detailed analysis of such changes.

The compare.sh tool will provide such an analysis, but only if you have a pre-built baseline to compare with.

To facilitate testing changes, especially on distributed job servers, we should add a COMPARE_BUILD make control variable. If this variable is present, the build will run twice, the second time with the code that should be tested (particular make targets, configure arguments, or with a patch file applied), and then automatically run the compare script afterwards against the baseline.

The suggested format allows for a very fine-grained control, by further parsing the value of COMPARE_BUILD into separate parts. The syntax looks like this: COMPARE_BUILD=CONF=<configure options>:PATCH=<patch file>:MAKE=<make targets>:COMP_OPTS=<compare script options>|<default>

If neither CONF or PATCH is given, assume <default> means CONF if it begins with "--", otherwise assume it means PATCH. Either CONF or PATCH must be given, directly specified or by using the default syntax. The rest of the key/value pairs are optional, and they may come in any order.

MAKE and COMP_OPTS can only be used with CONF and/or PATCH specified. If any value contains "+", it will be replaced by space. If just a single value is specified, it can contain spaces, e.g. "COMPARE_BUILD=CONF=--enable-debug --with-special-sauce". (For technical reasons, this is not possible if using multiple, colon-separated key=value pairs).

Values given in CONF and MAKE are appended to the normal configure command line and make target list, respectively, when building the second comparison round.

The patch file, if specified, could be either absolute or relative to TOPDIR.

COMP_OPTS is additional options to pass to compare.sh.

Bug: https://bugs.openjdk.java.net/browse/JDK-8136695
WebRev: http://cr.openjdk.java.net/~ihse/JDK-8136695-compare_build/webrev.01

/Magnus


Reply via email to