firebase-ios-sdk: `No such module 'Promises'` when building for testing on Xcode 15.0-beta5
Description
We have been using the Firebase iOS SDK for some time in our iOS project. In looking to start using Xcode 15 exclusively, when using current versions of everything (specified below), we see the following issue, using the same Xcode project file:
- In Xcode 14.3.1, Build for Running -> builds ok
- In Xcode 14.3.1, Build for Testing -> builds ok
- In Xcode 15.0-beta5, Build for Running -> builds ok
- In Xcode 15.0-beta5, Build for Testing -> fails to build with the following error:
No such module 'Promises in FirebaseSessions at line 21: @_implementationOnly import Promises
We’ve tried adding the -ld64 other linker flag, cleaning the build and Derived Data folders, as well as removing and re-adding the Firebase package.
Screenshot:
Reproducing the issue
No response
Firebase SDK Version
10.13.0
Xcode Version
15.0 beta 5 (15A5209g)
Installation Method
Swift Package Manager
Firebase Product(s)
All
Targeted Platforms
iOS
Relevant Log Output
No response
If using Swift Package Manager, the project’s Package.resolved
Expand Package.resolved snippet
{
"object": {
"pins": [
{
"package": "abseil",
"repositoryURL": "https://github.com/google/abseil-cpp-binary.git",
"state": {
"branch": null,
"revision": "bfc0b6f81adc06ce5121eb23f628473638d67c5c",
"version": "1.2022062300.0"
}
},
{
"package": "Diagnostics",
"repositoryURL": "https://github.com/WeTransfer/Diagnostics.git",
"state": {
"branch": null,
"revision": "c3816d37ff6993b7de46aff3370354c4cadca7c8",
"version": "4.5.0"
}
},
{
"package": "ExceptionCatcher",
"repositoryURL": "https://github.com/sindresorhus/ExceptionCatcher",
"state": {
"branch": null,
"revision": "a7acaf40f8bd67a1f3a05a14de5b6a861ac3d1ac",
"version": "2.0.1"
}
},
{
"package": "Firebase",
"repositoryURL": "https://github.com/firebase/firebase-ios-sdk",
"state": {
"branch": null,
"revision": "df2171b0c6afb9e9d4f7e07669d558c510b9f6be",
"version": "10.13.0"
}
},
{
"package": "GoogleAppMeasurement",
"repositoryURL": "https://github.com/google/GoogleAppMeasurement.git",
"state": {
"branch": null,
"revision": "03b9beee1a61f62d32c521e172e192a1663a5e8b",
"version": "10.13.0"
}
},
{
"package": "GoogleDataTransport",
"repositoryURL": "https://github.com/google/GoogleDataTransport.git",
"state": {
"branch": null,
"revision": "aae45a320fd0d11811820335b1eabc8753902a40",
"version": "9.2.5"
}
},
{
"package": "GoogleUtilities",
"repositoryURL": "https://github.com/google/GoogleUtilities.git",
"state": {
"branch": null,
"revision": "c38ce365d77b04a9a300c31061c5227589e5597b",
"version": "7.11.5"
}
},
{
"package": "gRPC",
"repositoryURL": "https://github.com/google/grpc-binary.git",
"state": {
"branch": null,
"revision": "f1b366129d1125be7db83247e003fc333104b569",
"version": "1.50.2"
}
},
{
"package": "GTMSessionFetcher",
"repositoryURL": "https://github.com/google/gtm-session-fetcher.git",
"state": {
"branch": null,
"revision": "d415594121c9e8a4f9d79cecee0965cf35e74dbd",
"version": "3.1.1"
}
},
{
"package": "Kingfisher",
"repositoryURL": "https://github.com/onevcat/Kingfisher.git",
"state": {
"branch": null,
"revision": "c75584ac759cbb16b204d0a7de3ebf53ea6b304d",
"version": "7.9.0"
}
},
{
"package": "leveldb",
"repositoryURL": "https://github.com/firebase/leveldb.git",
"state": {
"branch": null,
"revision": "0706abcc6b0bd9cedfbb015ba840e4a780b5159b",
"version": "1.22.2"
}
},
{
"package": "nanopb",
"repositoryURL": "https://github.com/firebase/nanopb.git",
"state": {
"branch": null,
"revision": "819d0a2173aff699fb8c364b6fb906f7cdb1a692",
"version": "2.30909.0"
}
},
{
"package": "Promises",
"repositoryURL": "https://github.com/google/promises.git",
"state": {
"branch": null,
"revision": "e70e889c0196c76d22759eb50d6a0270ca9f1d9e",
"version": "2.3.1"
}
},
{
"package": "RevenueCat",
"repositoryURL": "https://github.com/RevenueCat/purchases-ios.git",
"state": {
"branch": null,
"revision": "f2f5314fa92d3556fe23e857b34eeed13934c6fb",
"version": "4.25.2"
}
},
{
"package": "SFSafeSymbols",
"repositoryURL": "https://github.com/SFSafeSymbols/SFSafeSymbols",
"state": {
"branch": null,
"revision": "7cca2d60925876b5953a2cf7341cd80fbeac983c",
"version": "4.1.1"
}
},
{
"package": "swift-log",
"repositoryURL": "https://github.com/apple/swift-log.git",
"state": {
"branch": null,
"revision": "32e8d724467f8fe623624570367e3d50c5638e46",
"version": "1.5.2"
}
},
{
"package": "SwiftProtobuf",
"repositoryURL": "https://github.com/apple/swift-protobuf.git",
"state": {
"branch": null,
"revision": "ce20dc083ee485524b802669890291c0d8090170",
"version": "1.22.1"
}
},
{
"package": "swiftui-introspect",
"repositoryURL": "https://github.com/siteline/SwiftUI-Introspect.git",
"state": {
"branch": "master",
"revision": "e93995cb75170a18113ddf1e3cf0d0668c33c8b2",
"version": null
}
},
{
"package": "SwiftUIX",
"repositoryURL": "https://github.com/SwiftUIX/SwiftUIX",
"state": {
"branch": null,
"revision": "75d5be2c85ec1e3ccbd9d99d321dd3abb5955e8d",
"version": "0.1.6"
}
}
]
},
"version": 1
}
If using CocoaPods, the project’s Podfile.lock
Expand Podfile.lock snippet
Replace this line with the contents of your Podfile.lock!
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 18 (10 by maintainers)
woohoo, thanks @ncooke3 and @paulb777 !! 🎉
Yep. I still see the C++ linkage issue from Firestore with the Xcode 15 RC. The original issue reported here of not being able to add both Crashlytics and Performance to the test target has been addressed.
I suspect something about the Xcode 14 generated binary for Firestore may be missing something needed by Xcode 15. We’ll continue to investigate.
Seems to be some sort of C++ symbol or linkage problem. I’m not sure why it only shows up in the test target. @ncooke3 any ideas?
I’ve reduced the test case to determine it’s sufficient to have only FirebasePerformance and FirebaseCrashlytics as dependencies of the test target. Removing one of them is sufficient to build successfully.
We might want to do a bit more investigation, but my current thought is that this is an Xcode build system bug.
A workaround may be to remove one of those two dependencies if you don’t need to depend on both in the test target.
Thanks! I’ve reproduced and I’m investigating …
Here is a reproducible example @paulb777 – https://github.com/whforward/promises-debugging – a fresh new Xcode project created with Xcode 15-beta5, bringing in only the current 10.13.0 version of the Firebase SDK, and I get the results as described above.
Greatly appreciate any insight you might have here.
Hmm, we may need a reproducible example, since I’m able to successfully build Sessions for testing in beta 5.