Как отладить ошибку сборки, которая не может быть воспроизведена вне среды сборки Launchpad?

8

Я пытаюсь создать модифицированный пакет libdbusmenu. Он собирается правильно, если я создаю его локально:

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

Однако в PPA один из тестов не выполняется, что приводит к сбою сборки. Фактический результат теста не записывается в buildlog:

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

Как я могу решить эту проблему?

Это может привести к более точному воспроизведению среды сборки, используемой сборщиками PPA. Если да, то как мне это сделать?

Я попытался собрать с помощью chroot pbuilder - это работает правильно в моей локальной системе.

Lintian выдает следующие предупреждения на упаковке:

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)
Алистер Бакстон
источник
Да, lintian выдает много ошибок на упаковке. Но это по сути немодифицированный пакет Ubuntu (только bump changelog), который собирается везде, кроме PPA, поэтому я не уверен, что это важно.
Алистер Бакстон
Я не уверен, что это квалифицируется как ответ, но вы можете сравнить свой журнал сборки с журналом сборки из официального пакета Ubuntu. Вы можете добавить export VERBOSE=1к, debian/rulesчтобы заставить весь вывод набора тестов быть записанным в журнал сборки, когда он терпит неудачу. Вы можете попробовать использовать sbuild вместо pbuilder, см. Wiki.ubuntu.com/SimpleSbuild .
Майк Миллер

Ответы:

1

При просмотре журнала есть некоторые предупреждения, на которые вам, вероятно, стоит обратить внимание, особенно если вы не получаете их на локальном компьютере, но я думаю, что большая подсказка о том, что происходит, - это имя неудачного теста: glib -Мероприятия.

события почти всегда связаны с вводом / выводом, поэтому, чтобы попытаться принудительно вызвать ошибку на локальном компьютере, отключите XAUTHORITY и DISPLAY, закройте стандартный ввод или перенаправьте его в / dev / null и перенаправьте стандартный вывод и ошибку в файл. nohup сделает переадресацию за вас, но не затронет среду, или вы можете использовать пакет или пакет вместо nohup, что также дает преимущество смены лидера сеанса.

hildred
источник
Хорошая идея, но, к сожалению, это не сработало. Все тесты все еще проходят, когда pbuilder запускается из среды без среды.
Алистер Бакстон