I'd appreciate advice from maintainers of ports that use Java. What Java should
be installed on the buildbot workers?
Currently, only our Leopard and Snow Leopard buildbot workers have Java
installed, because Apple's Java was included in the Mac OS X installer. It's a
very old version (Java 2 build 1.5.0_30-b03-389-9M3425 on Leopard, Java SE
build 1.6.0_65-b14-462-10M4609 on Snow Leopard) but it's something.
Apple removed its Java from the OS X installer in Lion, and I have not
separately installed Java on the Lion and later buildbot workers, because I
didn't know what should be installed.
Apple's legacy Java 6 distribution can be installed on Lion and later up to and
including High Sierra, but Apple doesn't recommend it. They recommend using the
latest Oracle Java. Oracle Java 7 and 8 are compatible with Lion and later.
My understanding is that one must choose either Apple's Java 6 or Oracle's Java
7 or 8; they can't coexist.
I think I should probably install Oracle's latest Java 8 on the Lion and later
buildbot workers. Does that seem reasonable? I don't know if our java portgroup
is compatible with that. I also don't know what happens if we do that, and then
a user who has Apple's legacy Java 6 installed receives a binary archive of a
Java-using port. Does it work? Does it fail?
A second option is to install Apple's legacy Java 6 on the Lion and later
buildbot workers. I'm guessing this is not the right choice, since it is old
and probably has security problems. And the same questions arise again: Would
this be compatible with the java portgroup? And what happens if a user who has
Oracle Java 7 or 8 installed gets a binary archive built using legacy Java 6?
Does it work or fail?
A third option is to do nothing. I think this isn't great because it means that
ports that use Java fail on the Lion and later buildbot workers, which prevents
maintainers from learning about legitimate build failures their ports may have,
and prevents users from receiving binary archives of distributable Java ports.
However, if a Java port would build differently depending on whether Apple's
legacy Java 6 or Oracle's Java 7 or 8 is installed, we may have to prevent
distribution of binary archives of Java ports anyway, at least in the case
where we detect that the Java the user has installed is not the Java that we
decide to install on the buildbot workers.