[devel] Qt5 и поломанные плагины

Vladimir D. Seleznev vseleznv на altlinux.org
Пн Окт 23 19:28:40 MSK 2017


On Mon, Oct 23, 2017 at 06:08:31PM +0300, Mikhail Efremov wrote:
> On Mon, 23 Oct 2017 14:49:15 +0300 Vladimir D. Seleznev wrote:
> > Есть ли механизмы, с помощью которых можно было бы отслеживать
> > подобные поломки?  Если нет, то может у кого-нибудь есть идеи, как их
> > можно было бы отслеживать и добавить их в инфраструктуру сборочницы?
>
> Ну, например, при сборке NM, чтобы убедиться, что плагинам хватает символов,
> используется такой трюк:
> LD_BIND_NOW=1 LD_PRELOAD=$${LD_PRELOAD}:$(1) $(builddir)/src/NetworkManager --version >/dev/null
> где $(1) - плагин.
> Но не знаю насколько возможно сделать такую проверку в общем случае, для
> любых плагинов к любой программе.

Я был не совсем прав: этот плагин слинкован с библиотеками Qt5, и он
падает при

$ ldd -r
/usr/lib64/qt5/plugins/platforminputcontexts/libuimplatforminputcontextplugin.so | grep symbol | head -n 3
symbol _ZTI21QPlatformInputContext, version Qt_5 not defined in file libQt5Gui.so.5 with link time reference (/usr/lib64/qt5/plugins/platforminputcontexts/libuimplatforminputcontextplugin.so)
symbol _ZNK21QPlatformInputContext13hasCapabilityENS_10CapabilityE, version Qt_5 not defined in file libQt5Gui.so.5 with link time reference (/usr/lib64/qt5/plugins/platforminputcontexts/libuimplatforminputcontextplugin.so)
symbol _ZN21QPlatformInputContext16staticMetaObjectE, version Qt_5 not defined in file libQt5Gui.so.5 with link time reference (/usr/lib64/qt5/plugins/platforminputcontexts/libuimplatforminputcontextplugin.so)

это потому что некое множество символов сменило вершонинг с Qt_5 на
Qt_5_PRIVATE_API, при этом по setversion все зависимости остались
удовлетворёнными.

Из этого можно сделать печальное предположение, что сейчас в Сизифе
вероятно находится немало нерабочих Qt5-приложений.

-- 
   С уважением,
   Владимир Селезнев


Подробная информация о списке рассылки Devel