Skip to content

[SDK] Add darwin-x64 (Intel macOS) as the sixth per-platform package (#571)#575

Draft
MGudgin wants to merge 1 commit into
user/gudge/mxc-512-phase6-tests-docsfrom
user/gudge/mxc-571-darwin-x64
Draft

[SDK] Add darwin-x64 (Intel macOS) as the sixth per-platform package (#571)#575
MGudgin wants to merge 1 commit into
user/gudge/mxc-512-phase6-tests-docsfrom
user/gudge/mxc-571-darwin-x64

Conversation

@MGudgin

@MGudgin MGudgin commented Jun 26, 2026

Copy link
Copy Markdown
Member

Note

Stacked on #512. This PR's base is user/gudge/mxc-512-phase6-tests-docs,
so the diff shows only the single darwin-x64 commit. It must merge after
#512. Once #512 lands on main, retarget this PR's base to main (GitHub
auto-retargets when the base branch is deleted on merge).


Summary

Adds Intel macOS (darwin-x64) support to the SDK's per-platform binary
delivery model introduced in #512, shipping mxc-exec-mac for
x86_64-apple-darwin as a sixth @microsoft/mxc-sdk-darwin-x64
optional-dependency package.

The Seatbelt backend is architecture-agnostic — it spawns
/usr/bin/sandbox-exec, which ships on every macOS — so there is no
arch-specific code
in the backend (grep finds only cfg(target_os = "macos"),
no target_arch). #512 excluded darwin-x64 purely for delivery/CI reasons, not
capability; this PR reverses that as a build-and-ship change.

Closes #571

Details

  • New platform package sdk/platform-packages/darwin-x64/ (manifest + README),
    mirroring darwin-arm64. darwin-x64 added to SUPPORTED_TUPLES in both
    platform.ts and the postinstall .cjs copy; meta optionalDependencies
    stamped to six packages via scripts/sync-platform-package-versions.js
    (lockfile refreshed).
  • Unsupported-host messaging (platform.ts, helper.ts, postinstall-check.cjs)
    now describes the shipped set as win32/linux/darwin × (x64, arm64) — Intel
    macOS is no longer called unsupported.
  • build-mac.sh already builds x86_64-apple-darwin; it now stages the binary
    into the darwin-x64 package.
  • CI builds + tests the x64 slice natively on Intel runners. GHA
    Build.MacOS.Job.yml is a {arm64: macos-14, x64: macos-13} matrix; the GHA
    package + integration jobs gain darwin-x64 (integration on macos-13). ADO
    Mac.Build.Job.yml is parametrized (triplet/jobName/vmImage) and instantiated
    twice from 1ES.Build.Stages.yml (macOS-15-arm64 + macOS-13), with
    darwin-x64 added to the ADO package targets and integration matrix.
  • Tests that asserted darwin-x64 was unsupported are flipped to "supported"; the
    release-completeness / version-sync "zombie package" fixtures now use a
    genuinely-fictional freebsd-x64.
  • Docs updated to "six packages" (sdk/README.md, .azure-pipelines/README.md,
    .github/copilot-instructions.md).

Tests

  • SDK unit: 284 tests, 276 pass / 8 skip / 0 fail (incl. the bidirectional
    SUPPORTED_TUPLES == on-disk dirs invariant, now 6/6). Script tests:
    32 pass. sync --check OK (6 packages). tsc --noEmit clean. All touched
    GHA + ADO YAML validates.
  • Not verifiable locally (CI-only): the actual x86_64-apple-darwin
    build/test on the Intel runners, darwin-x64 packaging (release-completeness
    gate over real artifacts), the Intel integration E2E, and ADO ESRP
    signing/notarization of the x64 slice.

Reviewer notes

  • ⚠️ macos-13 is Apple's last hosted Intel runner and is being deprecated
    (GitHub + Azure). The x64 build/test/integration lanes depend on it; when it
    is retired they will need revisiting (cross-compile + Rosetta-on-arm64, or
    removal). Calling this out as a known maintenance risk, not a blocker.
  • Please confirm on a pipeline run that the x64 mac build, ESRP signing of
    mxc-exec-mac (x86_64), and the darwin-x64 packaging + integration lanes
    behave as expected — these are the parts that cannot be exercised off-pipeline.
Microsoft Reviewers: Open in CodeFlow

…571)

This PR adds Intel macOS (`darwin-x64`) support to the SDK's per-platform
binary delivery model introduced in #512, shipping `mxc-exec-mac` for
`x86_64-apple-darwin` as a sixth `@microsoft/mxc-sdk-darwin-x64`
optional-dependency package. The Seatbelt backend is architecture-agnostic
(it spawns `/usr/bin/sandbox-exec`, present on every macOS), so this is a
build-and-ship change, not a runtime-capability change.

Built on top of #512.

Details

* New platform package `sdk/platform-packages/darwin-x64/` (manifest + README),
  mirroring `darwin-arm64`. `darwin-x64` is added to `SUPPORTED_TUPLES` in both
  the SDK (`platform.ts`) and the postinstall `.cjs` copy; the meta package's
  `optionalDependencies` pin was stamped via
  `scripts/sync-platform-package-versions.js` (now six packages, lockfile
  refreshed).
* Unsupported-host messaging (`platform.ts`, `helper.ts`, `postinstall-check.cjs`)
  no longer calls Intel macOS unsupported; it now describes the shipped set as
  win32/linux/darwin × (x64, arm64).
* `build-mac.sh` already cross/native-builds `x86_64-apple-darwin`; it now stages
  the binary into the darwin-x64 package (the manifest gate is satisfied).
* CI builds and tests the x64 slice natively on Intel runners: GHA
  `Build.MacOS.Job.yml` is a {arm64: macos-14, x64: macos-13} matrix; the GHA
  package + integration jobs gain darwin-x64 (integration on `macos-13`). ADO
  `Mac.Build.Job.yml` is parametrized (triplet/jobName/vmImage) and instantiated
  twice from `1ES.Build.Stages.yml` (arm64 `macOS-15-arm64`, x64 `macOS-13`),
  with darwin-x64 added to the ADO package targets and integration matrix.
* Tests that asserted darwin-x64 was unsupported are flipped to "supported"; the
  release-completeness / version-sync "zombie package" fixtures now use a
  genuinely-fictional tuple (`freebsd-x64`) instead of the now-real darwin-x64.
* Docs updated to "six packages" (`sdk/README.md`, `.azure-pipelines/README.md`,
  `.github/copilot-instructions.md`).

Tests

* SDK unit suite: 284 tests, 276 pass / 8 skip / 0 fail (incl. the
  bidirectional `SUPPORTED_TUPLES == on-disk dirs` invariant, now 6/6, and the
  flipped darwin-x64 supported-tuple / supported-but-missing cases). Script
  tests: 32 pass / 0 fail. `sync --check` OK (6 packages). `tsc --noEmit` clean.
  All touched GHA + ADO YAML validates.
* Not verifiable locally (CI-only, flagged for review): the actual
  `x86_64-apple-darwin` build/test on the Intel runners, the darwin-x64
  packaging (release-completeness gate over real artifacts), the Intel
  integration E2E, and ADO ESRP signing/notarization of the x64 slice. The
  `macos-13` Intel image is Apple's last hosted Intel runner and is being
  deprecated — the lane may need revisiting (Rosetta-on-arm64 or removal) when
  it is retired.

Closes #571

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Generated-with: claude-opus-4.8
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.

1 participant