Update macOS, switch to new M4 hardware - #53316
Update macOS, switch to new M4 hardware#53316Billy O'Neal (BillyONeal) wants to merge 31 commits into
Conversation
Fix review observations from GPT 5.6-Sol by propagating setup and registration failures, making downloads fail reliably, using portable sed syntax, and preserving diagnostic state. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Note that isal and mpir still want host yasm but they are excluded on arm64-osx, and should they ever be touched again they should be switched to the `yasm` port rather than host bits given that official yasm releases have memory corruption bugs.
Update pinned versions: - macosvm 0.2-2 -> 0.2-3 - macOS 26.4.1 (25E253) -> 26.6 (25G72) - Xcode and Command Line Tools -> 26.6 - PowerShell 7.x -> 7.6.4 - Azure Pipelines agent 4.266.2 -> 5.276.0 - Node.js 22.x -> 24.x Also remove the obsolete Parallels directory layer while preserving vcpkg-osx filesystem names and PrOsx Azure DevOps pool names. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Migrates macOS CI provisioning to M4 hosts and updates the build image/toolchain.
Changes:
- Replaces legacy provisioning scripts with host/guest automation.
- Updates macOS, Xcode, Azure agent, macosvm, and Node.js versions.
- Revises KVM-based deployment documentation and account naming.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
setup-guest.sh |
Removes obsolete provisioning script. |
setup-box.sh |
Removes obsolete guest setup script. |
register-guest.sh |
Removes legacy registration script. |
README.md |
Documents the new M4 workflow. |
host-register-guest.sh |
Adds guest agent registration. |
host-prepare.sh |
Adds host dependency setup. |
host-prepare-guest.sh |
Adds guest preparation orchestration. |
host-install-xcode.sh |
Adds Xcode installation automation. |
guest-prepare.sh |
Installs guest tools and agent. |
azure-pipelines.yml |
Selects the new pool and Node.js 24. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Hot damn a no-op run in 52s I love it |
|
Full rebuild submitted: https://dev.azure.com/vcpkg/public/_build/results?buildId=135687&view=results |
|
M4: Elapsed time to handle pkgconf:arm64-osx: 5.4 s |
Well, pkgconf is reasonable C code ;-) Waiting for llvm. |
M4: Elapsed time to handle llvm:arm64-osx: 31 min |
The macOS 26.6 / Xcode 26.6 image enables newer C and C++ diagnostics and exposes several assumptions in older upstream sources. - bde: exempt Apple Clang from the sized-deallocation feature-macro assertion because Apple Clang implements the feature without defining the macro. - glpk: keep the legacy bool definitions before C23, but avoid redeclaring the C23 bool keyword when compiling in C23 mode. - highs: remove upstream compiler-name preferences so CMake honors the compiler selected by the user or vcpkg toolchain instead of finding an installed LLVM compiler. - krb5: expand the K5_AC_INIT wrapper in configure.ac so Autoconf 2.72 sees AC_INIT directly. - libtar: convert the basename and dirname compatibility functions from K&R definitions to modern prototypes accepted by C23 compilers. - nettle: give the bundled getopt and getenv declarations complete prototypes compatible with the macOS 26.6 SDK. - qt5-location: backport the newer Boost.MPL constant-expression path for its vendored Boost 1.65.1 headers. - rubberband: include stddef.h explicitly so size_t no longer depends on a transitive include. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d554aa3e-c0dc-4402-b1df-5533037298bd
|
I have not reviewed the most recent commit myself and will look on Monday |
Prevent Autoconf from selecting C23 for legacy cyrus-sasl and GLPK sources, avoid host stripping during libtar Android installs, and remove stale CI baseline entries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e0959273-8dce-4e1c-8661-edc5d6f3c350
# Conflicts: # ports/highs/portfile.cmake # ports/highs/vcpkg.json # versions/baseline.json # versions/h-/highs.json
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
| # policies up to CMake 3.27 | ||
| cmake_minimum_required(VERSION 3.15...3.27) | ||
|
|
||
| -# set preference for clang compiler and intel compiler over gcc and other compilers |
There was a problem hiding this comment.
I'm not going to upstream this as it is a vcpkg-ism
| @@ -1,11 +1,12 @@ | |||
| diff --git a/highs.pc.in b/highs.pc.in | |||
There was a problem hiding this comment.
Note that this is just regenerating the patch, no meaningful changes here.
| @@ -0,0 +1,14 @@ | |||
| diff --git a/src/3rdparty/mapbox-gl-native/deps/boost/1.65.1/include/boost/mpl/aux_/integral_wrapper.hpp b/src/3rdparty/mapbox-gl-native/deps/boost/1.65.1/include/boost/mpl/aux_/integral_wrapper.hpp | |||
There was a problem hiding this comment.
I'm not going to submit this upstream because qt5 is dead.
It effectively backports the behavior from current Boost back to this vendored 1.65.1: https://github.com/boostorg/mpl/blob/9d1f81ffeb055ea1ce0d96370bf07c40a2843878/include/boost/mpl/aux_/integral_wrapper.hpp#L56-L65
Migrate to vcpkg-make so INSTALL_PROGRAM is overridden during installation, preventing the host strip tool from processing target binaries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Quote the INSTALL make expression so vcpkg-make's shell does not interpret it as command substitution before invoking make. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
David Justo (davidmrdavid)
left a comment
There was a problem hiding this comment.
a few non-blocking nits.
….md as requested by @davidmrdavid
The M1 mac minis used for the vcpkg build lab are approaching 5 years old which is when the lab folks want to replace them. They've set up M4 mac minis for us to use. The new machines are in a more restricted network configuration which prevents us from SSHing to them -- KVM software only.