Qt World Summit: Submit your Presentation

Issue with qtvirtualkeyboard while upgrading from Qt 5.9 to 5.12

  • I am working on upgrading an embedded target from Qt 5.9.3 to 5.12.10. Most packages work OK, however the qtvirtualkeyboard package is causing issues. The build process (using Yocto/bitbake) creates an upgrade package, which contains all the generated RPMs for all packages and on the target we use the Smart Package Manager to install these.

    This works OK for almost all packages, only the qtvirtualkeyboard package has a different name in the new build: the RPMs changed from qtvirtualkeyboard (in Qt 5.9.3) to libqt5virtualkeyboard (in Qt 5.12.10). It looks like this confuses the package manager and it exits with an error indicating that certain files cannot be overwritten, as they are part of an already installed package. This is one of the messages, the others follow the same pattern, all about qtvirtualkeyboard-qmlplugins:

    error: file /usr/lib/qt5/qml/QtQuick/VirtualKeyboard/plugins.qmltypes from install of libqt5virtualkeyboard-qmlplugins- conflicts with file from package qtvirtualkeyboard-qmlplugins-5.9.3+git3+81f9e4b142-r3.0.cortexa9hf_vfp_neon

    There are a number of other packages that are generated as libqt5<name> package instead of a qt<name> package, but these already had this name in 5.9.3, so they are not causing an issue.

    In the ..../pkgdata/runtime/qtvirtualkeyboard-qmlplugins there is a line:

    PKG_qtvirtualkeyboard-qmlplugins: libqt5virtualkeyboard-qmlplugins

    Which was (in Qt 5.9.3):

    PKG_qtvirtualkeyboard-qmlplugins: qtvirtualkeyboard-qmlplugins

    To me it looks like the package is receiving a new name.

    I tried adding an RREPLACES_${PN} and RCONFLICTS_${PN} with "qtvirtualkeyboard (< 5.12.10)" to a qtvirtualkeyboard_git.bbappend file, but that did not help. There is an Obsoletes line added in the SPECS file (reading back from the generated RPM using rpmrebuild), but that also referenced the new name, libqt5virtualkeyboard.

    Is it possible to revert this change of the name (for my local build) or can I add a rule somewhere that makes sure the package manager removes the original package before installing the new package?

    I am using meta-qt5 (hash 8da88b09, which is the last 5.12.10 version) and the official Qt GIT repo for 5.12.10.