Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CocoaPods on M1 (Apple Silicon) fails with ffi wrong architecture

Tags:

Running 'pod install' on a M1 MacBook failed for me due to an ffi issue, as described here.

I followed some of the workarounds (I guess I tried all of them in various order), but now I get a slightly different error:

LoadError - dlopen(/opt/homebrew/lib/ruby/gems/3.0.0/gems/ffi-1.15.0/lib/ffi_c.bundle, 9): no suitable image found.  Did find:     /opt/homebrew/lib/ruby/gems/3.0.0/gems/ffi-1.15.0/lib/ffi_c.bundle: mach-o, but wrong architecture     /opt/homebrew/lib/ruby/gems/3.0.0/gems/ffi-1.15.0/lib/ffi_c.bundle: mach-o, but wrong architecture - /opt/homebrew/lib/ruby/gems/3.0.0/gems/ffi-1.15.0/lib/ffi_c.bundle 

So, it seems I now have ffi, but with a wrong architecture? How can I fix this? This happens with/without running the terminal in Rosetta mode.

One of the proposed workarounds did not succeed for me, by the way. When I try:

sudo arch -x86_64 gem install ffi 

I get:

arch: posix_spawnp: gem: Bad CPU type in executable 

Not sure if this is related.

like image 686
Datasun Avatar asked Mar 15 '21 19:03

Datasun


2 Answers

Answering my own question. I fixed the ffi issue by uninstalling my faulty Ruby version and CocoaPods, then I used the -x86_64 arch to reinstall ffi and CocoaPods.

These are the steps I did to get back to a working state (and to apply the M1 workarounds for ffi):

  1. Uninstall Ruby with: brew uninstall ruby --force

  2. Uninstall CocoaPods. At first, try to list all CocoaPods versions / components with gem list --local | grep cocoapods. Then uninstall them one by one, in my case:

sudo gem uninstall cocoapods

sudo gem uninstall cocoapods-core

sudo gem uninstall cocoapods-downloader

etc.

  1. As a next step I was able to reinstall ffi and then CocoaPods with:

sudo arch -x86_64 gem install ffi

sudo arch -x86_64 gem install cocoapods

Once done, I could run pod install as expected. Note that I had the Terminal open all the time in standard mode - no Rosetta required.

like image 85
Datasun Avatar answered Oct 06 '22 08:10

Datasun


As said Datasun I removed cocoapods

gem list --local | grep cocoapods | awk '{print $1}' | xargs sudo gem uninstall 

and then run:

brew remove rbenv sudo rm -rf ~/.rbenv sudo arch -x86_64 gem install ffi sudo arch -x86_64 gem install cocoapods brew install rbenv rbenv install 3.0.1 rbenv global 3.0.1  pod install 

without any problem.

like image 34
burtsevyg Avatar answered Oct 06 '22 08:10

burtsevyg