Java port maintainers: What should be installed on the buildbot workers?
ryandesign at macports.org
Sat Feb 24 00:43:27 UTC 2018
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.
More information about the macports-dev