[devel] versioned set-versions; was: Re: Qt5 и поломанные плагины

Ivan Zakharyaschev imz на altlinux.org
Пт Дек 29 16:38:38 MSK 2017


Hi!

On Mon, 23 Oct 2017, Vladimir D. Seleznev wrote:

> После вчерашнего обновления Qt5 сломалась работоспособность uim-qt5,
> который должен был работать как плагин к Qt5, но с новым релизом
> последнего не подключается с такой диагностикой:
>
>
> Got keys from plugin meta data ("uim")
> QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/platforminputcontexts" ...
> Cannot load library /usr/lib64/qt5/plugins/platforminputcontexts/libuimplatforminputcontextplugin.so:
> (/usr/lib64/qt5/plugins/platforminputcontexts/libuimplatforminputcontextplugin.so: symbol _ZTI21QPlatformInputContext,
> version Qt_5 not defined in file libQt5Gui.so.5 with link time reference)
> QLibraryPrivate::loadPlugin failed on
> "/usr/lib64/qt5/plugins/platforminputcontexts/libuimplatforminputcontextplugin.so"
> : "Cannot load library
> /usr/lib64/qt5/plugins/platforminputcontexts/libuimplatforminputcontextplugin.so:
> (/usr/lib64/qt5/plugins/platforminputcontexts/libuimplatforminputcontextplugin.so:
> symbol _ZTI21QPlatformInputContext, version Qt_5 not defined in file
> libQt5Gui.so.5 with link time reference)"
>
>
> По setversion всё в порядке, но видно, что символ
> _ZTI21QPlatformInputContext в libQt5Gui.so.5 переехал с Qt_5 на
> Qt_5_PRIVATE_API.
>
> Это чинится пересборкой uim'а с новым Qt5, но если бы я не использовал
> uim-qt5, то и не заметил бы поломки, пока кто-нибудь из пользователей не
> пожаловался бы, т.е. отслеживание работоспособности плагинов остаётся на
> пользователях.
>
> Есть ли механизмы, с помощью которых можно было бы отслеживать подобные
> поломки?  Если нет, то может у кого-нибудь есть идеи, как их можно было
> бы отслеживать и добавить их в инфраструктуру сборочницы?

Вспомнилось, что мы думали о разделении set на несколько множеств -- по 
версионированию. (Раз мы версионированию upstream-ов вообще не доверяем и 
имеем механизм set-versions.)

Следов того обсуждения я сходу не нашёл.

Отдельно требовалось продумать переходный период. Иметь Provides и со всем 
суммарным множеством (как сейчас), и разделённые. В случае наличия 
разделённых, генерировать Requires на разделённые.

Во время перехода длина затронутых Provides возрастёт не больше, чем в два 
раза. После перехода общая длина будет примерно такая же, как сейчас.

Володя, может быть, ты это уже пробовал реализовывать?

-- 
Best regards,
Ivan


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