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

Produce binaries for all supported platforms. #220

Conversation

BillyONeal
Copy link
Member

@BillyONeal BillyONeal commented Oct 15, 2021

This should let customers avoid needing to build vcpkg on all platforms, and let us assume more recent compilers.

(Microsoft internal links to demo builds:

Other changes and notes herein:

  • Use a dash to denote arm64 vcpkg binaries rather than a dot since we already shipped the name vcpkg-macos.
  • Linux "signing" produces a separate PGP signature file which for some reason doesn't exist for test signing, so the extra .sig is expected only there.
  • Adds native macos arm64 bits.
  • Adds macos limiter to 10.13 now that we no longer use std::filesystem.
  • Adds a button to control test signing vs. real signing; test signing is much faster but won't run without jumping through hoops on the target machine to install normally untrusted root certs.
  • The Windows job we previously used only to sign the mac binaries has been merged with the Windows job that does builds to reduce the number of reimages we trigger in the build lab.
  • Our special machines, a Red Hat Enterprise Linux 7 box with our dependencies and a recent Ubuntu box with Docker, are controlled using "1ES Managed Images", an internal-only VM management solution where patches are handled centrally for us. (We would love to use that system for everything in vcpkg but outside of signed builds believe that people being able to replicate how our test machines are set up is important enough to not use internal-only systems there)

@BillyONeal
Copy link
Member Author

Testing results:

  • Alpline 3.11 runs the muslc binary correctly but fails because:
    • we are broken without VCPKG_FORCE_SYSTEM_BINARIES=1 on non-glibc systems
    • we detect an invalid x64-linux-musl triplet
    • we require cmake 3.21 but this Alpine only has 3.15.5
  • Alpine 3.12 ditto
  • Alpine 3.13 ditto
  • Alpine 3.14 ditto
  • RHEL/CentOS 7 runs the glibc binary OK but fails because we can't acquire a recent enough git (require 2.7.4 but 1.8.3.1 is installed)
  • RHEL/CentOS 8 works
  • Debian 9 works (and did not work before since we used to depend on filesystem)
  • Debian 10 works
  • SUSE 15.3 works
  • Ubuntu 16.04 works (and did not work before since we used to depend on filesystem)
  • Ubuntu 18.04 works (I assume all later ones will work)

@BillyONeal
Copy link
Member Author

  • MacOS works (and did not before because we weren't notarizing)
bion@Billys-MacBook-Pro vcpkg % lipo -archs ./vcpkg
x86_64 arm64

@BillyONeal
Copy link
Member Author

@BillyONeal BillyONeal merged commit 842ab70 into microsoft:main Oct 19, 2021
@BillyONeal BillyONeal deleted the you-get-a-binary-and-you-get-a-binary-everybody-gets-a-binary branch October 19, 2021 06:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants