RFR: JDK-8200083: Bump bootjdk requirement for JDK 11 to JDK 10
erik.joelsson at oracle.com
Thu Mar 22 14:54:10 UTC 2018
On 2018-03-21 15:07, Martin Buchholz wrote:
> Now that we are releasing jdks an order of magnitude faster than
> before, we should reconsider the N-1 boot jdk policy.
> The primary beneficiaries of this are compiler-dev, who might like to
> code using the very features they are implementing.
Not just, we have had numerous tedious workarounds in the build for
supporting different bootjdk versions (for just N and N-1) already and
by adding more versions to that list, that kind of logic will balloon
greatly. Maintaining a build that supports many different environments
is hard, so being able to limit any variable helps. In practice there
will still be the one version of boot jdk used by the automated build
farms at Oracle and other places, which means any other boot jdk version
is bound to break at times (as we already see for bootjdk version N
often enough). It adds a complexity to the test matrix of the build that
I think few OpenJDK developers are interested in keeping up with (as in,
your change worked fine in your environment, but broke when building
with bootjdk N-2.).
> But for users, being able to bootstrap with an ancient jdk is
> definitely convenient.
There are different classes of users here. OpenJDK developers who have
to build OpenJDK all day long every day. OpenJDK binary distributors who
set up automated build environments for producing binaries at regular
intervals. OpenJDK users who download the source to build it once for
their own system. These are the ones I can think of right now.
For the developer, downloading the latest released version of the
product they are developing every 6 months can hardly be such a big
hassle. Most I know create their own convenience scripts to wrap the
build with the configure parameters they commonly use so can easily
automate setting up builds for building various versions of JDK N.
For the binary distributor, again downloading the latest released
version, or using the latest version you built yourself for the previous
release can't be that hard. They are (hopefully) setting up automation
and this is just part of it.
Left are the users, who just wants to download and build from source to
use it. I agree that we should strive for making OpenJDK as easy as
possible to build for such users. However, getting any recent version of
OpenJDK is pretty easy. Since JDK 9 you can even get OpenJDK binaries
directly from jdk.java.net for the common main platforms.
Other people on this thread complained about building on more esoteric
platforms where they only had older JDKs available and general downloads
aren't available. Yes, having to build each JDK in succession would then
take time, but surely this is a one time cost if you just keep the
binaries around for released versions of the JDK. Also, we try to
maintain reasonable cross compiling support in the build system. I
recommend leveraging that.
> A good compromise might be to be able to bootstrap with the most
> recent LTS release (jdk 8) but it might already be too late for that.
Reintroducing support for bootjdk 8 when building JDK 11 will not
happen. We removed all the ugly workarounds needed for using a pre 9
bootjdk for 10 long ago.
Long term though, perhaps this idea would be reasonable given the
limited life time of non LTS. The required bootjdk would essentially be
EOL long long before the LTS JDK N is. On the other hand, that would
still be true for any bootjdk N-1 compared to JDK N. So given that, I'm
> On Wed, Mar 21, 2018 at 2:51 PM, Erik Joelsson
> <erik.joelsson at oracle.com <mailto:erik.joelsson at oracle.com>> wrote:
> Now that JDK 10 has been officially released we can update the
> boot jdk requirement for JDK 11. Cross posting this to jdk-dev to
> raise awareness of this rather disruptive change.
> This patch changes the requirement on boot jdk version in
> configure (and updates the configuration that controls what JDK to
> use as boot in Oracle's internal build system).
> Webrev: http://cr.openjdk.java.net/~erikj/8200083/webrev.01/
> Bug: https://bugs.openjdk.java.net/browse/JDK-8200083
More information about the jdk-dev