Por que o Launchpad age de maneira diferente com pacotes de 64 e 32 bits?

1

Estou fazendo pacotes do Ubuntu a partir do código-fonte de um programa de geologia. Eu posso fazer pacotes deb no meu PC, e também o Launchpad é capaz de fazer pacotes binários para sistemas operacionais de 32 bits.

Eu notei um comportamento estranho do Launchpad. Ele faz tanto o desenvolvimento (libfoo-dev) quanto a biblioteca compartilhada (libfoo) do código-fonte carregado para o i386, embora ele faça apenas um pacote binário para o amd64 do mesmo código. Olhando para i386 e amd64 cria logs, descobri que para amd64 debian/rules binary-arch é chamado em vez de %código%. Isso faz com que minha fonte não gere um pacote de desenvolvimento para amd64.

Como posso resolver este problema? Logs de construção e fontes de pacotes estão disponíveis em debian/rules binary caso você queira dar uma olhada.

    
por sorush-r 20.09.2012 / 21:46

1 resposta

2

Pacotes independentes de arquitetura (onde Architecture: all é definido em debian/control ) são criados apenas em uma arquitetura, que é i386 para Ubuntu. Somente os pacotes dependentes da arquitetura são construídos em todas as outras arquiteturas. É por isso que debian/rules binary é chamado em i386, mas debian/rules binary-arch em amd64, armhf e powerpc.

Você define Architecture: all para seus pacotes -dev. Isso está correto se o pacote -dev for idêntico em todas as arquiteturas. Você verá que o pacote .deb terminará com _all.deb em vez de _amd64.deb ou _i386.deb. O _all.deb será construído em i386, mas também usado em amd64.

Você deve alterar a arquitetura do pacote -dev para Architecture: any in debian/control se precisar de conteúdo diferente para o pacote amd64 -dev. Se o pacote -dev deve ter o mesmo conteúdo em amd64 que em i386, tudo está funcionando corretamente e você não deve encontrar um problema.

    
por Benjamin Drung 22.08.2013 / 02:18