From 0cdb740e28079aac3e1f973ce955d94043710edf Mon Sep 17 00:00:00 2001 From: "sentry-junior[bot]" <264270552+sentry-junior[bot]@users.noreply.github.com> Date: Wed, 7 Oct 2026 09:16:15 +0000 Subject: [PATCH 1/4] build(macos): Stop releasing Intel macOS binaries Remove the x86_64 and universal macOS release builds, and switch everything that consumed the universal binary (npm darwin package, npm fallback download, Python wheels, Homebrew formula, self-update) to the arm64 binary. Intel-based Mac users need to build from source. Co-Authored-By: Daniel Szoke <7881302+szokeasaurusrex@users.noreply.github.com> --- .craft.yml | 7 ++- .github/workflows/build.yml | 56 +------------------- CHANGELOG.md | 4 ++ lib/helper.ts | 7 ++- npm-binary-distributions/darwin/package.json | 3 ++ scripts/install.js | 3 +- scripts/wheels | 8 --- src/api/mod.rs | 8 +-- 8 files changed, 20 insertions(+), 76 deletions(-) diff --git a/.craft.yml b/.craft.yml index 332a778e78..d86d8974f4 100644 --- a/.craft.yml +++ b/.craft.yml @@ -53,8 +53,9 @@ targets: version "{{version}}" license "FSL-1.1-MIT" if OS.mac? - url "https://downloads.sentry-cdn.com/sentry-cli/{{version}}/sentry-cli-Darwin-universal" - sha256 "{{checksums.sentry-cli-Darwin-universal}}" + depends_on arch: :arm64 + url "https://downloads.sentry-cdn.com/sentry-cli/{{version}}/sentry-cli-Darwin-arm64" + sha256 "{{checksums.sentry-cli-Darwin-arm64}}" elsif OS.linux? if Hardware::CPU.arm? if Hardware::CPU.is_64_bit? @@ -108,9 +109,7 @@ targets: target: getsentry/sentry-cli targetFormat: '{{{target}}}:latest' requireNames: - - /^sentry-cli-Darwin-x86_64$/ - /^sentry-cli-Darwin-arm64$/ - - /^sentry-cli-Darwin-universal$/ - /^sentry-cli-Linux-i686$/ - /^sentry-cli-Linux-x86_64$/ - /^sentry-cli-Linux-armv7$/ diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9b8a125314..03b5259fc6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -68,8 +68,6 @@ jobs: fail-fast: false matrix: include: - - arch: x86_64 - target: x86_64-apple-darwin - arch: arm64 target: aarch64-apple-darwin @@ -84,34 +82,6 @@ jobs: - name: Add Rustup Target run: rustup target add ${{ matrix.target }} - # On x86_64, this environment variable specifies to the openssl-sys crate - # where to find the OpenSSL library. - - name: Set OpenSSL env (x86_64) - if: matrix.arch == 'x86_64' - run: echo "X86_64_APPLE_DARWIN_OPENSSL_DIR=${{ github.workspace }}/openssl-x86_64" >> $GITHUB_ENV - - - name: Get OpenSSL cache month (x86_64) - if: matrix.arch == 'x86_64' - id: cache-date - run: echo "month=$(date +%Y-%m)" >> $GITHUB_OUTPUT - - - name: Cache x86_64 OpenSSL - if: matrix.arch == 'x86_64' - id: cache-openssl-x86 - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # 6.1.0 - with: - path: ${{ env.X86_64_APPLE_DARWIN_OPENSSL_DIR }} - key: openssl-x86_64-${{ runner.os }}-${{ steps.cache-date.outputs.month }} - - # To cross-compile for x86_64 from an ARM-based macOS runner, we need to have the - # x86_64 OpenSSL libraries installed locally. - - name: Download x86_64 OpenSSL - if: matrix.arch == 'x86_64' && steps.cache-openssl-x86.outputs.cache-hit != 'true' - run: | - arch -x86_64 brew fetch --bottle-tag=tahoe openssl@3.5 - mkdir -p $X86_64_APPLE_DARWIN_OPENSSL_DIR - tar xzf $(arch -x86_64 brew --cache --bottle-tag=tahoe openssl@3.5) -C $X86_64_APPLE_DARWIN_OPENSSL_DIR --strip-components=2 - - name: Cache Dependencies uses: swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # 2.9.1 @@ -127,36 +97,14 @@ jobs: path: sentry-cli-Darwin-${{ matrix.arch }} if-no-files-found: 'error' - macos_universal: - needs: macos - name: macOS universal - runs-on: macos-26 - - steps: - - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # 8.0.1 - with: - pattern: unsigned-bin-macos-* - merge-multiple: true - - - name: Link universal binary - run: lipo -create -output sentry-cli-Darwin-universal sentry-cli-Darwin-x86_64 sentry-cli-Darwin-arm64 - - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # 7.0.1 - with: - name: unsigned-bin-macos-universal - path: sentry-cli-Darwin-universal - if-no-files-found: 'error' - sign-macos-binaries: strategy: fail-fast: false matrix: include: - - arch: universal - - arch: x86_64 - arch: arm64 - needs: [macos, macos_universal] + needs: [macos] name: Sign & Notarize macOS Binary (${{ matrix.arch }}) runs-on: ubuntu-24.04 @@ -364,7 +312,7 @@ jobs: path: binary-artifacts - name: Move binaries into distribution packages run: | - mv binary-artifacts/sentry-cli-Darwin-universal npm-binary-distributions/darwin/bin/sentry-cli + mv binary-artifacts/sentry-cli-Darwin-arm64 npm-binary-distributions/darwin/bin/sentry-cli mv binary-artifacts/sentry-cli-Linux-armv7 npm-binary-distributions/linux-arm/bin/sentry-cli mv binary-artifacts/sentry-cli-Linux-aarch64 npm-binary-distributions/linux-arm64/bin/sentry-cli mv binary-artifacts/sentry-cli-Linux-i686 npm-binary-distributions/linux-i686/bin/sentry-cli diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a9f9c6781..05b3704036 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased + +We are no longer releasing Sentry CLI for Intel-based (x86_64) Macs. Starting with this release, we only publish macOS binaries for Apple Silicon (arm64), and we no longer publish the universal macOS binary. If you use Sentry CLI on an Intel-based Mac, please build it from source instead. To use a self-built binary with the `@sentry/cli` npm package, set `SENTRYCLI_SKIP_DOWNLOAD=1` when installing the package, and set `SENTRY_BINARY_PATH` to the path of your binary when running it ([#PR_NUMBER](https://github.com/getsentry/sentry-cli/pull/PR_NUMBER)). + ## 3.8.0 ### Improvements diff --git a/lib/helper.ts b/lib/helper.ts index dd83538347..e5bbcb5781 100644 --- a/lib/helper.ts +++ b/lib/helper.ts @@ -40,7 +40,10 @@ function getDistributionForThisPlatform() { let packageName = undefined; if (platform === 'darwin') { - packageName = '@sentry/cli-darwin'; + // We only release macOS binaries for Apple Silicon (arm64). + if (arch === 'arm64') { + packageName = '@sentry/cli-darwin'; + } } else if (platform === 'linux' || platform === 'freebsd' || platform === 'android') { switch (arch) { case 'x64': @@ -101,7 +104,7 @@ function throwUnsupportedPlatformError(): void { `Unsupported operating system or architecture! Sentry CLI does not work on this architecture. Sentry CLI supports: -- Darwin (macOS) +- Darwin (macOS) on arm64 (Apple Silicon) - Linux and FreeBSD on x64, x86, ia32, arm64, and arm architectures - Windows x64, x86, and ia32 architectures` ); diff --git a/npm-binary-distributions/darwin/package.json b/npm-binary-distributions/darwin/package.json index ec3f2eb8c9..261791f3bb 100644 --- a/npm-binary-distributions/darwin/package.json +++ b/npm-binary-distributions/darwin/package.json @@ -12,5 +12,8 @@ }, "os": [ "darwin" + ], + "cpu": [ + "arm64" ] } diff --git a/scripts/install.js b/scripts/install.js index fd02e64206..1c8f983689 100755 --- a/scripts/install.js +++ b/scripts/install.js @@ -74,7 +74,8 @@ function getDownloadUrl(platform, arch) { } switch (platform) { case 'darwin': - return `${releasesUrl}-Darwin-universal`; + // We only release macOS binaries for Apple Silicon (arm64). + return arch === 'arm64' ? `${releasesUrl}-Darwin-arm64` : null; case 'win32': return `${releasesUrl}-Windows-${archString}.exe`; case 'linux': diff --git a/scripts/wheels b/scripts/wheels index 7219f6705d..6e46b4fd74 100755 --- a/scripts/wheels +++ b/scripts/wheels @@ -20,14 +20,6 @@ WHEELS = ( src='sentry-cli-Darwin-arm64', plat='macosx_11_0_arm64', ), - Wheel( - src='sentry-cli-Darwin-universal', - plat='macosx_11_0_universal2', - ), - Wheel( - src='sentry-cli-Darwin-x86_64', - plat='macosx_10_15_x86_64', - ), Wheel( src='sentry-cli-Linux-aarch64', plat='manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_2_aarch64', diff --git a/src/api/mod.rs b/src/api/mod.rs index 4fda4ae5b3..090ab0f568 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -333,13 +333,7 @@ impl Api { pub fn get_latest_sentrycli_release(&self) -> ApiResult> { let resp = self.get(RELEASE_REGISTRY_LATEST_URL)?; - // Prefer universal binary on macOS - let arch = match PLATFORM { - "darwin" => "universal", - _ => ARCH, - }; - - let ref_name = format!("sentry-cli-{}-{arch}{EXT}", capitalize_string(PLATFORM)); + let ref_name = format!("sentry-cli-{}-{ARCH}{EXT}", capitalize_string(PLATFORM)); info!("Looking for file named: {ref_name}"); if resp.status() == 200 { From 0400b70f799b9e2bcb2dd3c9e37a84b1dd397ead Mon Sep 17 00:00:00 2001 From: "sentry-junior[bot]" <264270552+sentry-junior[bot]@users.noreply.github.com> Date: Wed, 7 Oct 2026 09:16:46 +0000 Subject: [PATCH 2/4] docs(changelog): Link PR in Intel macOS entry Co-Authored-By: Daniel Szoke <7881302+szokeasaurusrex@users.noreply.github.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05b3704036..8042c872ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## Unreleased -We are no longer releasing Sentry CLI for Intel-based (x86_64) Macs. Starting with this release, we only publish macOS binaries for Apple Silicon (arm64), and we no longer publish the universal macOS binary. If you use Sentry CLI on an Intel-based Mac, please build it from source instead. To use a self-built binary with the `@sentry/cli` npm package, set `SENTRYCLI_SKIP_DOWNLOAD=1` when installing the package, and set `SENTRY_BINARY_PATH` to the path of your binary when running it ([#PR_NUMBER](https://github.com/getsentry/sentry-cli/pull/PR_NUMBER)). +We are no longer releasing Sentry CLI for Intel-based (x86_64) Macs. Starting with this release, we only publish macOS binaries for Apple Silicon (arm64), and we no longer publish the universal macOS binary. If you use Sentry CLI on an Intel-based Mac, please build it from source instead. To use a self-built binary with the `@sentry/cli` npm package, set `SENTRYCLI_SKIP_DOWNLOAD=1` when installing the package, and set `SENTRY_BINARY_PATH` to the path of your binary when running it ([#3425](https://github.com/getsentry/sentry-cli/pull/3425)). ## 3.8.0 From 915c449b5f76aff643a6bbb285820c0cd63bcd14 Mon Sep 17 00:00:00 2001 From: "sentry-junior[bot]" <264270552+sentry-junior[bot]@users.noreply.github.com> Date: Wed, 7 Oct 2026 09:51:20 +0000 Subject: [PATCH 3/4] fix(npm): Point Intel Mac users to the last compatible release On Intel-based Macs, fail with an error naming 3.8.0 as the last release with Intel macOS binaries and telling users to pin it, or to build from source. Co-Authored-By: Daniel Szoke <7881302+szokeasaurusrex@users.noreply.github.com> --- CHANGELOG.md | 2 +- lib/helper.ts | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8042c872ba..c2cc1f27ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## Unreleased -We are no longer releasing Sentry CLI for Intel-based (x86_64) Macs. Starting with this release, we only publish macOS binaries for Apple Silicon (arm64), and we no longer publish the universal macOS binary. If you use Sentry CLI on an Intel-based Mac, please build it from source instead. To use a self-built binary with the `@sentry/cli` npm package, set `SENTRYCLI_SKIP_DOWNLOAD=1` when installing the package, and set `SENTRY_BINARY_PATH` to the path of your binary when running it ([#3425](https://github.com/getsentry/sentry-cli/pull/3425)). +We are no longer releasing Sentry CLI for Intel-based (x86_64) Macs. Starting with this release, we only publish macOS binaries for Apple Silicon (arm64), and we no longer publish the universal macOS binary. Version 3.8.0 is the last release that supports Intel-based Macs. If you use Sentry CLI on an Intel-based Mac, please pin Sentry CLI to version 3.8.0, or build it from source instead. To use a self-built binary with the `@sentry/cli` npm package, set `SENTRYCLI_SKIP_DOWNLOAD=1` when installing the package, and set `SENTRY_BINARY_PATH` to the path of your binary when running it ([#3425](https://github.com/getsentry/sentry-cli/pull/3425)). ## 3.8.0 diff --git a/lib/helper.ts b/lib/helper.ts index e5bbcb5781..6037e5930f 100644 --- a/lib/helper.ts +++ b/lib/helper.ts @@ -94,12 +94,29 @@ function getDistributionForThisPlatform() { return { packageName, subpath }; } +/** + * The last Sentry CLI version that shipped binaries for Intel-based (x86_64) Macs. + */ +const LAST_INTEL_MAC_VERSION = '3.8.0'; + /** * Throws an error with a message stating that Sentry CLI doesn't support the current platform. * * @returns nothing. It throws. */ function throwUnsupportedPlatformError(): void { + if (os.platform() === 'darwin' && os.arch() === 'x64') { + throw new Error( + `Sentry CLI no longer supports Intel-based (x86_64) Macs. + +The last version of Sentry CLI that supports Intel-based Macs is ${LAST_INTEL_MAC_VERSION}. To keep using Sentry CLI on an Intel-based Mac, pin the "@sentry/cli" package to version ${LAST_INTEL_MAC_VERSION}. + +Alternatively, build Sentry CLI from source, install this package with SENTRYCLI_SKIP_DOWNLOAD=1, and set SENTRY_BINARY_PATH to the path of your binary. + +If you are on an Apple Silicon Mac, you are likely running an x64 build of Node.js under Rosetta. Switch to an arm64 build of Node.js instead.` + ); + } + throw new Error( `Unsupported operating system or architecture! Sentry CLI does not work on this architecture. From 2d6cd1098c1707eb1806856dcbc3d3565537b861 Mon Sep 17 00:00:00 2001 From: "sentry-junior[bot]" <264270552+sentry-junior[bot]@users.noreply.github.com> Date: Wed, 7 Oct 2026 12:19:56 +0000 Subject: [PATCH 4/4] docs(changelog): Link Intel macOS entry to its PR Co-Authored-By: Daniel Szoke <7881302+szokeasaurusrex@users.noreply.github.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2cc1f27ac..932e80731d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## Unreleased -We are no longer releasing Sentry CLI for Intel-based (x86_64) Macs. Starting with this release, we only publish macOS binaries for Apple Silicon (arm64), and we no longer publish the universal macOS binary. Version 3.8.0 is the last release that supports Intel-based Macs. If you use Sentry CLI on an Intel-based Mac, please pin Sentry CLI to version 3.8.0, or build it from source instead. To use a self-built binary with the `@sentry/cli` npm package, set `SENTRYCLI_SKIP_DOWNLOAD=1` when installing the package, and set `SENTRY_BINARY_PATH` to the path of your binary when running it ([#3425](https://github.com/getsentry/sentry-cli/pull/3425)). +We are no longer releasing Sentry CLI for Intel-based (x86_64) Macs. Starting with this release, we only publish macOS binaries for Apple Silicon (arm64), and we no longer publish the universal macOS binary. Version 3.8.0 is the last release that supports Intel-based Macs. If you use Sentry CLI on an Intel-based Mac, please pin Sentry CLI to version 3.8.0, or build it from source instead. To use a self-built binary with the `@sentry/cli` npm package, set `SENTRYCLI_SKIP_DOWNLOAD=1` when installing the package, and set `SENTRY_BINARY_PATH` to the path of your binary when running it ([#3426](https://github.com/getsentry/sentry-cli/pull/3426)). ## 3.8.0