Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 25 additions & 6 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -377,23 +377,42 @@ fn get_crt(
versions::Version::new(&user)
.with_context(|| format!("invalid CRT version '{user}' specified"))?;

build_tools
.dependencies
.get(&format!(
anyhow::ensure!(
build_tools.dependencies.contains_key(&format!(
"Microsoft.VisualStudio.Component.VC.{user}.x86.x64"
))
.with_context(|| format!("CRT version '{user}' does not exist in the manifest"))?;
)) || pkgs.contains_key(&format!("Microsoft.VC.{user}.CRT.Headers.base")),
"CRT version '{user}' does not exist in the manifest"
);

user
} else {
// By default, we want to install the latest version of the CRT. The
// easiest way is to use the Microsoft.VisualCpp.CRT.Headers alias, which
// always points to the latest version, and grab the actual version from
// its dependencies.
//
// While versioned components of the form `Microsoft.VisualStudio.Component.VC.<VERSION>.*` exists,
// those don't always contain the latest version, especially in older
// versions of Visual Studio.
// newest one.
let latest_toolset = pkgs
.get("Microsoft.VisualCpp.CRT.Headers")
.into_iter()
.flat_map(|alias| alias.dependencies.keys())
.filter_map(|key| {
key.strip_prefix("Microsoft.VC.")?
.strip_suffix(".CRT.Headers.base")
});

let crt_version_rs_versions = build_tools
.dependencies
.keys()
.filter_map(|key| {
key.strip_prefix("Microsoft.VisualStudio.Component.VC.")
.and_then(|s| s.strip_suffix(".x86.x64"))
.and_then(versions::Version::new)
})
.chain(latest_toolset)
.filter_map(versions::Version::new)
.max()
.context("unable to find latest CRT version")?;

Expand Down
113 changes: 57 additions & 56 deletions tests/snapshots/deterministic__verify_deterministic.snap
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ expression: actual
---
crt/include/ATLComMem.h @ b7eb4b56527ca224
crt/include/ATLComTime.h @ 9bf1e896332d1648
crt/include/CodeAnalysis/Warnings.h @ 55ab60b57eb1dccc
crt/include/CodeAnalysis/Warnings.h @ f3ecb2f8261d50ca
crt/include/CodeAnalysis/sourceannotations.h @ 29368f313ab290b
crt/include/Manifest/PerMonitorHighDPIAware.manifest @ 3d0230dddbe0f807
crt/include/Manifest/dpiaware.manifest @ 95a8b8923d3c7a2
Expand All @@ -30,11 +30,11 @@ crt/include/array @ b6b05747c65d7b0f
crt/include/atlacc.h @ 158df3c5609bf6fa
crt/include/atlalloc.h @ ca726fa4a5b4378
crt/include/atlbase.h @ f069f26c819834de
crt/include/atlbuild.h @ bc1daf888158cac7
crt/include/atlbuild.h @ 741cbf8ce5fee276
crt/include/atlchecked.h @ 55871d5dc2ca63c9
crt/include/atlcoll.h @ 870ec38f89f97cff
crt/include/atlcom.h @ ce80a3a8e76cd3e6
crt/include/atlcomcli.h @ b6a45e8e23b65263
crt/include/atlcomcli.h @ 3daef620d04dbc1c
crt/include/atlconv.h @ ccfbfb9a20ba6135
crt/include/atlcore.h @ c699c4f7509fd65b
crt/include/atlctl.h @ 71eb95c969a34e63
Expand Down Expand Up @@ -67,7 +67,7 @@ crt/include/atlsimpstr.h @ 261861248bd779c7
crt/include/atlsnap.h @ 56fc7aff24225b9c
crt/include/atlsocket.h @ 6018b8034fa59f5c
crt/include/atlstdthunk.h @ cdc5b2fb984f2302
crt/include/atlstr.h @ 48b2c4543d9c0760
crt/include/atlstr.h @ 52bef8668b8ed7a6
crt/include/atlsync.h @ 470153fd51c9a73e
crt/include/atlthunk.h @ 372e23d4e5c5e632
crt/include/atltime.h @ c3a3b363d478938
Expand All @@ -90,7 +90,7 @@ crt/include/cfenv @ c1f654070a5640af
crt/include/cfguard.h @ c3d100cd3e0ba896
crt/include/cfloat @ a961d0a4895a1ae2
crt/include/charconv @ 1579c57c9b8202dc
crt/include/chrono @ 33722f1f747f43a
crt/include/chrono @ e69a0ee411770c82
crt/include/cinttypes @ dbd5840e8fbfc24c
crt/include/ciso646 @ e3bc4729a8b929fd
crt/include/cliext/adapter @ 36141e922acf9516
Expand Down Expand Up @@ -135,7 +135,7 @@ crt/include/concurrent_vector.h @ adcadc2eb16961f7
crt/include/condition_variable @ 24d21deae380570e
crt/include/coroutine @ 43136410d35316b7
crt/include/crtdefs.h @ baa7a12f15ebd9c9
crt/include/crtversion.h @ 3d290adda2d3fa84
crt/include/crtversion.h @ 869daf0d4c47ea52
crt/include/csetjmp @ c3be9102d5b5e692
crt/include/csignal @ 6a687d064f6aaf05
crt/include/cstdalign @ 9bcb7e12534ba988
Expand Down Expand Up @@ -259,7 +259,7 @@ crt/include/experimental/unordered_map @ 6a154d70b250406b
crt/include/experimental/unordered_set @ 22d3f21edbdb2add
crt/include/experimental/vector @ 2a23ebb980470f91
crt/include/filesystem @ a7497ab98d5b5317
crt/include/format @ ba4e8b32045d37e5
crt/include/format @ 1e605ff9757cdae8
crt/include/forward_list @ 542b90e50e48b123
crt/include/fstream @ cffc9cfb0723abfc
crt/include/functional @ de63157e528d4ae5
Expand All @@ -273,8 +273,9 @@ crt/include/immintrin.h @ af4b9cbc37f97b52
crt/include/initializer_list @ bef540e7adfbe9a3
crt/include/internal_concurrent_hash.h @ bb72e5bcaf0782f0
crt/include/internal_split_ordered_list.h @ da607c437e285eaa
crt/include/intrin.h @ f0b758b5046c8b32
crt/include/intrin0.h @ 6b9ff796786c4b28
crt/include/intrin.h @ 20da5a9215729422
crt/include/intrin0.h @ 29d9c675a587aac6
crt/include/intrin0.inl.h @ 4db95d7ecb1e0331
crt/include/invkprxy.h @ c88f9ce6e4731f2b
crt/include/iomanip @ 6e8c32f79af6a2cb
crt/include/ios @ a18d82db3e304d62
Expand Down Expand Up @@ -340,9 +341,9 @@ crt/include/ppltaskscheduler.h @ 3bf1c5eb839d69a0
crt/include/pplwin.h @ 90108f94f0b55608
crt/include/queue @ 318951fb34866b43
crt/include/random @ 450b744362e4b596
crt/include/ranges @ 56b733e6b2e73cea
crt/include/ranges @ aab22690c6950dc8
crt/include/ratio @ 777e02879e903c63
crt/include/regex @ c06640756b6b7541
crt/include/regex @ 693b7bdc73fded52
crt/include/rtcapi.h @ cb872dfc0822a63e
crt/include/rttidata.h @ 22379de71323554e
crt/include/sal.h @ 86652daf4fc3bda6
Expand Down Expand Up @@ -417,7 +418,7 @@ crt/include/xlocmes @ c3cd79e1a2b8efd0
crt/include/xlocmon @ 584a2e05f027694c
crt/include/xlocnum @ a01eff762b0e4ec2
crt/include/xloctime @ f9bc12a28c856130
crt/include/xmemory @ 4c4f9630e60eab3b
crt/include/xmemory @ d165ce1eaacb0965
crt/include/xmmintrin.h @ 9646a5b3018fdc4a
crt/include/xnode_handle.h @ aaaa3156f8a324e2
crt/include/xpolymorphic_allocator.h @ 8be15b0630367903
Expand All @@ -428,58 +429,58 @@ crt/include/xthreads.h @ e40f1410252abfe1
crt/include/xtimec.h @ 14b4645a484936ff
crt/include/xtr1common @ 132c66d577948fb4
crt/include/xtree @ 153ee56fe7ba9bcc
crt/include/xutility @ 96f7342bdbb65c69
crt/include/xutility @ b65c197f1217f33d
crt/include/xxamp.h @ 7b966de893be040c
crt/include/xxamp_inl.h @ cc2fcec909806cdd
crt/include/ymath.h @ 6cfc2d778d7555b2
crt/include/yvals.h @ 811af4b0e64f4abf
crt/include/yvals_core.h @ cd26c06f6a34d6c1
crt/include/yvals_core.h @ 7518367ac2a0402e
crt/include/zmmintrin.h @ ca61f9cab10dedbd
crt/lib/x86_64/LIBCMT.lib => libcmt.lib
crt/lib/x86_64/MSVCRT.lib => msvcrt.lib
crt/lib/x86_64/Microsoft.VisualC.STLCLR.dll @ 878e88efc0058496
crt/lib/x86_64/Microsoft.VisualC.STLCLR.dll @ 8e363538eeedaa2
crt/lib/x86_64/OLDNAMES.lib => oldnames.lib
crt/lib/x86_64/aligned_new.lib @ 4250e21e2b576da5
crt/lib/x86_64/atls.lib @ 9bc512529bcd326f
crt/lib/x86_64/binmode.obj @ 437ef88a24383419
crt/lib/x86_64/chkstk.obj @ 62e1047d74a124f7
crt/lib/x86_64/commode.obj @ 9a422d4e7c458ccd
crt/lib/x86_64/comsupp.lib @ 24ef3c13ab50c764
crt/lib/x86_64/comsuppw.lib @ 63f7d17fc2e2823e
crt/lib/x86_64/concrt.lib @ 6db7343409fda998
crt/lib/x86_64/delayimp.lib @ 221b26a34b9ae018
crt/lib/x86_64/exe_initialize_mta.lib @ 729fb1d53fe1f1b2
crt/lib/x86_64/invalidcontinue.obj @ 31f74f81d0a2e030
crt/lib/x86_64/iso_stdio_wide_specifiers.lib @ 5e95d1bae3c3d946
crt/lib/x86_64/legacy_stdio_definitions.lib @ 83023b23074a030d
crt/lib/x86_64/legacy_stdio_float_rounding.obj @ c7b506dacdec68ea
crt/lib/x86_64/legacy_stdio_wide_specifiers.lib @ d1d505f02345a844
crt/lib/x86_64/libcmt.lib @ 738ac63897fffc42
crt/lib/x86_64/libconcrt.lib @ 2653295f54bac37a
crt/lib/x86_64/libconcrt1.lib @ 678aeedb71575808
crt/lib/x86_64/libcpmt.lib @ 4b3b31ad564183d8
crt/lib/x86_64/libcpmt1.lib @ 4c7cf3abea456ea6
crt/lib/x86_64/libomp.lib @ e7edb54e9a4ee055
crt/lib/x86_64/libvcruntime.lib @ c3657da1eae5589
crt/lib/x86_64/loosefpmath.obj @ a0aa2a3af04fdd95
crt/lib/x86_64/msvcmrt.lib @ 1a576a91dd7aeac3
crt/lib/x86_64/msvcmrt_netcore.lib @ 1252014eee2fd34b
crt/lib/x86_64/msvcprt.lib @ 69bc0c15e8c26dd4
crt/lib/x86_64/msvcrt.lib @ deb3de1604e7dde4
crt/lib/x86_64/newmode.obj @ 7cb0dcaa003ca339
crt/lib/x86_64/noarg.obj @ 5a458fa3875df3d3
crt/lib/x86_64/noenv.obj @ 514eefd10e9ca39a
crt/lib/x86_64/notelemetry.obj @ 7455c5adb70f3ca6
crt/lib/x86_64/nothrownew.obj @ 754cc035e02aaa0d
crt/lib/x86_64/oldnames.lib @ 457c412bb3ab0e00
crt/lib/x86_64/ptrustm.lib @ 55d67126e5eee9c8
crt/lib/x86_64/setargv.obj @ 927a567efa165537
crt/lib/x86_64/threadlocale.obj @ d5f52cf6f7540528
crt/lib/x86_64/vcamp.lib @ 83d4c236606bd8e5
crt/lib/x86_64/vccorlib.lib @ 88dff09680406ce8
crt/lib/x86_64/vcomp.lib @ 290001f1cf8658dc
crt/lib/x86_64/vcruntime.lib @ 13fe902a335d605f
crt/lib/x86_64/wsetargv.obj @ 887c6f64baebe131
crt/lib/x86_64/aligned_new.lib @ 56f09da0675980d7
crt/lib/x86_64/atls.lib @ 5e88a0cdcd85ec7e
crt/lib/x86_64/binmode.obj @ af0a9641006cc445
crt/lib/x86_64/chkstk.obj @ a9901298cd1bbf80
crt/lib/x86_64/commode.obj @ 5e27c2cfafb2c4c5
crt/lib/x86_64/comsupp.lib @ ef768c0f8b6ae387
crt/lib/x86_64/comsuppw.lib @ fa9edcda513275fc
crt/lib/x86_64/concrt.lib @ 80c673bcd4fffd2d
crt/lib/x86_64/delayimp.lib @ 22a358e359d994f6
crt/lib/x86_64/exe_initialize_mta.lib @ 6a220451faa31dba
crt/lib/x86_64/invalidcontinue.obj @ bad4bb39d85abae1
crt/lib/x86_64/iso_stdio_wide_specifiers.lib @ 9364d66902d99d26
crt/lib/x86_64/legacy_stdio_definitions.lib @ 644db77fb203c2ab
crt/lib/x86_64/legacy_stdio_float_rounding.obj @ 6f43c4d80508a284
crt/lib/x86_64/legacy_stdio_wide_specifiers.lib @ 40f4fa2496c667e7
crt/lib/x86_64/libcmt.lib @ e4a9309d49d5c970
crt/lib/x86_64/libconcrt.lib @ 2b752fc41c08867a
crt/lib/x86_64/libconcrt1.lib @ b6ad80ec367ca2b
crt/lib/x86_64/libcpmt.lib @ ad7817a9f0ca32d1
crt/lib/x86_64/libcpmt1.lib @ 2b9c2b6ee8086bf5
crt/lib/x86_64/libomp.lib @ 7856bbabf93f4820
crt/lib/x86_64/libvcruntime.lib @ 70c49fbed433e130
crt/lib/x86_64/loosefpmath.obj @ f195e3db6be0b16a
crt/lib/x86_64/msvcmrt.lib @ 2caab607682cfc93
crt/lib/x86_64/msvcmrt_netcore.lib @ f8e20832d0392124
crt/lib/x86_64/msvcprt.lib @ b931b44ad2501586
crt/lib/x86_64/msvcrt.lib @ 8c3679e716fac19d
crt/lib/x86_64/newmode.obj @ ff4564b67615315
crt/lib/x86_64/noarg.obj @ afdcf52b4846bb58
crt/lib/x86_64/noenv.obj @ fdd2d8fecadb6c96
crt/lib/x86_64/notelemetry.obj @ 7cec5c2193866318
crt/lib/x86_64/nothrownew.obj @ aefdb511d162402d
crt/lib/x86_64/oldnames.lib @ ac780851771ce100
crt/lib/x86_64/ptrustm.lib @ ebde8d522a74ce95
crt/lib/x86_64/setargv.obj @ ecbb350f9434a079
crt/lib/x86_64/threadlocale.obj @ 6b65ba1ec3828864
crt/lib/x86_64/vcamp.lib @ 61f5008eaeeb3be5
crt/lib/x86_64/vccorlib.lib @ d6166c0a28922d46
crt/lib/x86_64/vcomp.lib @ 417c85ff1054a053
crt/lib/x86_64/vcruntime.lib @ 63b9566df30f3867
crt/lib/x86_64/wsetargv.obj @ 590021ce85b52c8f
sdk/Include => include
sdk/Lib => lib
sdk/include/10.0.22000 => .
Expand Down