python em todos os lugares

22
Python em todos os lugares Osvaldo Santana Neto [email protected]

Upload: osvaldo-santana

Post on 24-Jun-2015

1.162 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Python em Todos os Lugares

Python emtodos os lugares

Osvaldo Santana [email protected]

Page 2: Python em Todos os Lugares

Everywhere

Page 3: Python em Todos os Lugares

Onde estamos?

Nessa aindanão, né Leo?

ARM/XScale, x86 e Mips

Page 4: Python em Todos os Lugares

Como avançar?

Page 5: Python em Todos os Lugares

CPython

Page 6: Python em Todos os Lugares

Cross-compiling

Usar um compilador em uma plataforma A para gerar código para uma plataforma B

Page 7: Python em Todos os Lugares

Cross-compiling, autotools e make

Page 8: Python em Todos os Lugares
Page 9: Python em Todos os Lugares

distutils

Page 10: Python em Todos os Lugares

distutils + cross-compiling

Page 11: Python em Todos os Lugares

distutils + cross-compiling =

Page 12: Python em Todos os Lugares

Cross-compiling

• ./configure --host=arquitetura-alvo

• make

• make install DESTDIR=/rootdir-alvo

Page 13: Python em Todos os Lugares

Cross-compiling PythonO jeito “patch-patch-compila-guarda-compila”

Page 14: Python em Todos os Lugares

Cross-compiling Python• Prós

• É o jeito “certo”, multiplataforma, de se fazer isso.

• O patch em questão já foi discutido e só não foi aceito por falta de alguém para endossar o patch.

• Contras

• Dá um trabalhão.

• É necessário muitas intervenções no Setup.py e corre-se um risco grande de usar bibliotecas da plataforma incorreta.

Page 15: Python em Todos os Lugares

Scratchbox (ad-hoc)

Solução usada na plataforma Maemo que fornece um ambiente “semi-emulado” para desenvolvimento.

Host - x86 - LinuxbinfmtELF ARM = /usr/bin/qemu-arm-static

Target - ARM - Linux

chro

ot

cross-compiler

Deve serinstalado parase comportarcomocompiladornativo

qemu-arm-static

Deve serestático paranão precisardo linkerdinâmico x86

Page 16: Python em Todos os Lugares

Cross-compiling PythonO jeito “./configure; make; make install”

Page 17: Python em Todos os Lugares

Cross-compiling Python• Prós

• Não é necessário modificar nada no Python

• O ambiente serve para compilar qualquer tipo de aplicação (mesmo as que não prevêem isso)

• Contras

• O ambiente precisa estar completo (ex. header files)

• O qemu geralmente precisa ser “patcheado” e pode congelar com aplicações que usam threads

Page 18: Python em Todos os Lugares

Ainda dá tempo?3 slides pra falar de ctypes?

Page 19: Python em Todos os Lugares

Bibliotecas Proprietárias e Python• Fazer uma extension em C leva muito

tempo.

• Algumas vezes os header files não estão disponíveis

• Entra em ação o módulo ctypes!

• Wrapper pra libffi

Page 20: Python em Todos os Lugares

O “Hello World” da ctypes

Page 21: Python em Todos os Lugares

... e muito mais.

Page 22: Python em Todos os Lugares

Perguntas?