¿Cómo depurar un error de compilación que no se puede reproducir fuera de un entorno de compilación de Launchpad?

8

Estoy intentando construir un paquete libdbusmenu modificado. Se construye correctamente si lo construyo 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

Sin embargo, en un PPA, una de las pruebas no se ejecuta, lo que hace que falle la compilación. La salida de prueba real no se escribe en el registro de compilación:

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

¿Cómo puedo resolver este problema?

Podría reducirse a una reproducción más cercana del entorno de construcción utilizado por los constructores de PPA. Si es así, ¿cómo hago eso?

He intentado construir utilizando un chroot pbuilder, esto funciona correctamente en mi sistema local.

Lintian produce las siguientes advertencias en el paquete:

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
fuente
Sí, lintian produce muchos errores en el paquete. Pero este es efectivamente un paquete de Ubuntu no modificado (solo cambio de registro de cambios) que se construye en todas partes excepto en un PPA, por lo que no estoy convencido de que eso importe.
Alistair Buxton
No estoy seguro de si esto califica como respuesta, pero podría comparar su registro de compilación con el registro de compilación del paquete oficial de Ubuntu. Puede agregar export VERBOSE=1a debian/rulespara forzar que toda la salida del conjunto de pruebas se escriba en el registro de compilación cuando falla. Puede intentar usar sbuild en lugar de pbuilder, consulte wiki.ubuntu.com/SimpleSbuild .
Mike Miller

Respuestas:

1

Al mirar a través del registro, hay algunas advertencias que probablemente debería tener en cuenta, especialmente si no las obtiene en la máquina local, pero creo que la gran pista sobre lo que está sucediendo es el nombre de la prueba fallida: glib -eventos.

los eventos casi siempre están relacionados con E / S, por lo que para intentar forzar el error en la máquina local, desactive XAUTHORITY y DISPLAY, cierre la entrada estándar o rediríjala a / dev / null y redirija la salida estándar y el error a un archivo. nohup hará la redirección por usted, pero no tocará el entorno, o podría usar en o por lotes en lugar de nohup, que también ofrece la ventaja de cambiar el líder de la sesión.

hildred
fuente
Una buena idea, pero desafortunadamente no funcionó. Todas las pruebas aún pasan cuando pbuilder se ejecuta desde un entorno sin.
Alistair Buxton