Skip to content

SPM reproduction for "Module 'GTMSessionFetcherCore' not found" and request for prebuilt binaries. #475

@lobotony

Description

@lobotony

Describe the bug
(please see below for context)

Adding a prebuilt binary of GoogleSignIn 7.1.0 as a binaryTarget to a Swift package leads to the build error "Module 'GTMSessionFetcherCore' not found".

To Reproduce
Steps to reproduce the behavior:
0. see attached example package, or alternatively use the following steps: GoogleSignInProxy.zip

  1. Create a new Swift package, named "GoogleSignInProxy", type "library"
  2. remove all but one target named "GoogleSignInProxy" and one product named "GoogleSignInProxy"
  3. configure the supported platforms to some current iOS version that is supported by GoogleSignIn
  4. Download the Firebase 11.1.0 release binaries from here: https://github.com/firebase/firebase-ios-sdk/releases/tag/11.1.0
  5. Add the following frameworks to the root folder of the package: Firebase/GoogleSignIn/GoogleSignIn.xcframework, AppAuth.xcframework, GTMAppAuth.xcframework, GTMSessionFetcher.xcframework
  6. add the required binaryTarget() definitions and make the original target require all binaryTargets.
  7. in the template source file, replace everything with a single "import GoogleSignIn"

Expected behavior
The package builds without errors.

Environment

  • Device: MacBook Pro, building for iOS Simulator
  • OS: MacOS Sonoma 14.5 building for iOS Simulator 17.4
  • Xcode 15.3

Additional context
I understand this bug might be fixed in the 8.0.0 release, but still wanted to file an easy reproduction, for documentation purposes. Feel free to just close this.

We're currently evaluating if and how we can speed up our builds and package resolution times, hence the experiments with prebuilt binaries. We use a lot of local packages, and therefore manage external dependencies in "proxy" packages, so they can be referenced anywhere, but only need to be configured once.

As far as I can tell, the only official way to get GoogleSignIn binaries is via Firebase?
At this point, Firebase 11.1.0 is the latest release, and it still only contains a binary for GoogleSignIn 7.1.0.

After reading up on some other discussions, I was able to "fix" the build error by removing the "_CodeSignature" folder from GoogleSignIn.xcframework, and removing the GTMSessionFetcherCore import in GIDGoogleUser.h, which is guarded by the SWIFT_PACKAGE test. This is obviously not my favorite solution, but at least led to a successful
proof-of-concept build.

Obviously, I don't know the internal processes at Google, but is there a way you can provide more current binaries, either through the GoogleSignIn-iOS Github project or the Firebase releases?

Thanks for your effort, it is very much appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriageIssues that need to be triaged

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions