Skip to content

Update macOS, switch to new M4 hardware - #53316

Draft
Billy O'Neal (BillyONeal) wants to merge 16 commits into
microsoft:masterfrom
BillyONeal:macos-m4
Draft

Update macOS, switch to new M4 hardware#53316
Billy O'Neal (BillyONeal) wants to merge 16 commits into
microsoft:masterfrom
BillyONeal:macos-m4

Conversation

@BillyONeal

@BillyONeal Billy O'Neal (BillyONeal) commented Aug 8, 2026

Copy link
Copy Markdown
Member

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.

Billy O'Neal (BillyONeal) and others added 12 commits August 7, 2026 11:57
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>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread scripts/azure-pipelines/osx/README.md Outdated
Comment thread scripts/azure-pipelines/osx/README.md
Comment thread scripts/azure-pipelines/osx/README.md Outdated
Comment thread scripts/azure-pipelines/osx/host-register-guest.sh
Comment thread scripts/azure-pipelines/osx/host-prepare-guest.sh
Comment thread scripts/azure-pipelines/osx/host-install-xcode.sh
@BillyONeal

Copy link
Copy Markdown
Member Author

Hot damn a no-op run in 52s I love it

@BillyONeal

Copy link
Copy Markdown
Member Author

@BillyONeal

Copy link
Copy Markdown
Member Author

M4: Elapsed time to handle pkgconf:arm64-osx: 5.4 s
M1: Elapsed time to handle pkgconf:arm64-osx: 6.9 s

@dg0yt

Copy link
Copy Markdown
Contributor

M4: Elapsed time to handle pkgconf:arm64-osx: 5.4 s M1: Elapsed time to handle pkgconf:arm64-osx: 6.9 s

Well, pkgconf is reasonable C code ;-) Waiting for llvm.

@BillyONeal

Copy link
Copy Markdown
Member Author

Well, pkgconf is reasonable C code ;-) Waiting for llvm.

M4: Elapsed time to handle llvm:arm64-osx: 31 min
M1: Elapsed time to handle llvm:arm64-osx: 47 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
@BillyONeal
Billy O'Neal (BillyONeal) marked this pull request as draft August 8, 2026 18:42
@BillyONeal

Copy link
Copy Markdown
Member Author

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
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.

3 participants