-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
Move our big OSS dependencies to vcpkg #15855
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
d10a629
to
fb4979f
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
@@ -113,4 +113,7 @@ | |||
<ForcedIncludeFiles>$(SolutionDir)\bin\$(Configuration)\inc\TilFeatureStaging.h;%(ForcedIncludeFiles)</ForcedIncludeFiles> | |||
</ClCompile> | |||
</ItemDefinitionGroup> | |||
|
|||
<!-- For C++ projects, bring in the vcpkg targets at the end --> | |||
<Import Project="$(VcpkgRoot)/scripts/buildsystems/msbuild/vcpkg.targets" Condition="'$(MSBuildProjectExtension)'=='.vcxproj'" /> |
Check failure
Code scanning / check-spelling
Unrecognized Spelling Error
Since we link everything statically, we don't need to copy anything. | ||
This saves running a powershell script for every project. | ||
--> | ||
<VcpkgApplocalDeps>false</VcpkgApplocalDeps> |
Check failure
Code scanning / check-spelling
Unrecognized Spelling Error
Since we link everything statically, we don't need to copy anything. | ||
This saves running a powershell script for every project. | ||
--> | ||
<VcpkgApplocalDeps>false</VcpkgApplocalDeps> |
Check failure
Code scanning / check-spelling
Unrecognized Spelling Error
<CAExcludePath>$(CAExcludePath);$(VcpkgInstalledDir)</CAExcludePath> | ||
</PropertyGroup> | ||
|
||
<Import Project="$(VcpkgRoot)/scripts/buildsystems/msbuild/vcpkg.props" Condition="'$(MSBuildProjectExtension)'=='.vcxproj'" /> |
Check failure
Code scanning / check-spelling
Unrecognized Spelling Error
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
bc01d0c
to
f43076c
Compare
oh no we forgot to do the |
`nuget restore` actually runs through MSBuild! However, #15855 added a dependency from our project on a system-installed _or locally detected_ `vcpkg.targets` (or `.props`). Our build runs `nuget restore` before finding or installing vcpkg, so the rules in our project file would try to import vcpkg before it had been found (or installed). On build agents with vcpkg installed via the VS workload, this was fine: we would import the one that came with VS and go on our merry way. On build agents where it needs to be installed locally, it could not be imported. The fix in this PR is to install/bootstrap vcpkg before running nuget. I tried to isolate the vcpkg rules to only run _in the absence of nuget_, but that didn't work.
This pull request removes the following vendored open source, in favor
of getting it from vcpkg:
Now that Visual Studio 2022 includes a built-in workload for vcpkg, the
onboarding process is much smoother. Terminal should only require the
vcpkg workload.
I've added some build rules that detect vcpkg via VS and via the user's
environment before falling back to a location in the source tree. The CI
pipeline will fall back to installing and bootstrapping vcpkg in
dep/vcpkg if necessary.
Some OSS has not been (and will not be) migrated:
tiny fraction of Chromium
To support the needs of the inbox Windows build, I've split up our vcpkg
manifest into dependencies for all projects and dependencies just for
Terminal. To support this, we now offer a
terminal
feature. The vcpkgrules in
common.build.pre.props
are set up to turn it on, whereas thebuild rules we eventually write for the OS will not be.
Most of the work is concentrated in
common.build.pre.props
.