Skip to content
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

Toolset update: VS 2022 17.1 Preview 4, ARM64EC #2496

Merged
merged 19 commits into from Jan 26, 2022

Conversation

StephanTLavavej
Copy link
Member

@StephanTLavavej StephanTLavavej commented Jan 21, 2022

  • Rename tools/move_only_function_specializations to tools/scripts.
    • Now we can add other scripts to this directory, and it avoids repeating the filename move_only_function_specializations.py.
    • Update the comment in <functional> accordingly.
    • Add a comment to move_only_function_specializations.py explaining what it does - even though the filename and code are fairly self-explanatory, as we accumulate scripts, it will be helpful for each of them to briefly mention what they do, so we don't need to deduce their intent from their code.
  • Add tools/scripts/print_failures.py.
    • This automates the process of searching through test logs to find FAIL and XPASS tests, then decoding their JSON with search-and-replace (replacing CRLFs and LFs with newlines, unescaping double quotes and backslashes).
  • Remove workaround for VSO-1460046 in P0220R1_optional/test.cpp.
    • This was "EDG rejects hash<optional<const B>> called with optional<B>".
  • Remove compiler workaround in subrange.
  • Remove workaround for VSO-1433873 in <format>.
    • This was "Standard Library Header Units: Adding template <int = 0> to vformat() emits warnings C4265 and C4365".
  • Fix C4365 sign conversion warnings in <format>'s use of fill_n.
    • Filling with '0' can convert char to wchar_t. _CharT{'0'} forms the same type, avoiding the warning.
  • Perma-workaround VSO-1464637 C4365 sign conversion warnings in <format>.
    • This is "Standard Library Header Units: #pragma warning doesn't always suppress warnings in templates", which @cdacamar has fixed in VS 2022 17.2 Preview 2.
    • Instead of copying char to char/wchar_t and silencing the warnings, we can use a function object to transform() with a static_cast. This is more elegant than silencing warnings, and should result in identical release codegen. (Debug mode has more function calls, but avoiding them isn't all-important.)
  • Followup simplification: ranges::transform() can directly take string_view.
  • create-vmss.ps1: Allow QUIC, renumber priorities.
    • QUIC was standardized as the transport layer for HTTP/3, and will presumably be used by tools in the future. Let's permit outbound connections now.
    • Priority values are arbitrary - New-AzNetworkSecurityRuleConfig documentation says that a priority needs to be "An integer between 100 and 4096." To make future changes a bit easier, I'm following the QBASIC pattern for Allow rules (1000, 1010, 1020), and leaving lots of room before the Deny rule at 2000.
  • Add 'Microsoft.VisualStudio.Component.VC.Tools.ARM64EC' for Add arm64EC pipeline. Disable all SSE usage for ARM64EC #2491.
  • Python 3.10.2.
  • create-vmss.ps1: Also set the Azure CLI subscription.
    • This is the robust thing to do (although I haven't seen issues with the subscription getting set to something else, I realized that it was a potential issue).
    • Long-term, I'll investigate whether we can replace our usage of Azure CLI with Azure PowerShell as I've learned more.
  • create-vmss.ps1: Use member enumeration and the -in containment operator, making Find-ResourceGroupNameCollision unnecessary.
  • Add 'THHmm' to VMSS names.
    • This is a quality of life improvement when frequently creating and deleting resource groups, as it generates unique names with unique logs in the Azure portal.
    • I've kept the -1, -2, etc. suffix logic as it's theoretically needed, although in practice it should never appear. (Note that I tested the suffix logic changes before adding these timestamp changes.)
  • Fix VMSS diagnostics.
    • I discovered that the diagnostics extension was failing (by logging into the VMs through Azure Bastion), apparently due to SAS token parsing. Through extensive searching, I found VM diagnostics Azure/azure-cli#8108 (comment) which helped me understand this. That issue resulted in an update to the az vm diagnostics documentation - we're using az vmss diagnostics whose documentation wasn't updated, but it's equally applicable.
    • I've updated the Checklist for Toolset Updates accordingly, simplifying it - we don't need to manually prepare vmss-config.json and vmss-protected.json anymore!
    • This limits the permissions etc. for the SAS token, and adds --https-only, exactly following the documentation. (I think --https-only might have been the actual fix, but I didn't confirm that.)
    • This also replaces '__DIAGNOSTIC_STORAGE_ACCOUNT__' and '__VM_OR_VMSS_RESOURCE_ID__' in vmss-config.json, following the documentation. (I wasn't previously instructed that this was necessary, but in retrospect these strings are obviously placeholders.)
    • We can pass JSON directly to --protected-settings, avoiding saving the SAS token to disk. I'm leaving /azure-devops/vmss-protected.json mentioned in .gitignore.
    • Note that vmss-config.json is too big to pass on the command line, so it must be saved to a file.
    • The documentation doesn't depict the leading question mark being added to the SAS token in the JSON, but I believe that's a mistake, so I am adding it.
  • create-vmss.ps1: Use Out-Null instead of ignored variables.
    • I just learned this existed.
  • Use 2022-datacenter-g2, fixing the problems we've had with preparing toolset updates.
    • Thanks to @BillyONeal for mentioning that vcpkg had successfully performed a toolset update recently, which led me to think about any potential differences between our setups.
    • I've updated the Checklist for Toolset Updates accordingly, simplifying the displayed SKU/version information with my increased knowledge of Azure PowerShell.
  • New pool: VS 2022 17.1 Preview 4, ARM64EC, Server.
  • Mention VS 2022 17.1 Preview 4 in README.md.

@StephanTLavavej StephanTLavavej added the infrastructure Related to repository automation label Jan 21, 2022
@StephanTLavavej StephanTLavavej added this to Work In Progress in Code Reviews Jan 21, 2022
@StephanTLavavej StephanTLavavej added the uncharted Excluded from the Status Chart label Jan 21, 2022
@StephanTLavavej

This comment has been minimized.

@StephanTLavavej StephanTLavavej changed the title Toolset update: VS 2022 17.1 Preview 3, ARM64EC Toolset update: VS 2022 17.1 Preview 4, ARM64EC Jan 25, 2022
@StephanTLavavej StephanTLavavej removed the uncharted Excluded from the Status Chart label Jan 26, 2022
@StephanTLavavej StephanTLavavej moved this from Work In Progress to Initial Review in Code Reviews Jan 26, 2022
@StephanTLavavej StephanTLavavej marked this pull request as ready for review January 26, 2022 01:14
@StephanTLavavej StephanTLavavej requested a review from a team as a code owner January 26, 2022 01:14
Copy link
Member

@barcharcraz barcharcraz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

format stuff looks good (as do other changes, however I spent more attention on format stuff)

@StephanTLavavej StephanTLavavej moved this from Initial Review to Final Review in Code Reviews Jan 26, 2022
@CaseyCarter CaseyCarter moved this from Final Review to Ready To Merge in Code Reviews Jan 26, 2022
@StephanTLavavej StephanTLavavej self-assigned this Jan 26, 2022
@StephanTLavavej
Copy link
Member Author

I'm mirroring this to the MSVC-internal repo - please notify me if any further changes are pushed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
infrastructure Related to repository automation
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

None yet

3 participants