Criando pacotes multi-arch localmente

2

É a primeira vez que tento criar pacotes debian / ubuntu para diferentes arquiteturas. Para isso, decidi usar o pbuilder usando o script .pbuilderrc do link . Então, eu uso dpkg-buildpackage -S ou dpkg-source -b para criar o arquivo .dsc. Usando este arquivo, eu chamo

sudo OS=ubuntu DIST=trusty ARCH=amd64 pbuilder --build $dscfile
sudo OS=ubuntu DIST=trusty ARCH=armhf pbuilder --build $dscfile

O problema é que pbuilder parece empacotar o arquivo .debian.tar.gz (e mudar para .xz) e recriar o arquivo .dsc. O conteúdo dos dois arquivos tar é semelhante, somente as permissões e registros de data e hora foram alterados e, no arquivo .dsc, vejo pequenas alterações e as diferentes somas de verificação:

- libpj2 deb comm optional
+ libpj2 deb comm optional arch=any

- b42ddedc2d8b210ec10b4db4271997569aab448d 29942 pjproject_2.1.0.0.ast20130823-1.test20.debian.tar.gz
+ 11646618842914086b78ce0e191f6e2cfbe0965d 25548 pjproject_2.1.0.0.ast20130823-1.test20.debian.tar.xz

Agora, o problema é que não posso colocar o resultado dessas duas construções em um repositório reprepro :

#reprepro -Vb . includedsc trusty $dscfile
reprepro -Vb . include trusty /var/cache/pbuilder/ubuntu-trusty-amd64/result/*.changes
reprepro -Vb . include trusty /var/cache/pbuilder/ubuntu-trusty-armhf/result/*.changes

Porque ele não aceita as diferentes somas de verificação do arquivo .dsc:

File "pool/test/p/pjproject/pjproject_2.1.0.0.ast20130823-1.test20.debian.tar.xz" is already registered with different checksums!
md5 expected: 2f5bcb162dedd309a9d9ecba733d1036, got: bc30e1f502f7b36c10e9709dfe75e60b
sha1 expected: 11646618842914086b78ce0e191f6e2cfbe0965d, got: 94c6ecebe07a93c7505058019b6f64a73a9625a5
sha256 expected: 0642aa4d78b1cc91d06cc6fe406380b76aa7de5fb26105ea052d447f36f65d19, got: cfa085ac5904eadc21a849958118ce597fe03d78fd8cc82f225c33cbcb663462

Minhas perguntas agora são:

  • Como posso evitar a recriação do pacote de fontes?
  • Este é um fluxo de trabalho plausível para a criação de pacotes com vários arcos?
  • Existe uma maneira melhor, por exemplo, uma ferramenta de construção cruzada melhor?
  • Para pacotes binários independentes de arco, assumo problemas semelhantes aos do pacote fonte. Como posso integrá-los neste fluxo de trabalho?
por Daniel Alder 13.01.2016 / 11:13

1 resposta

0

Resolvido. Meu fluxo de trabalho agora é o seguinte:

Atualizar informações da versão:

dch -i

Compile o código-fonte:

cd ulxmlrpcpp/
dpkg-buildpackage -S -sa
cd ../

Construir. Observe que a primeira chamada é diferente porque também gera os binários indefinidos. Eu recomendo o arco nativo para isso, porque é o mais rápido e, em caso de erro, você não perde tempo de emulação:

sudo OS=debian DIST=jessie ARCH=amd64 pbuilder --build --pkgname-logfile --debbuildopts '-sa -b' ulxmlrpcpp_1.7.5-2.35.dsc
sudo OS=debian DIST=jessie ARCH=armhf pbuilder --build --pkgname-logfile --debbuildopts -B ulxmlrpcpp_1.7.5-2.35.dsc

Adicionar ao repo (apenas se todos os passos acima foram bem sucedidos):

reprepro -Vb . include jessie ulxmlrpcpp_1.7.5-2.35_source.changes
reprepro -Vb . include jessie /var/cache/pbuilder/debian-jessie-armhf/result/ulxmlrpcpp_1.7.5-2.35_armhf.changes
reprepro -Vb . include jessie /var/cache/pbuilder/debian-jessie-amd64/result/ulxmlrpcpp_1.7.5-2.35_amd64.changes
    
por Daniel Alder 22.01.2016 / 14:37