Skip to content

feat: build universal (Apple Silicon + Intel) macOS Tauri binaries by default - #30

Merged
kimdzhekhon merged 1 commit into
mainfrom
feat/tauri-universal-macos-build
Jul 17, 2026
Merged

feat: build universal (Apple Silicon + Intel) macOS Tauri binaries by default#30
kimdzhekhon merged 1 commit into
mainfrom
feat/tauri-universal-macos-build

Conversation

@kimdzhekhon

Copy link
Copy Markdown
Member

Summary

  • macOS Tauri 빌드가 기본으로 --target universal-apple-darwin(arm64+x86_64 lipo, .app 1개)로 빌드됨. rustup 없으면 경고 후 호스트 아키텍처만 빌드. TAURI_UNIVERSAL_MACOS=false로 끌 수 있음
  • 다른 프로젝트(capybite)에서 로컬로 먼저 실험했던 걸 원본 레포로 이식 — 그 로컬 수정은 관리 파일이라 다음 update에 사라질 상태였음
  • 버그 수정: ARTIFACT_PATTERNS["tauri"]target/release/bundle/*/*만 매치해서, --target 지정 빌드(유니버설 포함)의 산출물을 discover_artifacts()가 못 찾음 → 서명 안 한 빌드는 폴더 열기/publish 둘 다 "산출물 없음" 오탐. per-triple 패턴을 별도 상수로 추가해서 해결하되, ARTIFACT_PATTERNS에 직접 안 넣음 (넣으면 preferred_output_roots()가 공통 조상을 시끄러운 최상위 target/까지 넓혀버림)
  • SKILL.md에 새 기본 동작 문서화
  • VERSION 3.6.0 → 3.7.0

Test plan

  • python3 -m unittest tests.test_python_core -v — 31/31 통과 (유니버설 빌드 산출물 탐색 회귀 테스트 포함)
  • bash tests/test-detection.sh — 유니버설 빌드 경로용 신규 테스트 추가, 기존 서명/패키징 테스트는 TAURI_UNIVERSAL_MACOS=false로 격리해 회귀 없음 확인
  • test-python-adapters.sh / test-install.sh / test-update.sh 전부 통과
  • 실제 유니버설 .app이 Intel 맥에서 진짜 실행되는지는 Intel 기기 없어서 못 해봄 (lipo 슬라이스 포함 여부까지만 확인 가능)

… default

Ports a change made locally (and unsafely — it would've been lost on the
next `./build.sh update`, since build-tauri-macos.sh is a managed file) in
a downstream project: macOS Tauri builds now request
`tauri build --target universal-apple-darwin` when rustup is available,
producing a single lipo'd .app that runs on both Apple Silicon and Intel.
Falls back to a host-arch-only build with a warning when rustup is
missing; set TAURI_UNIVERSAL_MACOS=false to opt out.

Also fixes a gap this surfaced: ARTIFACT_PATTERNS["tauri"] only matched
src-tauri/target/release/bundle/*/*, so discover_artifacts() couldn't find
anything under the target-triple-specific path a universal (or any
explicit --target) build produces. Signed builds were unaffected (the
signed .pkg path doesn't depend on the target triple), but unsigned
builds would silently report no artifacts to open or publish. Added the
per-triple bundle patterns to a separate constant scanned by
discover_artifacts() without feeding preferred_output_roots()'s prefix
grouping — folding them into ARTIFACT_PATTERNS directly would have
collapsed the preferred root down to the noisy top-level target/
directory shared with the default bundle pattern.

Bumps VERSION to 3.7.0 so install.sh's pinned v{VERSION} release ref
serves this.
@kimdzhekhon
kimdzhekhon merged commit 6fd5d7b into main Jul 17, 2026
4 checks passed
@kimdzhekhon
kimdzhekhon deleted the feat/tauri-universal-macos-build branch July 17, 2026 10:10
kimdzhekhon added a commit that referenced this pull request Jul 18, 2026
…too (#33)

signing/build superseding the raw bundle output only checked the
default src-tauri/target/release/bundle path. Universal macOS builds
(Apple Silicon + Intel, default since #30) land under
src-tauri/target/<triple>/release/bundle instead, so a signed .pkg
build still left the dmg/macos/create-dmg raw bundle folders open
alongside the final signing/build/*.pkg.

Bump to 3.7.2 and regenerate the manifest so release-tag-based
self-update picks this up.

Co-authored-by: Kim Jaehyun <231584193+kimdzhekhon@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
kimdzhekhon added a commit that referenced this pull request Jul 29, 2026
… default (#30)

Ports a change made locally (and unsafely — it would've been lost on the
next `./build.sh update`, since build-tauri-macos.sh is a managed file) in
a downstream project: macOS Tauri builds now request
`tauri build --target universal-apple-darwin` when rustup is available,
producing a single lipo'd .app that runs on both Apple Silicon and Intel.
Falls back to a host-arch-only build with a warning when rustup is
missing; set TAURI_UNIVERSAL_MACOS=false to opt out.

Also fixes a gap this surfaced: ARTIFACT_PATTERNS["tauri"] only matched
src-tauri/target/release/bundle/*/*, so discover_artifacts() couldn't find
anything under the target-triple-specific path a universal (or any
explicit --target) build produces. Signed builds were unaffected (the
signed .pkg path doesn't depend on the target triple), but unsigned
builds would silently report no artifacts to open or publish. Added the
per-triple bundle patterns to a separate constant scanned by
discover_artifacts() without feeding preferred_output_roots()'s prefix
grouping — folding them into ARTIFACT_PATTERNS directly would have
collapsed the preferred root down to the noisy top-level target/
directory shared with the default bundle pattern.

Bumps VERSION to 3.7.0 so install.sh's pinned v{VERSION} release ref
serves this.

Co-authored-by: Kim Jaehyun <231584193+kimdzhekhon@users.noreply.github.com>
kimdzhekhon added a commit that referenced this pull request Jul 29, 2026
…too (#33)

signing/build superseding the raw bundle output only checked the
default src-tauri/target/release/bundle path. Universal macOS builds
(Apple Silicon + Intel, default since #30) land under
src-tauri/target/<triple>/release/bundle instead, so a signed .pkg
build still left the dmg/macos/create-dmg raw bundle folders open
alongside the final signing/build/*.pkg.

Bump to 3.7.2 and regenerate the manifest so release-tag-based
self-update picks this up.

Co-authored-by: Kim Jaehyun <231584193+kimdzhekhon@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
kimdzhekhon added a commit that referenced this pull request Jul 29, 2026
… default (#30)

Ports a change made locally (and unsafely — it would've been lost on the
next `./build.sh update`, since build-tauri-macos.sh is a managed file) in
a downstream project: macOS Tauri builds now request
`tauri build --target universal-apple-darwin` when rustup is available,
producing a single lipo'd .app that runs on both Apple Silicon and Intel.
Falls back to a host-arch-only build with a warning when rustup is
missing; set TAURI_UNIVERSAL_MACOS=false to opt out.

Also fixes a gap this surfaced: ARTIFACT_PATTERNS["tauri"] only matched
src-tauri/target/release/bundle/*/*, so discover_artifacts() couldn't find
anything under the target-triple-specific path a universal (or any
explicit --target) build produces. Signed builds were unaffected (the
signed .pkg path doesn't depend on the target triple), but unsigned
builds would silently report no artifacts to open or publish. Added the
per-triple bundle patterns to a separate constant scanned by
discover_artifacts() without feeding preferred_output_roots()'s prefix
grouping — folding them into ARTIFACT_PATTERNS directly would have
collapsed the preferred root down to the noisy top-level target/
directory shared with the default bundle pattern.

Bumps VERSION to 3.7.0 so install.sh's pinned v{VERSION} release ref
serves this.

Co-authored-by: Kim Jaehyun <231584193+kimdzhekhon@users.noreply.github.com>
kimdzhekhon added a commit that referenced this pull request Jul 29, 2026
…too (#33)

signing/build superseding the raw bundle output only checked the
default src-tauri/target/release/bundle path. Universal macOS builds
(Apple Silicon + Intel, default since #30) land under
src-tauri/target/<triple>/release/bundle instead, so a signed .pkg
build still left the dmg/macos/create-dmg raw bundle folders open
alongside the final signing/build/*.pkg.

Bump to 3.7.2 and regenerate the manifest so release-tag-based
self-update picks this up.

Co-authored-by: Kim Jaehyun <231584193+kimdzhekhon@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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