Python 2.6.1, pycrypto 2.3 pacote pypi: “Broken Pipe” durante a compilação

11

Estou tentando instalar o Fabric, que requer o pycrypto. Durante a compilação do pycrypto eu sempre recebo um erro "Broken Pipe". Não sei por onde começar a resolver o problema.

Estou executando o Mac OS X Snow Leopard 10.6.6, todas as atualizações instaladas; Python 2.6.1; GCC 4.2; XCode 4 (no caso que atualizou o GCC)

O erro exato é:

$ sudo python setup.py build
Password:
running build
running build_py
running build_ext
warning: GMP library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Hash.MD2' extension
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -fwrapv -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch ppc -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/MD2.c -o build/temp.macosx-10.6-universal-2.6/src/MD2.o
/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/as: assembler (/usr/bin/../libexec/gcc/darwin/ppc/as or /usr/bin/../local/libexec/gcc/darwin/ppc/as) for architecture ppc not installed
Installed assemblers are:
/usr/bin/../libexec/gcc/darwin/x86_64/as for architecture x86_64
/usr/bin/../libexec/gcc/darwin/i386/as for architecture i386
src/MD2.c:134: fatal error: error writing to -: Broken pipe
compilation terminated.
lipo: can't open input file: /var/tmp//ccfADoXD.out (No such file or directory)
error: command 'gcc-4.2' failed with exit status 1
    
por jlindenbaum 18.03.2011 / 18:18

3 respostas

15

Esta é uma solução melhor que funciona para toda a extensão de Python C em versões do ALL Python no Mac OS X 10.6 usando o XCode 4.

ARCHFLAGS="-arch i386 -arch x86_64" python setup.py build

Dessa forma, você não precisa se preocupar com os arquivos setup.py de todas as extensões C que você está tentando criar.

    
por 22.03.2011 / 07:13
2

Como Tony apontou, a questão é relacionada ao PPC. O XCode 4 removeu o assembler do PPC. As ferramentas de configuração tentam instalar para todas as arquiteturas, por padrão, i386, ppc e x86_64.

Eu adicionei este código ao meu pyckpto-2.3 setup.py na linha 122 e seguintes. Isso pesquisa as opções do compilador para 'ppc' e as remove e a instrução predecessora '-arch' '.

    # removing PPC flag from compiler options
    index = self.compiler.compiler_so.index('ppc')

    del self.compiler.compiler_so[index]
    del self.compiler.compiler_so[index-1]

Executando o usual python setup.py instalado no arquivo modificado instalado pycrypto sem nenhum problema.

Esta é uma solução terrível, mas deve funcionar por enquanto, até que o setuptools possa detectar melhor que o 10.6 com o XCode 4 não tem mais o PPC como uma arquitetura de destino aplicável. Sugestões para corrigir este problema são aceitas.

    
por 20.03.2011 / 22:17
1

Outra opção é copiar os assemblies ppc de uma versão anterior do xcode. Você só precisa copiar as pastas ppc e ppc64 da localização /usr/libexec/gcc/darwin/

Eu reconheço que também é uma solução terrível, mas funcionou para mim!

    
por 12.04.2011 / 17:29