firebase-ios-sdk: Xcode Can't Build Due to gRPC Bug (Firestore dependency)

[REQUIRED] Step 1: Describe your environment

  • Xcode version: 11.4.1
  • Firebase SDK version: 6.23
  • Firebase Component: Firestore
  • Component version: 6.23
  • Installation method: CocoaPods
  • CocoaPods version: 1.9.1

[REQUIRED] Step 2: Describe the problem

Steps to reproduce:

  1. Create “Hello World” app with SwiftUI on the latest Xcode and OSX
  2. Follow Firebase installation process outlined here https://firebase.google.com/docs/ios/setup
  3. add pod 'Firebase/Firestore' to the Podfile
  4. run pod install
  5. build app

Relevant Code:

After following the steps above, here is a screenshot of the build error: https://ibb.co/DKjF46G

If pod 'Firebase/Firestore' is commented out, it builds fine. Firestore is the library that has the dependency on gRPC, and gRPC has the bug.

Here is the full error message:

Use of undeclared identifier 'SSL_get_secure_renegotiation_support'; did you mean 'GRPC_SHADOW_SSL_get_secure_renegotiation_support'?

Here is an issue on gRPC that references the exact same error message: https://github.com/grpc/grpc/issues/19908

Here is the Podfile:

# Define a global platform
platform :ios, '13.0'

target 'Yolo' do
  # Enable dynamic frameworks
  use_frameworks!

  # Pods for Yolo
  pod 'Firebase/Analytics'
  pod 'Firebase/Auth'
  pod 'Firebase/Firestore'
  pod 'Firebase/Functions'
  pod 'Firebase/Storage'
end

Here is the Podfile.lock:

