(original) (raw)
Best regards,
Behrang SaeedzadehOn 19 May 2018 at 22:30, Remi Forax <forax@univ-mlv.fr> wrote:
----- Mail original -----
\> De: "Alan Bateman" <Alan.Bateman@oracle.com>
\> À: "org openjdk" <org.openjdk@io7m.com>, "jigsaw-dev" <jigsaw-dev@openjdk.java.net>
\> Envoyé: Samedi 19 Mai 2018 13:26:55
\> Objet: Re: Compiling module descriptors is not reproducible?
\> On 19/05/2018 10:18, Mark Raynsford wrote:
\>> Hello!
\>>
\>> I've been interested for a while in making all of my software builds
\>> reproducible \[0\]. I don't think there's ever been any kind of
\>> written guarantee that the output of javac will be completely
\>> deterministic, but to date it seems like it actually has been. However,
\>> I was a bit disappointed today to find that the output of one of the
\>> builds at AdoptOpenJDK \[1\] seems to be inserting compiler version
\>> information into compiled module descriptors. It doesn't seem to be
\>> doing this for any other class files.
\> The requires table in the Module attribute can be used by compilers to
\> record version information about dependences. javac does record the
\> version information, I don't know if there is a way to disable that.
It seems there is no way:
http://hg.openjdk.java.net/jdk/jdk/file/5ec7380f671d/src/ jdk.compiler/share/classes/ com/sun/tools/javac/jvm/ ClassWriter.java#l986
\> In any case, I assume your question will be partly answered by looking at
\> the output of \`java --list-modules\` on the different builds. If you
\> download OpenJDK builds from jdk.java.net/10 then you should see that
\> the standard and JDK-specific modules all report their version string as
\> "10" or "10.0.1" as they have been built with configure options that
\> make it so. At a guess, your mail may have included the output from an
\> exploded (as opposed to images) build.
\>
\> -Alan
Rémi