-
-
Notifications
You must be signed in to change notification settings - Fork 71
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
Update MS VS ReDist DLLs distributed to "latest stable" #1104
Comments
Latest versions from Microsoft: https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170 |
The full historic list of MSVC++ version are here: https://en.wikipedia.org/wiki/Microsoft_Visual_C++
|
The latest MSVC Redist files can be downloaded as installer executable file here: https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170 When vc_redist.x64.exe will install the redist DLLs into the c:\Windows\System32 directory as long as there isn't a later version of the redist in that folder already. To package a set of redist DLL's necessary to package with Temurin, I would suggest the following process:
For building Temurin at ci.adoptium.net:
|
@sxa @steelhead31 Your thoughts please, if we manually package the latest "redist" DLLs, where could we put them for our build nodes? |
@andrew-m-leonard I think we could, package up the zip files , and have them deployed by Ansible into a specifie folder on the windows build machines, we could approach this in a way to allow multiple versions, or alternatively just a single version... something along the lines of.. c:\temurin-msvc-redist\version1.7.0 Could then define the locations for the parameters listed per version as required ? |
Thanks Scott, yes that sounds reasonable, I will create the latest Redist version package (17.10 - 14.40.33810) |
The Microsoft Redist "update" package installer seems to only install the vcruntime*, msvcp*.dll and ucrtbase.dll, all of which are put into c:\Windows\System32 when you run say the vc_Redist_x64.exe. It does not install the api-ms-crt*.dll's which seem only present in the Windows Kit/Redist/ucrt/DLLs folder. Trying to accurately create our own Redist.zip packaging x64,arm64,x86 and all the necessary dlls is going to be tricky, and probably not the right thing to do. We should probably instead create a "Windows DevKit" for VS2022 using: https://github.com/openjdk/jdk/blob/master/make/devkit/createWindowsDevkit.sh We should thus look to update to the latest(possibly LTSC) MS VS2022 update from: https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-history |
Creating and using a updated Windows VS2022 "DevKit" would then resolve issue: adoptium/temurin-build#3887 |
A Windows DevKit would require further investigation and testing.
|
Hi Andrew In order to get the UCRT dll to redistribute with the jdk, it seems we have to get them from the Windows SDK: The "easiest" way to extract a complete collection for these DLLs, is to proceed as follow:
EDIT: Actually, unlike the VC_redist bundle for the legacy C runtime which dumps everything in system32, running "Universal CRT Redistributable-x86_en-us.msi" installed the DLL in an easily identifiable location in C:\Program Files (x86)\Windows Kits\10\Redist, and it does not overwrite previous versions. So afterall, it might be simpler to just get the files directly from there and avoid having to deal with dark magic. |
By the way, you can use |
Thanks @fthevenet, for the methods. For the linked issue we believe we just need to update the C runtime DLLs only. so I am running a test with just those at the moment |
To extract the required Redist DLLs, the safest and easiest way is to locally install an "all architecture" installation as follows:
Now extract the required "Redist" DLLs as follows:
|
I have created a Redist update using the above method, for the following versions:
The zip has been uploaded to the devkit_binaries : https://github.com/adoptium/devkit-binaries/releases/tag/vs2022_redist_14.40.33807_10.0.26100.0 |
Test builds running:x64:
jdk11u https://ci.adoptium.net/job/build-scripts/job/jobs/job/jdk11u/job/jdk11u-windows-x64-temurin/404/ - Success x86:
jdk11u https://ci.adoptium.net/job/build-scripts/job/jobs/job/jdk11u/job/jdk11u-windows-x86-32-temurin/375/
jdk17u https://ci.adoptium.net/job/build-scripts/job/jobs/job/jdk17u/job/jdk17u-windows-x86-32-temurin/363/
aarch64:
jdk23u https://ci.adoptium.net/job/build-scripts/job/jobs/job/jdk23u/job/jdk23u-windows-aarch64-temurin/1/
|
Re-running these 3 failures with a longer timeout of x50:
https://ci.adoptium.net/job/Grinder/11135/ Re-running with just TEST: java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java : |
Mauve related tests that nearly always fail in jdk8u:
|
Newly added hotspot_tier1_runtime_0 and hotspot_tier1_serviceability_0 (adoptium/aqa-tests#5648), that always fail: hotspot_tier1_runtime:
hotspot_tier1_serviceability:
Raised: adoptium/aqa-tests#5671 |
Resolved by adoptium/temurin-build#3981 |
Recent issue highlighted we currently ship an old UCRT DLL that can cause in-compatibilities with certain API calls with the latest Win SDK.
We should move up to a more recent "fixed" stable set, we should also specify the complete set so we are consistent:
Currently this, with the additional DLLs loaded from the installed VS layout:
Should update to use the complete set:
The text was updated successfully, but these errors were encountered: