-
Notifications
You must be signed in to change notification settings - Fork 6.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[vcpkg] Download vcpkg.exe rather than building it in bootstrap on Wi…
…ndows. (#15474) This reduces bootstrap cost for Windows customers, resolving the issue initially submitted as #12502 . The `toolsrc` tree was extracted to https://github.com/microsoft/vcpkg-tool. `bootstrap.sh` was changed to download the right source tarball, extract, and build it. This was chosen over the previous attempt, a submodule, over concerns of accidentally destroying people's local modifications.
- Loading branch information
1 parent
f226416
commit aa60b7e
Showing
307 changed files
with
46 additions
and
69,859 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.
aa60b7e
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.
not a good choice at all !!! bring toolsrc back pls...
aa60b7e
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.
Replying to a related conversation from PR #12502:
@BillyONeal / @StarGate-One my team is in the same boat, and as of aa60b7e the suggested workaround is no longer possible. I am going to try cloning/patching/building vcpkg-tool independently, essentially copying what bootstrap.sh is doing. Will update this comment with the results.
EDIT: Manually bootstrapping from vcpkg-tool works like any other CMake project: clone, patch, configure, build. Just make sure you're using the same permutation of compiler and generator as the official CI builds.
I can't help but feel that something has been lost here. Having everything self-contained in a single repo and built from source had several key benefits:
vcpkg
is not on the critical path of my "inner loop."aa60b7e
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.
@reynoldsbd From a development team prospective, we also preferred everything being in one repo. Unfortunately, there are lots of people who want to run vcpkg on GitHub Actions or Azure Pipelines or similar CI systems, and for them our bootstrap was often the majority of their build time. We understand that this change isn't without costs, but we feel on balance that it is the right option for most customers. This also closes the door on one of our most common sources of customer breakage: customers trying to bootstrap with versions of Visual Studio different than the one we use for our day to day development.
We are moving towards a model where the synchronization between these is less important; typically the tool version isn't changing more than once per month, and even then there's no significant loss in not being on the latest and greatest (other than not getting new features). This is something we would be wanting to do anyway to integrate into Visual Studio or CLion or similar.
If you want you can still download from source; it just isn't our normal operating mode.
They should be of similar trustworthyness because the same people with the power to merge changes here are also the people producing the binary in question and that binary has a digital signature that it is from us, but of course you can build your own copy. We stamp the commit SHA from vcpkg-tool into the resulting binary for you.
It is in the inner loop of many customers though; feedback on this change has been mostly 'thank you' and 'when can you do macos and linux' thus far.
aa60b7e
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.
Appreciate the response Billy! I agree, this does sound like a net-positive for the community. And most of my concerns would vanish if we didn't have to patch.
Thanks for continuing to build this awesome tool! :)
aa60b7e
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.
I don't know what is in the binary, I don't like the policy, I won't use
vcpkg
anymore due the kind of policies that even might happen in the future.aa60b7e
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.
As I indicated before, you will always be able to build it from source if you want.
aa60b7e
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.
default matters to me
I'm not going to use it because I'm not sure what will happen in the future while considering this change.
aa60b7e
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.
I'm sorry to hear that, but hope you understand that we can't make the experience worse for 99.999% of our customers because you don't trust that we faithfully built the binary by default.
aa60b7e
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.
It takes much more time to build libs than to build the
vcpkg
executable.For the benefit of prebuilt binaries,
conan
is ok.Reviewing Microsoft's Automatic Insertion of Telemetry into C++ Binaries
aa60b7e
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.
That is not true for many people. And it's true for almost noone when there is a cache hit.
So.... you trust conan to provide prebuilt libraries that you link in your program and ship to customers but you don't trust us to provide a courtesy copy of a thing we also provide all the source for?
That doesn't seem relevant.
aa60b7e
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.
The
vcpkg
executable only take a little time to build, a miniute or so, and it needs rebuilding infrequently.I don't use conan, though with conan I can build the binaries myself, it is just not high quality enough.
I've just learn cmake decently, I'll take try to use cmake only.
I'm using Linux now, the official repository is also convenient, more trustable.
It depends, the vcpkg binary use a flag to disable telemetry, but it still has the ability to telemetry, it's not as good as without source code of telemetry.
aa60b7e
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.
Why no option for building instead of downloading e.g.