Xcrun/lipo зависает с OS X Mavericks и XCode 4.x

Была попытка установить psycopg2 с помощью easy_install или pip, и терминал застревает в цикле между xcrun и lipo.

sidwyn$ sudo easy_install psycopg2
Searching for psycopg2
Reading https://pypi.python.org/simple/psycopg2/
Reading http://initd.org/psycopg/
Reading http://initd.org/projects/psycopg2
Best match: psycopg2 2.5.1
Downloading https://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.5.1.tar.gz#md5=1b433f83d50d1bc61e09026e906d84c7
Processing psycopg2-2.5.1.tar.gz
Writing /tmp/easy_install-dTk7cd/psycopg2-2.5.1/setup.cfg
Running psycopg2-2.5.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-dTk7cd/psycopg2-2.5.1/egg-dist-tmp-4jaXas
clang: warning: argument unused during compilation: '-mno-fused-madd'

Он отскакивает между xcrun и lipo и застревает навсегда в этом цикле. Понравилось бы некоторое понимание этого.

Я на OS X Mavericks 10.9, последняя сборка.

Ответ 1

Более подходящее исправление:

ln /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo
xcrun -k lipo

Почему: исправление xfx скорее всего нарушит возможность использования xcode-select для выбора вашей инструментальной цепочки в будущих версиях Xcode.

Pre-Mavericks и Xcode 5.x,/usr/bin/lipo, по-видимому, являются фактическим расположением реального инструмента липо (try cat /usr/bin/lipo - выглядит как большой двоичный файл). В Mavericks/Xcode 5.x липо был перемещен в XcodeDefault.xctoolchain, а двоичный код в /usr/bin/lipo - это тонкая оболочка, которая, как представляется, просто вызывает xcrun lipo (см. nm /usr/bin/lipo), которая, в свою очередь, находит местоположение липо на основе xcode-select.

Возможно, новые версии xcode-select и/или Mavericks заменяют версию /usr/bin/lipo версией обертки. Если вы затем попытаетесь использовать lipo с инструментальной цепочкой 4.x xcode-select 'd, это не сработает, поскольку инструмент не содержится в более ранних версиях Xcode. К счастью, он по-прежнему включен в iPhoneOS.platform по какой-то причине, иначе вам, вероятно, придется вытащить его из неповрежденной машины lt = = 10.8.

Похоже, что было много перетасовки инструментов между Developer/usr/bin и Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin в переключателе 4- > 5 - меня не удивило бы, если бы аналогичные проблемы с другими менее часто используемыми инструментами командной строки.

Наконец, тот факт, что xcrun зависает, когда он не может найти инструмент, кажется явной ошибкой Apple, простой и простой.

Ответ 2

Это работает для меня:

xcode-select -–install
sudo mv /usr/bin/lipo /usr/bin/lipo.orig
sudo ln -s /Library/Developer/CommandLineTools/usr/bin/lipo /usr/bin

Ответ 3

У меня такая же проблема, исправлена ​​заменой/usr/bin/lipo старой из Max OS 10.7.

Обновление: замените /usr/bin/lipo на/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin. Вам нужно приложение Xcode или файл img.

Ответ 4

Простейшим решением является, вероятно, обновление до XCode 5.x.

Ответ 5

Я восстановил /usr/bin/lipo из моей резервной копии TimeMachine (временная метка перед обновлением до OSX 10.9). Тогда XCode 4.x работал нормально, архивирование больше не зависало.