Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linking FirebaseInstallation fails with lld #10071

Closed
sebastianv1 opened this issue Aug 4, 2022 · 8 comments · Fixed by #10073
Closed

Linking FirebaseInstallation fails with lld #10071

sebastianv1 opened this issue Aug 4, 2022 · 8 comments · Fixed by #10073
Labels
zip Issues related to binary distribution (zip file) zip-builder Tools related to building the zip file.
Milestone

Comments

@sebastianv1
Copy link

[REQUIRED] Step 1: Describe your environment

  • Xcode version: 13.4.1
  • Firebase SDK version: 8.7.0
  • Installation method: Zip file (select one)
  • Firebase Component: Analytics
  • Target platform(s): All

[REQUIRED] Step 2: Describe the problem

When linking our app using lld, we receive the following error:

error: framework not found for -framework FBLPromises

We discovered that this is coming from FirebaseInstallation whose LC_LINKER_OPTIONS includes FBLPromises as a load command

...
  string #1 -framework
  string #2 FBLPromises
Load command 5
     cmd LC_LINKER_OPTION
...

It appears that FBLPromises was renamed to PromisesObjC and is a dependency of FirebaseInstallation & included in the zipped release of frameworks. We do link PromisesObjC into our bundle, but my guess is that the distribution step still links against the old FBLPromises name?

This doesn't throw an error in ld though since it'll ignore invalid frameworks included by the LC_LINKER_OPTIONS flag (llvm/llvm-project#56939).

Steps to reproduce:

Link an app using lld against FirebaseInstallation + dependencies.

What happened? How can we make the problem occur?
error: framework not found for -framework FBLPromises

If you have a downloadable sample project that reproduces the bug you're reporting, you will
likely receive a faster response on your issue.

Relevant Code:

@google-oss-bot
Copy link

I found a few problems with this issue:

  • I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
  • This issue does not seem to follow the issue template. Make sure you provide all the required information.

@paulb777
Copy link
Member

paulb777 commented Aug 4, 2022

Thanks for the report. This may be a CocoaPods issue with the Promises dependency. How serious is the issue for you? Is it more than an annoyance in the build log?

@sebastianv1
Copy link
Author

@paulb777 The issue is an error using lld, not just an annoyance in the build log. ld still works, but it'd be awesome to use lld since we're seeing >50% improvements in linking times.

Does the zipped distribution get built from the podspecs? Looks like the PromisesObjC module_name is set to FBLPromises which could be the source of the issue? (https://github.com/google/promises/blob/master/PromisesObjC.podspec#L20)

@paulb777
Copy link
Member

paulb777 commented Aug 4, 2022

Yes, the zip distribution is created from the podspecs. It looks like our build tooling is trying to sort out the module name/pod name conflation at https://github.com/firebase/firebase-ios-sdk/blob/master/ReleaseTooling/Sources/ZipBuilder/FrameworkBuilder.swift#L291

cc: @ykjchen

@paulb777 paulb777 added zip-builder Tools related to building the zip file. zip Issues related to binary distribution (zip file) and removed api: analytics labels Aug 4, 2022
@paulb777
Copy link
Member

paulb777 commented Aug 5, 2022

@sebastianv1 Does renaming PromisesObjC.xcframework to FBLPromises.xcframework make a difference?

@sebastianv1
Copy link
Author

@paulb777 I have not tried this yet, currently we are able to workaround it by using an empty FBLPromises dummy framework that we include the link list. Would it help if I tried?

@paulb777
Copy link
Member

paulb777 commented Aug 5, 2022

@sebastianv1 Yes. It's essentially what the fix in #10073 does and I'd like to confirm it works for your use case.

@paulb777 paulb777 added this to the 9.5.0 - M120 milestone Aug 9, 2022
@paulb777
Copy link
Member

paulb777 commented Aug 9, 2022

I believe that #10073 should fix the issue and it will be part of the next 9.5.0 release.

@firebase firebase locked and limited conversation to collaborators Sep 9, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
zip Issues related to binary distribution (zip file) zip-builder Tools related to building the zip file.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants