RFR: 8264449: Enable reproducible builds with SOURCE_DATE_EPOCH [v5]
John Neffenger
jgneff at openjdk.java.net
Sat May 7 22:33:50 UTC 2022
On Sat, 18 Sep 2021 15:15:10 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> John Neffenger has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains seven commits:
>>
>> - Make build of SDK ZIP bundle reproducible
>> - Merge branch 'master' into allow-reproducible-builds
>> - Merge branch 'master' into allow-reproducible-builds
>> - Include WebKit shared library for Windows
>>
>> Enable reproducible builds of the native WebKit shared library for
>> Windows (jfxwebkit.dll) when SOURCE_DATE_EPOCH is defined.
>> - Include media shared libraries for Windows
>>
>> Enable reproducible builds of the native media shared libraries for
>> Windows when SOURCE_DATE_EPOCH is defined. The libraries are:
>>
>> fxplugins.dll
>> glib-lite.dll
>> gstreamer-lite.dll
>> jfxmedia.dll
>> - Enable reproducible builds with SOURCE_DATE_EPOCH
>> - 8238650: Allow to override buildDate with SOURCE_DATE_EPOCH
>
> Here are couple more observations, and then I'll need to put this on the back burner for a bit:
>
> 1. I did a CI build yesterday and again today on all three platforms and compared the sdk between the two builds for each platform. On all three platforms the results are the same: All files were identical except the native jfxwebkit library. So there is something in the WebKit build that is affected by an external input (perhaps the system date or similar).
> 2. On Mac, at least, there are several differences in the dylib files between a build on my local system and on our CI system. I was using the same devkit and boot JDK on both, and both were the same version of macOS (10.15.7). Likely some difference in the software installed on the two systems matters.
@kevinrushforth Thank you, Kevin, for your review comments back in September. Your comment about the time zone was extremely helpful and indirectly helped with [openjdk/jdk#6481][1] as well. I think I have addressed all of your concerns now.
My more recent commits simply add the following line in preparation for creating reproducible JMOD archives: `// args("--date", buildTimestamp)`. That line needs to be commented out until JavaFX starts building with JDK 19.
I ran another round of 30 builds, 10 on each platform, with no surprises. The only non-reproducible artifacts are the JMOD archives and the native WebKit shared library, as before. See my GitHub repository [jgneff/jfxbuild][2] for the build environment and shell scripts that I use to build and test JavaFX on Linux, macOS, and Windows.
[1]: https://github.com/openjdk/jdk/pull/6481
[2]: https://github.com/jgneff/jfxbuild
-------------
PR: https://git.openjdk.java.net/jfx/pull/446
More information about the openjfx-dev
mailing list