PODS:
  - abseil/algorithm (0.20190808):
    - abseil/algorithm/algorithm (= 0.20190808)
    - abseil/algorithm/container (= 0.20190808)
  - abseil/algorithm/algorithm (0.20190808)
  - abseil/algorithm/container (0.20190808):
    - abseil/algorithm/algorithm
    - abseil/base/core_headers
    - abseil/meta/type_traits
  - abseil/base (0.20190808):
    - abseil/base/atomic_hook (= 0.20190808)
    - abseil/base/base (= 0.20190808)
    - abseil/base/base_internal (= 0.20190808)
    - abseil/base/bits (= 0.20190808)
    - abseil/base/config (= 0.20190808)
    - abseil/base/core_headers (= 0.20190808)
    - abseil/base/dynamic_annotations (= 0.20190808)
    - abseil/base/endian (= 0.20190808)
    - abseil/base/log_severity (= 0.20190808)
    - abseil/base/malloc_internal (= 0.20190808)
    - abseil/base/pretty_function (= 0.20190808)
    - abseil/base/spinlock_wait (= 0.20190808)
    - abseil/base/throw_delegate (= 0.20190808)
  - abseil/base/atomic_hook (0.20190808)
  - abseil/base/base (0.20190808):
    - abseil/base/atomic_hook
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/dynamic_annotations
    - abseil/base/log_severity
    - abseil/base/spinlock_wait
    - abseil/meta/type_traits
  - abseil/base/base_internal (0.20190808):
    - abseil/meta/type_traits
  - abseil/base/bits (0.20190808):
    - abseil/base/core_headers
  - abseil/base/config (0.20190808)
  - abseil/base/core_headers (0.20190808):
    - abseil/base/config
  - abseil/base/dynamic_annotations (0.20190808)
  - abseil/base/endian (0.20190808):
    - abseil/base/config
    - abseil/base/core_headers
  - abseil/base/log_severity (0.20190808):
    - abseil/base/core_headers
  - abseil/base/malloc_internal (0.20190808):
    - abseil/base/base
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/dynamic_annotations
    - abseil/base/spinlock_wait
  - abseil/base/pretty_function (0.20190808)
  - abseil/base/spinlock_wait (0.20190808):
    - abseil/base/core_headers
  - abseil/base/throw_delegate (0.20190808):
    - abseil/base/base
    - abseil/base/config
  - abseil/memory (0.20190808):
    - abseil/memory/memory (= 0.20190808)
  - abseil/memory/memory (0.20190808):
    - abseil/base/core_headers
    - abseil/meta/type_traits
  - abseil/meta (0.20190808):
    - abseil/meta/type_traits (= 0.20190808)
  - abseil/meta/type_traits (0.20190808):
    - abseil/base/config
  - abseil/numeric/int128 (0.20190808):
    - abseil/base/config
    - abseil/base/core_headers
  - abseil/strings/internal (0.20190808):
    - abseil/base/core_headers
    - abseil/base/endian
    - abseil/meta/type_traits
  - abseil/strings/strings (0.20190808):
    - abseil/base/base
    - abseil/base/bits
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/endian
    - abseil/base/throw_delegate
    - abseil/memory/memory
    - abseil/meta/type_traits
    - abseil/numeric/int128
    - abseil/strings/internal
  - abseil/time (0.20190808):
    - abseil/time/internal (= 0.20190808)
    - abseil/time/time (= 0.20190808)
  - abseil/time/internal (0.20190808):
    - abseil/time/internal/cctz (= 0.20190808)
  - abseil/time/internal/cctz (0.20190808):
    - abseil/time/internal/cctz/civil_time (= 0.20190808)
    - abseil/time/internal/cctz/includes (= 0.20190808)
    - abseil/time/internal/cctz/time_zone (= 0.20190808)
  - abseil/time/internal/cctz/civil_time (0.20190808)
  - abseil/time/internal/cctz/includes (0.20190808)
  - abseil/time/internal/cctz/time_zone (0.20190808):
    - abseil/time/internal/cctz/civil_time
  - abseil/time/time (0.20190808):
    - abseil/base/base
    - abseil/base/core_headers
    - abseil/numeric/int128
    - abseil/strings/strings
    - abseil/time/internal/cctz/civil_time
    - abseil/time/internal/cctz/time_zone
  - abseil/types (0.20190808):
    - abseil/types/any (= 0.20190808)
    - abseil/types/bad_any_cast (= 0.20190808)
    - abseil/types/bad_any_cast_impl (= 0.20190808)
    - abseil/types/bad_optional_access (= 0.20190808)
    - abseil/types/bad_variant_access (= 0.20190808)
    - abseil/types/compare (= 0.20190808)
    - abseil/types/optional (= 0.20190808)
    - abseil/types/span (= 0.20190808)
    - abseil/types/variant (= 0.20190808)
  - abseil/types/any (0.20190808):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/meta/type_traits
    - abseil/types/bad_any_cast
    - abseil/utility/utility
  - abseil/types/bad_any_cast (0.20190808):
    - abseil/base/config
    - abseil/types/bad_any_cast_impl
  - abseil/types/bad_any_cast_impl (0.20190808):
    - abseil/base/base
    - abseil/base/config
  - abseil/types/bad_optional_access (0.20190808):
    - abseil/base/base
    - abseil/base/config
  - abseil/types/bad_variant_access (0.20190808):
    - abseil/base/base
    - abseil/base/config
  - abseil/types/compare (0.20190808):
    - abseil/base/core_headers
    - abseil/meta/type_traits
  - abseil/types/optional (0.20190808):
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/memory/memory
    - abseil/meta/type_traits
    - abseil/types/bad_optional_access
    - abseil/utility/utility
  - abseil/types/span (0.20190808):
    - abseil/algorithm/algorithm
    - abseil/base/core_headers
    - abseil/base/throw_delegate
    - abseil/meta/type_traits
  - abseil/types/variant (0.20190808):
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/meta/type_traits
    - abseil/types/bad_variant_access
    - abseil/utility/utility
  - abseil/utility/utility (0.20190808):
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/meta/type_traits
  - BoringSSL-GRPC (0.0.3):
    - BoringSSL-GRPC/Implementation (= 0.0.3)
    - BoringSSL-GRPC/Interface (= 0.0.3)
  - BoringSSL-GRPC/Implementation (0.0.3):
    - BoringSSL-GRPC/Interface (= 0.0.3)
  - BoringSSL-GRPC/Interface (0.0.3)
  - Firebase/Analytics (6.23.0):
    - Firebase/Core
  - Firebase/Auth (6.23.0):
    - Firebase/CoreOnly
    - FirebaseAuth (~> 6.5.2)
  - Firebase/Core (6.23.0):
    - Firebase/CoreOnly
    - FirebaseAnalytics (= 6.4.2)
  - Firebase/CoreOnly (6.23.0):
    - FirebaseCore (= 6.6.7)
  - Firebase/Firestore (6.23.0):
    - Firebase/CoreOnly
    - FirebaseFirestore (~> 1.12.1)
  - Firebase/Functions (6.23.0):
    - Firebase/CoreOnly
    - FirebaseFunctions (~> 2.5.1)
  - Firebase/Storage (6.23.0):
    - Firebase/CoreOnly
    - FirebaseStorage (~> 3.6.1)
  - FirebaseAnalytics (6.4.2):
    - FirebaseCore (~> 6.6)
    - FirebaseInstallations (~> 1.2)
    - GoogleAppMeasurement (= 6.4.2)
    - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
    - GoogleUtilities/MethodSwizzler (~> 6.0)
    - GoogleUtilities/Network (~> 6.0)
    - "GoogleUtilities/NSData+zlib (~> 6.0)"
    - nanopb (= 0.3.9011)
  - FirebaseAuth (6.5.2):
    - FirebaseAuthInterop (~> 1.0)
    - FirebaseCore (~> 6.6)
    - GoogleUtilities/AppDelegateSwizzler (~> 6.5)
    - GoogleUtilities/Environment (~> 6.5)
    - GTMSessionFetcher/Core (~> 1.1)
  - FirebaseAuthInterop (1.1.0)
  - FirebaseCore (6.6.7):
    - FirebaseCoreDiagnostics (~> 1.2)
    - FirebaseCoreDiagnosticsInterop (~> 1.2)
    - GoogleUtilities/Environment (~> 6.5)
    - GoogleUtilities/Logger (~> 6.5)
  - FirebaseCoreDiagnostics (1.2.4):
    - FirebaseCoreDiagnosticsInterop (~> 1.2)
    - GoogleDataTransportCCTSupport (~> 3.0)
    - GoogleUtilities/Environment (~> 6.5)
    - GoogleUtilities/Logger (~> 6.5)
    - nanopb (~> 0.3.901)
  - FirebaseCoreDiagnosticsInterop (1.2.0)
  - FirebaseFirestore (1.12.1):
    - abseil/algorithm (= 0.20190808)
    - abseil/base (= 0.20190808)
    - abseil/memory (= 0.20190808)
    - abseil/meta (= 0.20190808)
    - abseil/strings/strings (= 0.20190808)
    - abseil/time (= 0.20190808)
    - abseil/types (= 0.20190808)
    - FirebaseAuthInterop (~> 1.0)
    - FirebaseCore (~> 6.2)
    - "gRPC-C++ (= 0.0.9)"
    - leveldb-library (~> 1.22)
    - nanopb (~> 0.3.901)
  - FirebaseFunctions (2.5.1):
    - FirebaseAuthInterop (~> 1.0)
    - FirebaseCore (~> 6.0)
    - GTMSessionFetcher/Core (~> 1.1)
  - FirebaseInstallations (1.2.0):
    - FirebaseCore (~> 6.6)
    - GoogleUtilities/Environment (~> 6.6)
    - GoogleUtilities/UserDefaults (~> 6.6)
    - PromisesObjC (~> 1.2)
  - FirebaseStorage (3.6.1):
    - FirebaseAuthInterop (~> 1.1)
    - FirebaseCore (~> 6.6)
    - GTMSessionFetcher/Core (~> 1.1)
  - GoogleAppMeasurement (6.4.2):
    - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
    - GoogleUtilities/MethodSwizzler (~> 6.0)
    - GoogleUtilities/Network (~> 6.0)
    - "GoogleUtilities/NSData+zlib (~> 6.0)"
    - nanopb (= 0.3.9011)
  - GoogleDataTransport (6.0.0)
  - GoogleDataTransportCCTSupport (3.0.0):
    - GoogleDataTransport (~> 6.0)
    - nanopb (~> 0.3.901)
  - GoogleUtilities/AppDelegateSwizzler (6.6.0):
    - GoogleUtilities/Environment
    - GoogleUtilities/Logger
    - GoogleUtilities/Network
  - GoogleUtilities/Environment (6.6.0):
    - PromisesObjC (~> 1.2)
  - GoogleUtilities/Logger (6.6.0):
    - GoogleUtilities/Environment
  - GoogleUtilities/MethodSwizzler (6.6.0):
    - GoogleUtilities/Logger
  - GoogleUtilities/Network (6.6.0):
    - GoogleUtilities/Logger
    - "GoogleUtilities/NSData+zlib"
    - GoogleUtilities/Reachability
  - "GoogleUtilities/NSData+zlib (6.6.0)"
  - GoogleUtilities/Reachability (6.6.0):
    - GoogleUtilities/Logger
  - GoogleUtilities/UserDefaults (6.6.0):
    - GoogleUtilities/Logger
  - "gRPC-C++ (0.0.9)":
    - "gRPC-C++/Implementation (= 0.0.9)"
    - "gRPC-C++/Interface (= 0.0.9)"
  - "gRPC-C++/Implementation (0.0.9)":
    - "gRPC-C++/Interface (= 0.0.9)"
    - gRPC-Core (= 1.21.0)
    - nanopb (~> 0.3)
  - "gRPC-C++/Interface (0.0.9)"
  - gRPC-Core (1.21.0):
    - gRPC-Core/Implementation (= 1.21.0)
    - gRPC-Core/Interface (= 1.21.0)
  - gRPC-Core/Implementation (1.21.0):
    - BoringSSL-GRPC (= 0.0.3)
    - gRPC-Core/Interface (= 1.21.0)
    - nanopb (~> 0.3)
  - gRPC-Core/Interface (1.21.0)
  - GTMSessionFetcher/Core (1.4.0)
  - leveldb-library (1.22)
  - nanopb (0.3.9011):
    - nanopb/decode (= 0.3.9011)
    - nanopb/encode (= 0.3.9011)
  - nanopb/decode (0.3.9011)
  - nanopb/encode (0.3.9011)
  - PromisesObjC (1.2.8)

