-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Toolset update: MSVC Compiler 19.50.35702, test <filesystem>
long path support
#5783
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: MSVC Compiler 19.50.35702, test <filesystem>
long path support
#5783
Conversation
This was added in CMake 4.0: https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_CHECKS.html We clear out all of CMake's default options before setting our own. Fixes: cl : Command line error D8016 : '/RTC1' and '/O2' command-line options are incompatible This matches internal src/vctools/crt/crt_build.settings.targets, which sets `<NoRtc>true</NoRtc>`.
Need to update internal `src/vctools/vcpkg_overlay_ports/boost-math`.
…line not inlined.
… mention "MSVC 19.24".
Don't printf(), instead assert() to check correctness. Cite documentation explaining why the bytes are 0. Use `std::uint64_t` instead of `unsigned long long` for clarity. There's no need to `static_cast<unsigned char*>` the result of MapViewOfFileEx. Use std::align() as I don't see any documented alignment guarantees.
With minor changes.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
exeSource = test.getSourcePath() | ||
manifestFile = os.path.join(os.path.dirname(exeSource), 'long_path_aware.manifest') | ||
|
||
_, outputBase = test.getTempPaths() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ultra nit / not worth resetting, but it seems this tis only used in the elif
path
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I copy-pasted this structure from another test with custom_format.py
, hence the unused outputBase
on one codepath. Good catch!
I'm mirroring this to the MSVC-internal repo - please notify me if any further changes are pushed. |
I pushed two additional commits because my technique to skip for MSVC-internal wasn't working. Now we |
Changelog
<filesystem>
's long path support.Overview
In this toolset update, I attempted to add an ARM64 pool. While I encountered roadblocks and abandoned the attempt for now,
I was able to extend provision-image.ps1 to automatically detect when it's being run in an ARM64 VM, and switch to ARM64 installers. I also have small restructurings to create-1es-hosted-pool.ps1 that will make it easier to add ARM64 as an option in the future.
I was also able to enable long paths in the VMs, and write a test to exercise one of
<filesystem>
's functions. It's writtento detect the absence of long path support and do nothing, so it won't break local test runs.
Commits
$PoolSize
.CMAKE_MSVC_RUNTIME_CHECKS
to the empty string.<NoRtc>true</NoRtc>
.__forceinline
not inlined.printf()
, insteadassert()
to check correctness.std::uint64_t
instead ofunsigned long long
for clarity.static_cast<unsigned char*>
the result ofMapViewOfFileEx
.std::align()
as I don't see any documented alignment guarantees.std/thread/thread.semaphore/timed.pass.cpp
#5733.<filesystem>
: Consider setting up the 1ES Hosted Pool with long path support for test coverage #1923.test_temp_directory
with minor changes:directoryPath
aconst
data member. (It probably should be private with an accessor, but that required too many changes for my level of laziness.)std::endl
as I am slightly paranoid about flushing output for logs.assert
instead of simply warning. This will block further testing.custom_format.py
to link againstAdvapi32.lib
, but especially to pass/MANIFESTINPUT:{manifestFile}
. The Python script can get the path tolong_path_aware.manifest
which lives next totest.cpp
. Attempting to do this throughPM_LINK
inenv.lst
won't work, because the compile-and-link step is run in a subdirectory (and I felt that hardcoding..
was gross).$Provisioning_x64
, for clarity.Get-AzContext
to avoid annoying warnings.Set-AzContext
was emitting an annoying warning about an apparently inaccessible unrelated "tenant". After logging in, the subscription appears to stay fixed toCPP_STL_GitHub
, so we just need a check that we're using the right subscription. I now also print a clear message if the check fails. (Connect-AzAccount
pops up a UI dialog, so I don't want to automatically run it.)STL-ASan-CI passed.