Uh oh!
There was an error while loading. Please reload this page.
Update windows build machines - #65798
Conversation
ghost
commented
Feb 23, 2022
I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label. |
ghost
commented
Feb 24, 2022
Tagging subscribers to this area: @dotnet/runtime-infrastructure Issue DetailsTwo changes: removes vs2019 in favor of vs2022 Removes 19H1 in favor of 21H1, as 19H1 is being expired.
|
AndyAyersMS
commented
Feb 24, 2022
Seems like updating to VS2022 wasn't sufficient? The build error is still there in the |
AndyAyersMS
commented
Feb 24, 2022
Problematic line is: We're including the right header |
agocke
commented
Feb 24, 2022
I tried to repro this failure locally and had no luck on my win10 machine with vs2022 P1. The compiler on my machine is older though, so it might just be in an even more recent preview. |
jkotas
commented
Feb 24, 2022
|
AndyAyersMS
commented
Feb 24, 2022
My local build is fine too. CI log shows CMake was able to find |
AndyAyersMS
commented
Feb 24, 2022
Also possibly relevant: #56811. |
hoyosjs
commented
Feb 24, 2022
There was an image rollout yesterday that caused other issues with WinSDK, so entirely possible. |
agocke
commented
Feb 24, 2022
Looks like this is happening in main as well: https://dev.azure.com/dnceng/public/_build/results?buildId=1629951&view=results Probably a Windows SDK update issue |
janvorli
commented
Feb 24, 2022
The stdalign.h that's included there should be one that we generate if we don't find one. I could see in a ci failure that we have not found one on the system. So we should have generated a fake one and included it. For some reason, the CI build didn't find it. My local build also doesn't find it, generates one and it works. |
janvorli
commented
Feb 24, 2022
Ah, I can see something - on my machine, the stdalign.h was not found. However, in the CI, the stdalign.h was found (contrary to what I've said before), however in both cases the "HAVE_STDALIGN_ALIGNAS - Failed". So what happens is that the stdalign.h that's new in the SDK doesn't have the alignas in it, so when we generate the stdalign.h, the one from the SDK gets included and the alignas is missing. |
AndyAyersMS
commented
Feb 24, 2022
You might take a look at #56811 because there is some cmake policy to ensure the cmake scouting and build use the same options and such. |
agocke
commented
Feb 24, 2022
@janvorli So you'd be comfortable with a fix where we add this to fakestdalign.h? It sounds like this might be failing in servicing as well, so we'd have to port that change back quite a ways. |
should the fake check be changed from header exists to a check source compiles? |
janvorli
commented
Feb 24, 2022
I guess I've not explained it properly. The fakestdalign.h.in contains the alignas definition, we generate the stdalign.h from it, but since the stdalign.h is now also in the SDK, the SDK one is included first. And that one doesn't have the alignas in it (I guess, it seems to be the only explanation) |
I see, so we won't generate it at all, if one is present already? Or at least we won't include the one we generate? |
hoyosjs
commented
Feb 24, 2022
We don't generate if there's an stdalign header, that doesn't guarantee the function exists. |
agocke
commented
Feb 24, 2022
Gotcha. Is there any way to not include the system one and use our own? |
hoyosjs
commented
Feb 24, 2022
My thinking is we should have a check_source_compiles instead of header exists. If it doesn't compile, then generate the header to have the def. |
janvorli
commented
Feb 24, 2022
I don't think any of these would work. Since the SDK one doesn't have the alignas defined and we need one. |
hoyosjs
commented
Feb 24, 2022
Haven't we been faking it this whole time though? |
janvorli
commented
Feb 24, 2022
So I think the way is to define the alignas macro in the CMakeLists.txt as compiler define in case it was not found. |
hoyosjs
commented
Feb 25, 2022
And even worse: CI is using the one dynamically obtainedL D:\a_work\1\s\native-tools\bin\cmake.exe -> the one in global.json |
jkotas
commented
Feb 25, 2022
Delete the global.json entry for cmake and just use the one that comes with VS? No workarounds for old cmake necessary. |
agocke
commented
Feb 25, 2022
Are the ARM64 machines running VS? Notably this is only happening on ARM, so I wonder if that's why they have a different CMake version. |
hoyosjs
commented
Feb 25, 2022
Yes - the global.json one was creating the issues and I just repro'd. The native-dependencies install feature in arcade is being deprecated anyway, so maybe we should just remove native deps from there? |
agocke
commented
Feb 25, 2022
That sounds fine to me. We'll just have to confirm that the ARM machines have an up to date version ready to go. |
Looks like Jan got to it before I did :)
No, we always build on Windows x64, same hosts and image/tooling. It's more likely that there's plenty defines in the library that change the use of alignas depending on the architecture targeted. |
Ah, it was not the issue. Now |
AndyAyersMS
commented
Feb 25, 2022
Seems like progress though -- now we have too many definitions instead of too few: |
hoyosjs
commented
Feb 25, 2022
So the builds passed with that, but there's a lot of tests failing. Not sure if it's the change of queue (so a compiler version change) or the change in cmake logic. I think it's best to split the two changes to unblock other PRs |
am11
commented
Feb 25, 2022
For wasm build failure, I think it can be fixed by adding this line: <_MonoCMakeBuildCommandCondition="'$(TargetsBrowser)' == 'true' and '$(HostOS)' == 'windows'">call "$(RepositoryEngineeringDir)native\init-vs-env.cmd"&& $(_MonoCMakeBuildCommand)</_MonoCMakeBuildCommand>after this one: Line 493 in 95f7f7a The effective cc @lambdageek x64 failure is something to do with change in .yml files:
Should it be |
agocke
commented
Feb 25, 2022
Still working through queue updates -- looks like there's no replacement for the ES queues yet, so I'll just end up reverting those changes. I think the PR to take through first is #65901 |
akoeplinger
commented
Mar 17, 2022
The Windows.10.Amd64.Server2022.ES.Open queue should be available now |
This reverts commit 2ad8f63ff2eed6dcff6dfab3028516ef0053190d.
be4345e to
c55c066Comparedanmoseley
commented
Apr 16, 2022
Rebased so that hopefully we can merge this. |
danmoseley
commented
Apr 16, 2022
@hoyosjs any reason we shouldn't merge this (if green)? |
hoyosjs
commented
Apr 16, 2022
It will conflict with the arcade update. I'm happy to say merge this and then we will resolve conflicts. |
hoyosjs
commented
Apr 16, 2022
Actually - this one needs to be in the monthly rollouts. It drops support for vs 2019. |
danmoseley
commented
Apr 16, 2022
Right, but my interpretation of comments on the other one is that VS2022 / Dev17.4 is required to change the CL errors to warnings. |
hoyosjs
commented
Apr 16, 2022
We will probably have to fold this one into that one, but yeah |
hoyosjs
commented
Apr 16, 2022
I've folded all these changes onto that one. I'll close this one. |
Two changes: removes vs2019 in favor of vs2022
Removes 19H1 in favor of 21H1, as 19H1 is being expired.