Como depurar uma falha de construção que não pode ser reproduzida fora de um ambiente de construção da Barra de Ativação?

8

Estou tentando criar um pacote libdbusmenu modificado. Ele cria corretamente se eu o criar localmente:

sudo apt-get build-dep libdbusmenu
wget https://launchpad.net/~a-j-buxton/+archive/dbusmenu/+files/libdbusmenu_12.10.3%2B13.10.20130913-0ubuntu2.1.diff.gz
wget https://launchpad.net/~a-j-buxton/+archive/dbusmenu/+files/libdbusmenu_12.10.3%2B13.10.20130913-0ubuntu2.1.dsc
wget https://launchpad.net/~a-j-buxton/+archive/dbusmenu/+files/libdbusmenu_12.10.3%2B13.10.20130913.orig.tar.gz
dpkg-source -x libdbusmenu*.dsc
cd libdbusmenu*
dpkg-buildpackage

No entanto, em um PPA, um dos testes falha ao executar, causando falha na compilação. A saída real do teste não é gravada no buildlog:

https://launchpadlibrarian.net/155471644/buildlog_ubuntu-saucy-amd64.libdbusmenu_12.10.3%2B13.10.20130913-0ubuntu2.1_FAILEDTOBUILD.txt.gz

Como posso resolver este problema?

Pode ser que reproduza mais de perto o ambiente de construção usado pelos construtores do PPA. Se sim, como faço isso?

Eu tentei criar usando um chroot pbuilder - isso funciona corretamente no meu sistema local.

O Lintian produz os seguintes avisos na embalagem:

W: libdbusmenu source: quilt-build-dep-but-no-series-file
W: libdbusmenu source: patch-system-but-no-source-readme
W: libdbusmenu source: ancient-standards-version 3.9.2 (current is 3.9.4)
Alistair Buxton
fonte
Sim, o lintian produz muitos erros no pacote. Mas este é efetivamente um pacote Ubuntu não modificado (apenas alteração no log de alterações) que é criado em todos os lugares, exceto em um PPA, então não estou convencido de que isso importe.
Alistair Buxton
Não tenho certeza se isso se qualifica como resposta, mas você pode comparar seu log de compilação com o log de compilação do pacote oficial do Ubuntu. Você pode adicionar export VERBOSE=1a debian/rulespara forçar toda a saída do conjunto de testes a ser gravada no log de compilação quando ela falhar. Você pode tentar usar o sbuild em vez do pbuilder, consulte wiki.ubuntu.com/SimpleSbuild .
Mike Miller

Respostas:

1

Ao examinar o log, existem alguns avisos que você provavelmente deve observar, principalmente se não os colocar na máquina local, mas acho que a grande dica sobre o que está acontecendo é o nome do teste que falhou: glib -eventos.

os eventos quase sempre estão relacionados à E / S; portanto, para tentar forçar o erro na máquina local, desconfigure XAUTHORITY e DISPLAY, feche a entrada padrão ou redirecione-a para / dev / null e redirecione a saída padrão e o erro para um arquivo. o nohup fará o redirecionamento para você, mas não tocará no ambiente, ou você poderá usar at ou batch em vez de nohup, o que também oferece a vantagem de alterar o líder da sessão.

hildred
fonte
Uma boa ideia, mas infelizmente não funcionou. Todos os testes ainda passam quando o pbuilder é executado no ambiente sem.
Alistair Buxton