Compiling module descriptors is not reproducible?
Mark Raynsford
org.openjdk at io7m.com
Sat May 19 14:01:40 UTC 2018
On 2018-05-19T12:26:55 +0100
Alan Bateman <Alan.Bateman at oracle.com> wrote:
>
> 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. 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.
That's a good point: What I thought I was looking at was the compiler
inserting it's own version into the class file (as in "this class file
was compiled by compiler version 10-internal") as opposed to the
versions of the modules being inserted.
Having the platform module versions present still implies
non-reproducibility but perhaps that's workable in some way.
On 2018-05-19T13:49:40 +0200
Remi Forax <forax at univ-mlv.fr> wrote:
> I think it's the opposite, by default the compiler add the version of the required module,
> so the AdoptOpenJDK version does the right thing, you should have the module compiled version by default,
> the real question is why the compiler of the openjdk version 10.0.1 doesn't generate the required module version.
That is another good point! This build is the one distributed on Arch
Linux. This was the procedure used to build it (no patches are applied):
https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/java10-openjdk#n58
--
Mark Raynsford | http://www.io7m.com
More information about the jigsaw-dev
mailing list