-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hosting OpenJDK upstream reference builds for JDK 8u and JDK 11u #65
Comments
Added a TSC Agenda label for this, some early thoughts:
I'm personally in favor of supporting this. |
Thanks.
Not sure about the technicalities, but if it's easy enough to achieve, I'd rather not have it listed on the website or API. If that's technically problematic, not actively advertising them should be sufficient. They will show up at the upstream Wiki page. Consider that those builds are not plain AdoptOpenJDK binaries (built in a different way, tested in a different way) so this could be confusing for users. Yet, the source they were produced from would be the same.
Final builds will have been tested by Red Hat. So not necessarily. However, it would be good to run EA builds as soon as they are available through the pipeline so as to increase test coverage. Depending on the tree/tag JDK 11 nightlies from Adopt build from I don't really expect differences, at this point. Provided nightlies build from jdk-updates/jdk11u and jdk8u/jdk8u testing of nightlies should have the same effect. |
This is getting urgent. We need to get this done soon, in order to give the pre-CPU binaries a decent amount of public Beta testing before the CPU release. I'd love to put these on Adopt. |
I guess these are all questions for Adopt's internal processes, not questions for us. |
I've asked the TSC to meet ASAP to work through this. |
Thanks. Our Windows binaries aren't quite ready yet, so it'll be just x86 linux for now. |
We did not have Qurom to vote on this so I'm writing this up further and if clear enough we 'll attempt a virtual asynchronous vote. A broad question for the TSC is whether AdoptOpenJDK through it's API and website distribute binaries built elsewhere? And as a subtext, is doing this for the Reference Implementation a special case? Option 1 - do this all at AdoptOpenJDK:
Option 2 - Use AdoptOpenJDKs infrastructure as code If the elapsed time of option 1 takes too long (due to technical and/or policy work) then Red Hat could still easily use our infrastructure as code. That is:
|
@jerboaa Please help clarify the ask:
The term "Reference Implementation" (RI) relates to the JCP JSR triform delivery of Spec, RI, and TCK. OpenJDK produces the RI for each platform JSR at the point it goes GA, as you can see on the page you linked to above. The RI binaries for Java 8 and Java 11 are published once and don't change. So it seems we are talking about hosting builds of the JDK8 updates and JDK11 stream JDK updates projects' releases - but we do that already. So what is the ask? That we host binaries of those releases that are built by Red Hat rather than AdoptOpenJDK? The mission for AdoptOpenJDK is to have an "open and auditable" build, test, and distribution community. I don't yet see the proposal for how we achieve that by taking binaries built elsewhere. Is the plan that we link to Red Hat's open build system/build definitions somehow? |
Sorry for the confusion. I probably shouldn't have used the term "reference binary builds" in this context. However, those would be builds done elsewhere and would give you a baseline in terms of bugs/regressions in AdoptOpenJDK binaries too. I could see this being helpful for triage purposes.
Not quite. AdoptOpenJDK builds use "AdoptOpenJDK" in the version string (vendor). Plain upstream binaries would not have that. AdoptOpenJDK has a concept of "nightly" builds. But it's not clear what those nightly builds are built from (specific tag? head of some repository? which repository?). We hope to provide early access (EA) builds too. See below.
Yes. As a replacement for Oracle provided JDK 11 GPL builds. They didn't have JDK 8 builds AFAIK. We want to provide them for 8 too. Another item we'd like to address is for people to get EA builds of the upcoming CPU releases (modulo embargoed patches of course). Historically speaking there have been patches in CPU releases which weren't security fixes, but didn't get pushed into the open until the CPU release. Some of those fixes may cause regressions. We intend to change that. EA builds would be based on upstream build tags like
We'd be providing instructions on how to reproduce our builds in their own setup. Scripts can be shared. There is absolutely no secret sauce. The binary builds would have the same "open and auditable" promises AFAICS. Once the CPU releases are GA, AdoptOpenJDK would pick those changes up as well and builds would converge to the same basically (modulo bugs, vendor string, etc.) Rinse, repeat. Another hope is to be able to run Red Hat builds through the AdoptOpenJDK test pipeline. As I understand it, though, that can be done without actually hosting the binaries at AdoptOpenJDK. |
On 3/19/19 11:09 PM, Tim Ellison wrote:
So it seems we are talking about hosting builds of the JDK8 updates
and JDK11 stream JDK updates projects' releases - but we do that
already. So what is the ask? That we host binaries of those releases
that are built by Red Hat rather than AdoptOpenJDK?
This is not about Red Hat.
When it was maintaining OpenJDK 8, Oracle provided two sets of
binaries: their own customized ones which make up the proprietary JDK
and "community" OpenJDK builds with no changes at all from the
upstream open sources. The latter came with no support. There is now a
gap in that the vanilla builds aren't available, and as 8u and 11u
lead I need to fill that gap.
Red Hat, like many other suppliers of JDKs based on OpenJDK,
customizes its builds for a variety of reasons, in particular
integration with the OS. The purpose of these binaries, on the other
hand, is to replace the community builds that Oracle provided. They
are not a Red Hat product, although I am grateful that we can use the
Red Hat infrastructure to test and build them.
Of course there are other places that the jdk updates projects could
use to host these binaries, but appearances matter. I believe that
Adopt would be a good place to come together as a community and show
unity of purpose.
…--
Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671
|
While I'm a touch nervous about a precedent of hosting binaries built outside our setup at adoptopenjdk, I think this is a special case and I'm tentatively in favour of it I think. As per previous comments we'd need to thrash out how to store and link to it. Perhaps it'd be another
|
Right now they are called: We are going off on a tangent as this would be concerned about the implementation not the generic TSC yes/no kind of decision. Anyhow. What would be the expectation of a tarball file name? |
Understood - I was thinking out loud on how practical it will be before making my decision :-) As long as it has an identifier in the filename ( |
On the |
Slightly massaged statement from @theRealAph (hopefully I didn't alter his meaning) that sparked a question for me :
I had thought the Hotspot based AdoptOpenJDK builds use "pure" OpenJDK source code with no additional patches other than maybe some "cosmetic" ones to change vendor/provider properties. So, question for the AdoptOpenJDK folks: are there any other patches being applied by AdoptOpenJDK in those builds? In terms of differences between AdoptOpenJDK "Hotspot" builds and the vanilla builds @theRealAph describes, there would also be the small number of third party libraries (e.g. bundling or not of Freetype, based on platform), which aren't actually part of OpenJDK. Call me naive (wouldn't be the first time!), but if the only significant differences come down to cosmetics and some small set of bundled libraries, would it not make sense to align how these two OpenJDK binary builds are done and then only do one of them? I would think that would benefit everyone operating in the open Java community... |
We initially thought that but it's possible that AdoptOpenJDK will add patches going forwards with regards to cacerts and making sure that things like IcedTea-Web and OpenJFX are first class citizens (I'm musing out loud here - this is not any official statement) |
There are a couple of other issues. Firstly, there's the build dependencies: we build on a RHEL 6 system (i.e. pretty old) because glibc is backwards compatible, thus allowing the OpenJDK system to run on anything more recent than that. I don't think you would really want to restrict yourself always to use vanilla sources, but you could choose to do that. It is possible, though, that on some systems you'd need to patch in order to pass compatibility tests. |
So, AdoptOpenJDK would need to be able to build their master branch (presumably these other things are brought in via separate branch(es) ?) and would need RHEL 6 systems in their farm to do the builds (I guess the RHEL6 dependency is from Oracle's original OpenJDK builds? =). Aren't the other things just variations (along the lines of "do you want Hotspot or OpenJ9?" and "What platform do you want it for?") ? Oversimplifying but: "Do you want IcedTea-Web?" "Do you want OpenJFX?" "Whose cacerts file do you want?" "Do you want pure source OpenJDK build?" (which would clearly decide many of the other questions). Sorry if I seem pushy, I just want to see where the concept really breaks down. I realize variations can become difficult to describe and complicates lots of things from UI to reporting and triaging problems to verifying fixes, but having the build, test, and distribution in one open community seems like a really nice "feature" for the community (and really puts the "OpenJDK" in "AdoptOpenJDK" :) ). |
TSC debated this at length and the vote was yes to approve this. I'll raise tickets in the various repos to track this work. |
It was decided that AdoptOpenJDK may well add new features and patches that were significantly different (at the core) |
This has been done (first incarnation) - we'll hook the upstream builds properly into APIv3 going forwards. |
After Red Hat took over upstream OpenJDK leadership of the jdk8u project and the jdk11u stream of the jdk-updates project there is a desire to provide reference binary builds for the community. This is similar to what Oracle does via jdk.java.net. AdoptOpenJDK seems to have the required infrastructure to host those binaries. We, Red Hat, would like to host them on AdoptOpenJDK and link to them from the upstream JDK 8u wiki and JDK 11u wiki pages for the community to use.
At this point, Red Hat has JDK 11 early access builds available for Linux x86_64, version 11.0.3+2. JDK 8 will follow shortly as soon as the first upstream tag for 8u212 arrives. The builds have been done on Red Hat infrastructure and scripts as to how those builds have been produced could be shared with the community if there is a desire.
Initially, there will be Linux x86_64 builds. Other reference binary builds may come for future updates.
The text was updated successfully, but these errors were encountered: