Skip to content

build: support Apple Silicon macOS - #96

Draft
EmilGH wants to merge 3 commits into
GarlicoinOrg:masterfrom
EmilGH:agent/apple-silicon-macos-port
Draft

build: support Apple Silicon macOS#96
EmilGH wants to merge 3 commits into
GarlicoinOrg:masterfrom
EmilGH:agent/apple-silicon-macos-port

Conversation

@EmilGH

@EmilGH EmilGH commented Aug 18, 2026

Copy link
Copy Markdown

Summary

  • make Garlicoin Core build on Apple Silicon with current macOS SDK and Homebrew packages
  • preserve Berkeley DB 4.8 wallet compatibility and leave the scrypt algorithm unchanged
  • repair the macOS deployment helper for current Python, Homebrew dylibs, and Qt framework layouts
  • produce an arm64 application bundle and document a reproducible macOS build

Root causes addressed

The legacy build used names now provided by the macOS SDK, removed Boost.Filesystem APIs, std::random_shuffle, Python APIs removed in Python 3, and deployment assumptions that no longer match current Homebrew Qt frameworks and dylibs.

The scrypt change only namespaces Garlicoin's local endian helper functions to avoid SDK symbol collisions. The wallet shuffle remains Fisher-Yates and continues to use Garlicoin's existing RNG. No wallet serialization or database-format code is changed.

Validation

  • make -j8 completes successfully
  • focused scrypt hash test passes
  • focused wallet subset-selection test passes
  • Python utility test harness passes
  • isolated regtest wallet creation, reopening, and shutdown pass
  • ad-hoc signed Garlicoin-Qt.app passes strict deep signature verification
  • all 186 Mach-O files in the bundle are arm64
  • the application bundle has no external Homebrew/user-path runtime dependencies
  • Garlicoin-Qt.dmg passes hdiutil verify

make check builds the complete core and Qt test binaries but the inherited suite is not currently green: the core runner reports 225 failures, and four Qt groups fail. The failures include stale Litecoin address/hash/amount fixtures, an expired payment-test certificate, and cascading ECC fixture assertions. Focused tests covering the compatibility changes above pass; this PR intentionally does not broaden into rewriting unrelated historical fixtures.

Compatibility and release notes

  • Berkeley DB remains pinned to 4.8 for existing wallet compatibility.
  • The generated app is arm64-only and is ad-hoc signed for local testing.
  • Public distribution still requires a Developer ID signature and Apple notarization.

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