Comment déboguer un échec de build qui ne peut pas être reproduit en dehors d'un environnement de build Launchpad?

8

J'essaie de construire un paquet libdbusmenu modifié. Il se construit correctement si je le construis localement:

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

Cependant, dans un PPA, l'un des tests ne s'exécute pas, ce qui entraîne l'échec de la génération. La sortie de test réelle n'est pas écrite dans le journal de build:

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

Comment puis-je résoudre ce problème?

Cela pourrait se résumer à reproduire plus fidèlement l'environnement de génération utilisé par les constructeurs PPA. Si oui, comment dois-je procéder?

J'ai essayé de construire en utilisant un chroot pbuilder - cela fonctionne correctement sur mon système local.

Lintian génère les avertissements suivants sur le package:

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
la source
Oui, lintian produit beaucoup d'erreurs sur le paquet. Mais il s'agit en fait d'un package Ubuntu non modifié (uniquement le bump du journal des modifications) qui se construit partout sauf dans un PPA, donc je ne suis pas convaincu que cela compte.
Alistair Buxton
Je ne suis pas sûr que cela soit considéré comme une réponse, mais vous pouvez comparer votre journal de construction avec le journal de construction du package officiel Ubuntu. Vous pouvez ajouter export VERBOSE=1à debian/rulespour forcer l'écriture de la sortie de la suite de tests dans le journal de génération en cas d'échec. Vous pouvez essayer d'utiliser sbuild au lieu de pbuilder, voir wiki.ubuntu.com/SimpleSbuild .
Mike Miller

Réponses:

1

En parcourant le journal, il y a quelques avertissements, que vous devriez probablement regarder, surtout si vous ne les obtenez pas sur la machine locale, mais je pense que le gros indice sur ce qui se passe est le nom du test qui a échoué: glib -événements.

les événements sont presque toujours liés aux E / S, donc pour essayer de forcer l'erreur sur la machine locale, désactivez XAUTHORITY et DISPLAY, fermez l'entrée standard ou redirigez-la vers / dev / null et redirigez la sortie standard et l'erreur vers un fichier. nohup fera la redirection pour vous, mais ne touchera pas l'environnement, ou vous pourriez utiliser at ou batch au lieu de nohup qui offre également l'avantage de changer le leader de la session.

hildred
la source
Une bonne idée, mais malheureusement ça n'a pas marché. Tous les tests réussissent quand pbuilder est exécuté depuis sans environnement.
Alistair Buxton