我正在尝试按照https://packaging.ubuntu.com/html/packaging-new-software.html
我的 Build-Dependsdebian/control
文件中的描述打包 Qt 5.x 应用程序:
debhelper-compat (= 13), libqt5widgets5 (>=5.4), libqt5xml5 (>=5.4), libqt5gui5 (>=5.4), libqt5core5a (>=5.4), libtiff5 (>=4.0.3), libjpeg8 (>=8c), libgcc1 (>=1.3.0), libc6 (>=2.14), libpng16-16 (>=1.6.2-1), libstdc++6 (>=5.2)
我正在构建 debbzr builddeb -- -us -uc
不幸的是,构建过程失败了,因为它试图在二进制编译后启动测试用例,其中一个崩溃了。测试用例使用QPainter
需要一个实例QApplication
才能工作。似乎应用程序在创建QApplication
. 输出是:
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: wayland-org.kde.kwin.qpa, dxcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.
所以我的猜测是,bzr 正试图在一些基于我的 Build-Depends 列表的干净环境中运行该应用程序。这个列表遗漏了qt5/plugins/platforms/libqxcb.so
.
问题是:它可能是什么以及如何追踪它?
我可以ldd
在我的机器上执行,但我需要在 bzr 环境中执行。
这是构建日志https://pastebin.com/BVbZVwr6我已经删除了编译过程的中间部分以适应粘贴大小限制。但是编译很好,失败的是make test。测试代码在这里:https ://cutt.ly/BgYQITO
建筑环境是最干净的,没有显示服务器(X11,Wayland)。Qt 似乎无法检测到显示服务器。
我怀疑这些图像测试会启动一些需要一些桌面功能的工具。
因为这是初次尝试打包。
export DH_VERBOSE=1
使用:在文件顶部启用打包调试debian/rules
。override_dh_auto_test:
参考:https ://www.debian.org/doc/manuals/maint-guide/dreq.en.html#rules
如果您通过了,请尝试先启用不需要服务器的测试。对于显示服务器的完整测试,老实说我缺乏经验,我以前没有遇到过这种情况。要么所有软件包都禁用它,要么有一个我没有注意到的解决方案。