DEPENDENCIES:
  - Firebase/Analytics
  - Firebase/Auth
  - Firebase/Firestore
  - Firebase/Functions
  - Firebase/Storage

SPEC REPOS:
  trunk:
    - abseil
    - BoringSSL-GRPC
    - Firebase
    - FirebaseAnalytics
    - FirebaseAuth
    - FirebaseAuthInterop
    - FirebaseCore
    - FirebaseCoreDiagnostics
    - FirebaseCoreDiagnosticsInterop
    - FirebaseFirestore
    - FirebaseFunctions
    - FirebaseInstallations
    - FirebaseStorage
    - GoogleAppMeasurement
    - GoogleDataTransport
    - GoogleDataTransportCCTSupport
    - GoogleUtilities
    - "gRPC-C++"
    - gRPC-Core
    - GTMSessionFetcher
    - leveldb-library
    - nanopb
    - PromisesObjC

SPEC CHECKSUMS:
  abseil: 18063d773f5366ff8736a050fe035a28f635fd27
  BoringSSL-GRPC: db8764df3204ccea016e1c8dd15d9a9ad63ff318
  Firebase: 585ae467b3edda6a5444e788fda6888f024d8d6f
  FirebaseAnalytics: 558f7a03d19de451093032c806f39d5f9dff096e
  FirebaseAuth: e50319ecc114acf93c2b9581e15d6604ddd7eeb2
  FirebaseAuthInterop: a0f37ae05833af156e72028f648d313f7e7592e9
  FirebaseCore: a2788a0d5f6c1dff17b8f79b4a73654a8d4bfdbd
  FirebaseCoreDiagnostics: b59c024493a409f8aecba02c99928d0d8431d159
  FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850
  FirebaseFirestore: f5c1798bf8ab3f7ce96adb5f259eed8c698941fd
  FirebaseFunctions: 5af7c35d1c5e41608fecbb667eb6c4e672e318d0
  FirebaseInstallations: 2119fb3e46b0a88bfdbf12562f855ee3252462fa
  FirebaseStorage: f4f39ae834a7145963b913f54e2f24a9db1d8fac
  GoogleAppMeasurement: 2253e99c1f22638cf234c059144660c338ad76c3
  GoogleDataTransport: 061fe7d9b476710e3cd8ea51e8e07d8b67c2b420
  GoogleDataTransportCCTSupport: 0f39025e8cf51f168711bd3fb773938d7e62ddb5
  GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1
  "gRPC-C++": 9dfe7b44821e7b3e44aacad2af29d2c21f7cde83
  gRPC-Core: c9aef9a261a1247e881b18059b84d597293c9947
  GTMSessionFetcher: 6f5c8abbab8a9bce4bb3f057e317728ec6182b10
  leveldb-library: 55d93ee664b4007aac644a782d11da33fba316f7
  nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd
  PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6

PODFILE CHECKSUM: a53cb40e25b52f6252d1f6beabf223ecdeda20dd

COCOAPODS: 1.9.1

As a result of this build error, Firestore is completely unusable for iOS apps when developing with the latest OSX and Xcode.

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 17 (7 by maintainers)

Most upvoted comments

@paulb777 you are a SUPER HERO. that was it, i can pod install Firestore on my own system and build now. thanks so much for all of the help, if you’re ever in LA beers are on me! 🍻

if anyone else hits this kind of issue, i ran rm -rf ~/.cocoapods, then i ran pod cache clean -all but i don’t think that did anything because it returned the message [!] No cache for pod named -all found but following Paul’s logic, i also went ahead and manually deleted the entire /Library/Caches/CocoaPods/ directory. then when i ran pod install it took noticeably more time to install for obvious reasons. then everything built no problem 🎉

btw i’m also going to blow away that repro repo bc it has Google API keys in it.