-
-
Notifications
You must be signed in to change notification settings - Fork 257
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable reproducible builds on Windows x64 jdk-20 #2978
Comments
jdk-20 built temurin WIndows x64 are identically reproducible on the same build machine, if the binaries are not signed. Signed JDK binaries are different, much like for MacOS. They are signed using the Eclipse signing service: Which uses open source osslsigncode: https://github.com/mtrojnar/osslsigncode osslsigncode has a -remove_signature option, which we maybe able to use to remove the signature to do a comparison. |
Successful reproducible Win64 JDK comparison of Eclipse Adoptium built Temurin JDK binaries can be achieved by:
Creates the test.p12 with password testpw
Example:
|
The fix level of MSVC toolkit is important for reproducibility, it must be identical, even a "fix level" version makes a difference. So for example using 19.27.29112 compared to 19.27.29111, will be non-reproducible. In an attempt to ensure identical toolkits, I am testing creating an offline toolkit network installation using the instructions here: https://docs.microsoft.com/en-us/visualstudio/install/create-a-network-installation-of-visual-studio?view=vs-2022 |
To create a installation layout using vs_community.exe, the latest version is required: https://aka.ms/vs/16/release/vs_community.exe The latest version does work with --layout, and that redirects to: https://download.visualstudio.microsoft.com/download/pr/e33403d5-ac1e-4600-b624-d59ccd7b9a13/6a344354ece1743aa117a396f7fc8248957571a24d542ce1b2aaa61dafe99f89/vs_Community.exe |
Our temurin builds seem to pickup the vcruntime140.dll from the bootjdk being used:
I believe that is because the logic in make/autoconf/toolchain_microsoft.m4 searches:
Which does not exist, the following do:
|
It looks like the installation layout only contains the arm64 redist runtime DLLs, even though the layout was created on an x64 box... odd! |
So the re-created layout now has the x64 redist DLLs, it seems because I had the redist packages installed when I created the layout, it did not add them to the layout image. |
(Edit: Updated for VS2022)
To install from the layout
|
So the explicit VS2019 x64 redist DLLs were not added to the layout because they were not explicitly selected, instead for some reason the 2017 ones were installed. To select the VS2019 ones, we need to explicitly add the x86.x64 VC Tools using:
|
@sxa I have recreated the layout with the necessary redist's, vslayout2019.tar.gz is available on my test machine. I we can recreate the test Jenkins node with this please? When installing we may need to also specify:
To ensure the 2019 x64 redist's get installed. |
@andrew-m-leonard When I run the above command it starts up the GUI installer and gives me options for "Install while downloading" or "Download all, then install". Is that correct? |
@sxa To run sliently, |
@sxa yes, that worked for me. |
Thanks - re-running now. Hopefully that won't result it in pulling anything from the web in secret! |
https://ci.adoptopenjdk.net/computer/build-azure-win2012r2-x64-3-sxa/ now installed and live. |
Successfully reproduced (except for know CDS archive differences) two separately built jdk-20 Win64 JDKs:
The comparison script above was updated to handle specific differences caused by:
Differences after script processing of jdk1 and jdk2:
|
Full command with path options:
|
New repro build of jdk-20+35: https://ci.adoptopenjdk.net/job/build-scripts/job/jobs/job/jdk20/job/jdk20-windows-x64-temurin/25/ |
jdk-20 builds for Win x64 are identically reproducible, when built with the same MS VS2019 install image version. |
The text was updated successfully, but these errors were encountered: