Reproducible builds on Java
Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Mon Sep 6 09:17:46 UTC 2021
I'm working for Oracle in the Build Group for OpenJDK , which is
primary responsible for creating a built artifact of the OpenJDK source
code. I also have a general interest in all things about building in
general, so I've been lurking on this list for a while. :-)
For the last few years, we have worked on a low-effort, background-style
project to make the build of OpenJDK itself building reproducible. We've
come far, but there are still issues I'd like to address. (If you have
any feedback on building OpenJDK itself reproducible, you're welcome to
contact me directly, or on the build-dev at openjdk.java.net mailing list ).
But a larger issue than OpenJDK itself is to make sure that the tools
from the JDK are creating reproducible builds for all Java projects out
there. In general, we're doing good (any noticed nondeterminism in javac
is considered a bug and is fixed promptly), but there are other output
apart from class files where we've been less good.
There is a current effort to fix the timestamps in .properties files.
See the PR here , or the preceding discussion on the mailing list
. If anyone from the reproducible builds community has something to
add to the discussion, now is the time to make your voice heard.
I have recently looked through the tests.reproducible-builds.org site
for Java-specific problems listed. Most of them seem to be
project-specific, or due to tools outside of the JDK. But one about
javadoc caught my eye . I talked to one of the javadoc engineers, and
he think that any nondeterminism is due to old versions (prior to JDK
9), which should have been fixed since long. I don't understand how to
get any further from this page to get more details on the problem. If
someone could help me by pointing to specific bug reports on javadoc
generating nondeterministic output, that'd be very helpful.
More information about the rb-general