Skip to content

[FIX] the claude plugin did not build on Linux - #72

Merged
gradyzhuo merged 1 commit into
mainfrom
fix/claude-plugin-linux-build
Sep 25, 2026
Merged

gradyzhuo merged 1 commit into
mainfrom
fix/claude-plugin-linux-build

Conversation

@gradyzhuo

Copy link
Copy Markdown
Member

ClaudeIdentity.keychainService lives behind #if os(macOS) — there is no Keychain elsewhere. The --keychain-service diagnostic entry point in Sources/orrery-claude/main.swift called it unconditionally, so orrery-claude compiled on macOS and failed to compile anywhere else:

/src/Sources/orrery-claude/main.swift:56:26: error: type 'ClaudeIdentity' has no member 'keychainService'

The #if os(macOS) guard is the whole fix. The test that exercises the entry point was already #if os(macOS), so it keeps testing what it tested and skips where the entry point no longer exists.

Why nothing caught it

ci.yml builds macos-latest only. Linux is built by the release workflow alone, so a Linux-only compile error stays invisible until a tag has been pushed. This surfaced during the 3.5.5 pre-flight, and it is the second time this repo has found a Linux break at release time — 81111ec was the first. Adding a Linux job to ci.yml would close that gap; left out of this PR deliberately, since it is a separate decision.

Verification

Built in Docker (swift:6.1-noble) on both release architectures, checking each of the five products actually links rather than trusting the exit code:

arm64 amd64
orrery-bin ✓ ✓
orrery-agent ✓ ✓
orrery-claude-hook ✓ ✓
orrery-claude ✓ ✓
orrery-codex ✓ ✓

Blocks the 3.5.5 release.

🤖 Generated with Claude Code

`ClaudeIdentity.keychainService` lives behind `#if os(macOS)`, because there is
no Keychain elsewhere. The diagnostic entry point added alongside it called that
function unconditionally, so `orrery-claude` compiled on the machine it was
written on and failed everywhere else.

Nothing said so, and that is the more useful half of this. ci.yml builds
macos-latest only; Linux is built by the release workflow alone. A Linux-only
compile error is therefore invisible until a tag has been pushed — which is when
this surfaced, during the 3.5.5 pre-flight. It is the second time this repo has
found a Linux break at release time; 81111ec was the first.

The guard is the whole fix. The test that exercises the entry point was already
`#if os(macOS)`, so it keeps testing what it tested and skips where the entry
point no longer exists.
@gradyzhuo
gradyzhuo merged commit c9b7bea into main Sep 25, 2026
1 check passed
@gradyzhuo
gradyzhuo deleted the fix/claude-plugin-linux-build branch September 25, 2026 00:33
@gradyzhuo gradyzhuo mentioned this pull request Sep 25, 2026
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