[RFR]: 8187004: No valid toolchains defined for BSD

dalibor topic dalibor.topic at oracle.com
Thu Aug 31 10:14:10 UTC 2017

(CC:ing bsd-port-dev, where this conversation should have moved to a 
while ago ...)

On 31.08.2017 10:53, John Paul Adrian Glaubitz wrote:
> There is an active community maintaining OpenJDK on BSD. The problem is
> just that they are doing it downstream instead of working together with
> upstream due to lack of communication. I think that is a problem that can
> be fixed though.
> I will try to get these people join the upstream mailing list.

As far as I know, most of the people who actively maintain the BSD ports 
in various BSD distributions are already Committers on the BSD port Project:

Per http://openjdk.java.net/census#bsd-port

Greg Lewis (Project Lead, FreeBSD) & Jung-uk Kim (FreeBSD)
Christos Zoulas (NetBSD)
Kurt Miller (OpenBSD)

The FreeBSD Foundation is an OCTLA signatory: 

Unfortunately, no one has produced a build of the OpenJDK BSD port that 
passes the JCK yet, as far as I know.

The challenge in the past has been that the time the individual BSD Port 
developers have generously been able to spend on keeping the BSD port up 
and running (Greg just updated the JDK 8 forest with latest changes, 
while Kurt fixed a set of compilation issues this month - thanks!) [0] 
was not sufficient to simultaneously let them make enough progress on 
integrating their port into mainline JDK. Maybe the BSD porters are 
interested in having more individuals help with the various tasks around 
that - but it's also worth keeping in mind that the set of individuals 
who speak up wanting to help out with the port on bsd-port-dev is less 
than a handful per year.

One of the conditions for getting a port into JDK mainline has been that 
it should actually pass the JCK for the current version. I think that's 
a low enough bar that should remain in place for JDK 9 and beyond.

Here's a slightly updated version of what I wrote about getting BSD 
ports into mainline back in 2014 as part of a conversation with Greg 
about it:

In general, ports should come in through the 'next release' project, 
i.e. JDK9/10 currently, as that is where most of the development 
happens, and so that's the best place to review and integrate the 
changes going forward. Well, JDK 10, really, at this stage of JDK 9 

* At this point in time, I'd be very pessimistic about adding new ports 
further back to the JDK 8 Updates Project or earlier, as they are more 
focused on bug fixes and stability, rather than adding features.

* For a port to get into mainline, it needs to have a JEP, and the JEP 
needs to be funded. Basically, someone needs to sign up to do all the 
necessary work.

See http://openjdk.java.net/jeps/175 for the JEP for the PowerPC64 
AIX/Linux port JEP, for an example, of what a JEP for a port should look 
like. See http://openjdk.java.net/jeps/1 for details,
and http://cr.openjdk.java.net/~mr/jep/jep-2.0-02.html for the revision 
of the JEP process.

* All source code changes need to be reviewed by the respective 
reviewers for mainline, as usual. This typically implies for a port's 
integration that it's a non-trivial effort on the side of Reviewers from 
Oracle and other port maintainers to ensure that changes proposed for 
review actually get timely reviews. Depending on how much there is to 
review, you'd want to get a plan in place that lets everyone plan their 
involvement in the review process accordingly, rather than just posting 
a bunch of patches for review on several mailing lists and hoping for 
the best.

* Each port is slightly different - some touch only a few files, others 
bring in new subsystems for graphics, native code, programming 
languages, CPUs, core libraries, etc.

So while in some cases integrating a port can be rather straightforward, 
because it touches only a limited set of files, in other cases it can be 
a complicated undertaking that requires several synchronization points, 
planning, and efficient execution from many parties to pull it off in 
time for a JDK release feature freeze. I.e. if you want to get a new 
port into mainline you'd need to get started early in a JDK release cycle.

* Testing is very important - a port should not introduce regressions, 
for example. It should also pass the JCK for the current release. The 
JDK mainline has rather strict rules about reviews, and processes to 
follow, which makes it an inconvenient place to finish off an unfinished 
port - that's what the porting projects are for.

* Once a port get into the mainline JDK project, it's expected to be 
kept up to date by its maintainers - which  means keeping up with the 
regular stream of changes - for example, the integration of Jigsaw into 
JDK 9 resulted in some build system changes (because of modules), and it 
would be up to each port's maintainers to make sure that they keep their 
port in sync in tree.

dalibor topic


<http://www.oracle.com> Dalibor Topic | Principal Product Manager
Phone: +494089091214 <tel:+494089091214> | Mobile: +491737185961

ORACLE Deutschland B.V. & Co. KG | Kühnehöfe 5 | 22761 Hamburg

ORACLE Deutschland B.V. & Co. KG
Hauptverwaltung: Riesstr. 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Jan Schultheiss, Val Maher

<http://www.oracle.com/commitment> Oracle is committed to developing
practices and products that help protect the environment

More information about the bsd-port-dev mailing list