Skip to content

[#46]fix:Intel Mac でバックエンドが CGO 無効ビルドにより起動失敗する問題を修正#48

Merged
KimMaru10 merged 1 commit into
masterfrom
fix/46-intel-mac-cgo-build
May 14, 2026
Merged

[#46]fix:Intel Mac でバックエンドが CGO 無効ビルドにより起動失敗する問題を修正#48
KimMaru10 merged 1 commit into
masterfrom
fix/46-intel-mac-cgo-build

Conversation

@KimMaru10
Copy link
Copy Markdown
Owner

変更の概要

Intel Mac で Backnote.app を開いた直後に「処理が予期せず終了しました」「起動に失敗しました」のアラートが連続表示され、その後ウィンドウは開くものの API へ繋がらない事象を修正する。

原因は darwin/amd64 向けバックエンドが CGO_ENABLED=0 でビルドされていたこと。Apple Silicon マシン上で GOOS=darwin GOARCH=amd64 go build を走らせると Go がクロスコンパイル扱いで CGO を無効化するため、mattn/go-sqlite3 が stub になり、起動直後に go-sqlite3 requires cgo to work で死亡していた。

関連 Issue

変更の種類

  • バグ修正(fix)

変更内容の詳細

  • scripts/build-backend.sh の darwin/arm64・darwin/amd64 ビルドで CGO_ENABLED=1CC / CXX のアーキ指定を明示
  • .github/workflows/release.ymlrelease-mac ジョブも同じ修正を反映 (CI はベタ書きで build-backend.sh を呼んでいないため両方直す必要があった)
  • Windows / Linux 側は本 PR スコープ外として chore: Windows / Linux バックエンドビルドも CGO_ENABLED=1 を明示する #47 に分離

動作確認

  • ローカルで動作確認済み
  • 既存の機能に影響がないことを確認済み
  • テストを追加・更新済み(該当する場合) ← ビルドスクリプトのため対象外

検証ログ

修正後の x64 バイナリを Apple Silicon マシン (Rosetta) 上で実行:

```
=== curl /api/health ===
HTTP/1.1 200 OK
{"status":"ok"}

=== log ===
dbwriter: started
Backnote backend starting on :18082
⇨ http server started on [::]:18082
GET /api/health status=200
```

otool -L の libSystem current version も 0.0.0 (stub) → 1351.0.0 (CGO=1) に変化していることを確認。

レビュアーへのメモ

  • マージ後は配布物 (v1.1.1 dmg) が修正前のままなので、v1.1.2 タグを打って再配布が必要
  • arm64 側は元々ネイティブビルドで CGO=1 だったが、クロス設定を統一する意図で同じ書式を適用 (実質的な挙動変化はなし)

チェックリスト

  • セルフレビュー済み (code-reviewer エージェントの Critical 指摘も反映)
  • コード規約に沿っている
  • デバッグ用の出力(console.log等)を削除済み
  • ハードコードされた認証情報・APIキーがない

mattn/go-sqlite3 は CGO 必須だが、Apple Silicon マシン上で
GOOS=darwin GOARCH=amd64 go build するとクロスコンパイル扱いとなり
Go が CGO_ENABLED=0 をデフォルトにしてしまっていた。結果 Intel Mac 向け
バイナリは stub 状態で配布され、起動直後に
"go-sqlite3 requires cgo to work" で死亡 → 「処理が予期せず終了しました」
「起動に失敗しました」が連続表示されていた。

scripts/build-backend.sh と .github/workflows/release.yml の macOS 向け
ビルドで CGO_ENABLED=1 と CC/CXX のアーキ指定を明示し、クロス CGO
ビルドが再現性高く成立するようにした。Windows/Linux の同様の明示は
スコープを切り分けるため #47 に分離。
@KimMaru10
Copy link
Copy Markdown
Owner Author

@claude このプルリクエストをレビューしてください。

@claude
Copy link
Copy Markdown

claude Bot commented May 14, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

@KimMaru10 KimMaru10 merged commit 2bd8a48 into master May 14, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant