RFR: JDK-8072023: Investigate and upgrade the minimum supported gnumake for JDK 9, from 3.81 to 4.0
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.
More information about the build-dev