leavez / cocoapods-binary

integrate pods in form of prebuilt frameworks conveniently, reducing compile time
MIT License
1.31k stars 206 forks source link

Fix issue with IRGen #134

Open brendan-guegan-orange opened 3 years ago

brendan-guegan-orange commented 3 years ago

During debugging session, with the use of pods installed via Cocoapods-binary, the console in Xcode displays error messages while executing following expression: po self

The error looks the following one:

Printing description of self:
expression produced error: error: virtual filesystem overlay file '/path/to/project/Pods/build/Pods.build/Release-iphoneos/Charts.build/all-product-headers.yaml' not found

error: couldn't IRGen expression. Please check the above error messages for possible root causes.

The issue is not related to Charts pod, but to every pod used.

To fix the issue, I just removed the line that delete the build folder generated during the precompiling of pods. This folder contains for each pod, the all-product-headers.yaml expected by Xcode.

jamesdouble commented 3 years ago

any update for this issue?

brendan-guegan-orange commented 3 years ago

any update for this issue?

Hello @jamesdouble, I don't know how to add a reviewer to this pull request and how to restart the continuous integration job.

jamesdouble commented 3 years ago

@brendan-guegan-orange , I see. Seems this repo not maintain anymore. Is there anyway to fix this bug without changing source code? Like, change Xcode build settings..

brendan-guegan-orange commented 3 years ago

@jamesdouble I don't think so, cocoapods-binary seems to create its own Xcode project to build the frameworks, and the all-product-headers.yaml files are removed at the end of the prebuidling, so changing anything in Xcode won't have any effect.

muukii commented 3 years ago

Is there any fork that continues maintaining? This gem is really useful. if I could, I'd like to sponsor this maintainer.

muukii commented 3 years ago

I thought this fixing does not work well. Because we need to commit the files in the build directory to keep all-product-headers.yaml. And also, LLDB uses an absolute path to run command such as po, this also makes us it can not share the binary. I need to find another idea out.

muukii commented 3 years ago

Related article: https://steipete.com/posts/couldnt-irgen-expression/

muukii commented 3 years ago

I think SWIFT_SERIALIZE_DEBUGGING_OPTIONS = NO fixes this issue.

jamesdouble commented 3 years ago

I think SWIFT_SERIALIZE_DEBUGGING_OPTIONS = NO fixes this issue.

Where should I put this setting? my target or pods Target?

muukii commented 3 years ago

@jamesdouble Pods Target that we make as binary. but, I've tried that and it didn't work well.