Установка `dulwich` дает` error: команда 'clang' завершилась неудачно с состоянием выхода 1` - PullRequest
1 голос
/ 19 октября 2019

Когда я пытаюсь выполнить pip install dulwich, у меня появляется красная стена с жалобой на clang. Вот последний бит:

    Please check your Xcode installation
    clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/openssl/include -I/usr/local/include -I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/sqlite/include -I/Users/alaird/Developer/py3venv/include -I/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c dulwich/_objects.c -o build/temp.macosx-10.14-x86_64-3.7/dulwich/_objects.o
    clang: warning: no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]
    In file included from dulwich/_objects.c:20:
    /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/include/python3.7m/Python.h:25:10: fatal error: 'stdio.h' file not found
    #include <stdio.h>
             ^~~~~~~~~
    1 error generated.
    error: command 'clang' failed with exit status 1
    ----------------------------------------
ERROR: Command "/Users/alaird/Developer/py3venv/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/private/var/folders/63/r_rf7mhj14b4c42mfkkl06t8rg1b1r/T/pip-install-b9wlh7xh/dulwich/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/63/r_rf7mhj14b4c42mfkkl06t8rg1b1r/T/pip-record-_v0dq_sp/install-record.txt --single-version-externally-managed --compile --install-headers /Users/alaird/Developer/py3venv/include/site/python3.7/dulwich" failed with error code 1 in /private/var/folders/63/r_rf7mhj14b4c42mfkkl06t8rg1b1r/T/pip-install-b9wlh7xh/dulwich/

Я много раз ошибался в кроличьих дырах "clang с выходом из состояния 1" в Google, проблема в том, что это слишком общая проблема. Чтобы ответить на несколько вопросов:

  1. Да, Xcode является последней версией, и инструменты командной строки были установлены (я нахожусь на OS X 10.14.6, так что теперь это управляется через обновления приложений).
  2. Это была ранее работающая установка. Эта ошибка стала возникать после того, как я выполнил make clean, который сдул мои venv.
  3. Попытка установить последнюю версию setuptools приводит к той же ошибке, так что похоже на ошибку, указывающую на Xcode /моя среда сборки (а не dulwich) - правильный виновник.
  4. Выполнение brew update также дает мне тот же clang barf. Я думаю, что что-то упало, когда я перешел на Мохаве.

Идеи?

1 Ответ

1 голос
/ 21 октября 2019

Ах-ха!

Я начал смотреть на предупреждение вместо ошибки:

no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]

И это привело меня к тому, что номер версии SDK был жестко закодирован ... что кажетсяглупый. Поэтому я создал символическую ссылку:

ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk

В зависимости от конфигурации вашей системы вам может потребоваться создать другую символическую ссылку (там также была папка MacOSX10.15.sdk).

Затемработал! Никаких проблем с pip (включая установку dulwich и pycrypto), никаких проблем с brew, и все в порядке с моей средой разработки снова!

Я также сделал:

export CFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"

Однако я не верю, что именно это и произошло, так как после начала нового сеанса все еще работало. Так что, вероятно, это была символическая ссылка выше, которая разрешила это. Надеюсь, это поможет другим!

...