RFR: JDK-8072023: Investigate and upgrade the minimum supported gnumake for JDK 9, from 3.81 to 4.0

Erik Joelsson erik.joelsson at oracle.com
Thu Apr 16 09:29:49 UTC 2015


On 2015-04-16 11:05, Magnus Ihse Bursie wrote:
> On 2015-04-15 09:41, Erik Joelsson wrote:
>> Please review this change to README-builds.html. I have updated all 
>> references to the GNU make version to specify that we recommend 4.0 
>> or later on Windows. Cygwin has been shipping with 4.x for a long 
>> time now and we have been using it internally since the source code 
>> layout change. Using older versions of make, particularly 3.81 
>> version commonly used for JDK 7, has been known to cause trouble with 
>> the JDK 9 (post src reshuffle) build. While 3.82.x versions probably 
>> still works in many cases, I would rather have us move to 4.x since 
>> there are features there we would eventually like to be able to use.
> Am I just a backwards old-timer if I think we should still support 
> 3.81? It's one thing to recommend 4.x to users, I'll agree with that 
> anytime, but should we require 4.0 by a check in configure, or a warning?
>
The "job server", which we rely heavily on in the post source-shuffle 
JDK 9 build, was not implemented in gnu make on Windows until 4.0, at 
least according to the NEWS file in the gnu make source distribution. I 
think I have seen Cygwin versions of gnu make 3.82.x sort of working 
with the job server, but I wouldn't trust that. There have also been 
multiple issues reported with the build that have simply been solved by 
using a newer (4.x) gnu make. Internally at Oracle, we have been using a 
special build of gnu make 3.81 for a long time and that version 
specifically crashed/misbehaved consistently in the new JDK 9 build.

Given all this, I find very little motivation to spend time trying to 
work around apparent issues in certain versions of gnu make on Cygwin, 
when the simple solution is to just upgrade. Especially given how simple 
it is to upgrade (Cygwin practically forces you to do it anyway). If 
someone else would like to spend this time, I won't object, but taking 
https://bugs.openjdk.java.net/browse/JDK-8071651 as an example of 
inconsistencies between versions, that person would also need to 
dedicate time to keep verifying that it's working.

I certainly agree that we shouldn't force gnu make 4.0 on all platforms 
as many linux distributions, Solaris etc are still shipping with 3.81 so 
keeping compatibility there is convenient. However, for Cygwin, that 
case cannot be made.

This all applies to Cygwin since that's the UNIX emulation environment 
we use. In msys things may be different. I would only propose this 
configure check when running on Cygwin for now.

/Erik



More information about the build-dev mailing list