É possível fazer a compilação cruzada de arquivos .deb usando o debhelper? Como?

3

Eu tenho um pacote (drivers Dymo CUPS nesta instância) que eu preciso compilar para um arquivo .deb para incluir nos repositórios de uma rede privada. A fonte em si é suficientemente independente de arquitetura que será compilada em 32 bits e 64 bits. Eu estou usando debhelper para construir os pacotes e construí o pacote com sucesso para a arquitetura nativa.

A maioria das máquinas executa o Precise de 64 bits, mas algumas executam o Precise de 32 bits. A máquina de construção atual é de 64 bits. O que eu quero fazer é "cross-compile" o pacote e gerar os pacotes de 32 bits a partir dos pacotes de 64 bits.

O que eu tentei:

  • Adicionar sinalizadores "-a" ou "--architecture" a fakeroot debian/rules binary - falha porque não entende o argumento (devo copiá-lo de um comando dpkg ou outro)
  • Adicione override_dh_auto_configure em debian/rules que fornece -m32 para CFLAGS etc - cria como 32 bits, mas empacota e define dependências como um pacote de 64 bits
  • A instalação de dpkg-cross e a execução de fakeroot debian/rules binary-cross (com base em uma ideia de estas instruções de compilação cruzada ) - falha porque a cruz binária não existe como um comando padrão dh

Coisas que não posso experimentar:

  • Launchpad / PPA / qualquer outro serviço de criação externa - tudo precisa fazer parte de nossa infraestrutura

Existe alguma maneira de criar arquivos .deb de 32 bits em debhelper em uma máquina de 64 bits? E se sim, como?

    
por IBBoard 16.08.2012 / 14:35

1 resposta

0

debuild -ai386 deve configurar tudo corretamente, mas depende de ter as dependências de compilação multiarch apropriadas instaladas; é mais fácil com uma versão recente de sbuild (mais recente do que precisa, infelizmente), e depende de todas as bibliotecas que você usa terem sido convertidas em multiarch. Veja link para detalhes.

    
por Colin Watson 10.02.2013 / 17:23