Port Android/Skip build support (OpenCombine swap) - #1
Merged
Conversation
poly-georgevisconti
requested review from
amritkallu,
piercifani,
pj-poly and
poly-jeff
and removed request for
amritkallu
July 9, 2026 17:43
The macos-26 runner image no longer ships the iOS/tvOS/watchOS 26.1
platform SDKs, so every job pinned to Xcode 26.1.1 fails at destination
lookup ("iOS 26.1 is not installed"), and the conformance client times
out against the same stale toolchain. Upstream is green on 26.4.1;
this syncs ci.yml with upstream main (Xcode 26.4.1, actions/checkout v7).
add-to-project.yml calls connectrpc's internal reusable workflow with
org credentials that don't exist here, so it can never pass on this fork.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Drop the blank line and stale os_unfair_lock doc reference in Lock.swift - Align the os_log string literal parameters in UnaryAsyncWrapper.swift - Restore the blank line after the license header in URLSessionStream.swift and NIOHTTPClient.swift (via make licenseheaders) - Delete Logging.swift, an empty file accidentally added by the ported commit Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Collaborator
Author
CI triageAll 8 failures investigated; only 2 were actually caused by the ported commit, and both were cosmetic. Fixed in the two follow-up commits:
🤖 Generated with Claude Code |
piercifani
approved these changes
Jul 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Ports the single-commit Android build fix from theleftbit/connect-swift@
codex/fix-android-buildonto our fork, preserving the original commit and authorship. Ourmainis at upstream v1.2.3 (ed56816), which is exactly the commit the fix was written against, so this is a clean fast-forward.The fix makes connect-swift build and pass tests under Skip/Android, primarily by swapping
CombineforOpenCombineplus small portability adjustments (locking, logging, URLSession streaming) across 20 files.Why
Polymarket/swift-proto-gateway-us(the generated Connect bindings package consumed by the mobile app) currently depends on theleftbit's fork as a POC. To take that dependency in-house it needs this commit on our fork; after merge,mainwill be tagged1.2.3-polymarket.1and the bindings package pinned to that tag.Test plan
🤖 Generated with Claude Code
Note
Medium Risk
Threading changes (
NSRecursiveLockvsos_unfair_lock) and Darwin-only URLSession affect core HTTP paths on Apple; non-Darwin builds rely on NIO and OpenCombine, which is a new dependency surface for mocks.Overview
Adds Skip/Android build support by making Apple-only APIs optional and supplying OpenCombine where Combine is unavailable.
ConnectMocks and generated mock code now import OpenCombine when Combine is missing; Package.swift pins OpenCombine 0.15.1. ConnectMockGenerator emits the same conditional imports.
URLSession-based HTTP (
URLSessionHTTPClient,URLSessionStream) is wrapped in#if canImport(Darwin).ProtocolClient’s defaultURLSessionHTTPClient()convenience initializer is Darwin-only; non-Darwin callers must pass an explicitHTTPClientInterface(e.g. NIO). Conformance CLI and tests gate the urlsession client and URLSession-specific integration tests behind Darwin.Lock switches from
os_unfair_locktoNSRecursiveLock.os_logcalls are guarded with#if canImport(OSLog);HTTPMetricsoptionally imports FoundationNetworking.CI bumps Xcode to 26.4.1 and actions/checkout to v7. The add-to-project workflow is removed.
Reviewed by Cursor Bugbot for commit 37d6eac. Bugbot is set up for automated code reviews on this repo. Configure here.