Skip to content

QT_QPA_PLATFORM plugins seem to be deployed incorrectly #200

@RealLucioCarreras

Description

@RealLucioCarreras

Hi,

first of all, thank you a lot for your project! I am packaging my project with Qt5 for years now using your tools and it always worked flawlessly.

I am currently trying to package sayonara with Qt 6.8 and I am facing some problems. Creating the AppImage works like a charm, no issues here.

Build AppImage without --library

export EXTRA_PLATFORM_PLUGINS="libqwayland-generic.so"
export EXTRA_QT_MODULES="waylandcompositor"

linuxdeploy-x86_64.AppImage \
    --plugin=qt \
    --appdir=AppDir \
    --custom-apprun=AppRun \
    --desktop-file=com.sayonara-player.Sayonara.desktop

appimagetool-x86_64.AppImage AppDir

Output

Running sayonara fails with the following error message though.

QT_DEBUG_PLUGINS=1 ./sayonara-1.11.0-stable1-gabcabc12.AppImage

qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaIlkh3c/usr/plugins/platforms" ...
qt.core.plugin.factoryloader: looking at "libqwayland-generic.so"
qt.core.plugin.loader: Failed to find metadata in lib /tmp/.mount_sayonaIlkh3c/usr/plugins/platforms/libqwayland-generic.so: '/tmp/.mount_sayonaIlkh3c/usr/plugins/platforms/libqwayland-generic.so' is not a Qt plugin (metadata not found)
qt.core.plugin.factoryloader: "Failed to extract plugin meta data from '/tmp/.mount_sayonaIlkh3c/usr/plugins/platforms/libqwayland-generic.so': '/tmp/.mount_sayonaIlkh3c/usr/plugins/platforms/libqwayland-generic.so' is not a Qt plugin (metadata not found)" 
         not a plugin
qt.core.plugin.factoryloader: looking at "libqxcb.so"
qt.core.plugin.loader: Failed to find metadata in lib /tmp/.mount_sayonaIlkh3c/usr/plugins/platforms/libqxcb.so: '/tmp/.mount_sayonaIlkh3c/usr/plugins/platforms/libqxcb.so' is not a Qt plugin (metadata not found)
qt.core.plugin.factoryloader: "Failed to extract plugin meta data from '/tmp/.mount_sayonaIlkh3c/usr/plugins/platforms/libqxcb.so': '/tmp/.mount_sayonaIlkh3c/usr/plugins/platforms/libqxcb.so' is not a Qt plugin (metadata not found)" 
         not a plugin
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaIlkh3c/usr/bin/platforms" ...
qt.qpa.plugin: Could not find the Qt platform plugin "wayland" in ""
qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Aborted                    (core dumped) QT_DEBUG_PLUGINS=1 ./sayonara-1.11.0-stable1-gabcabc12.AppImage

Workaround with --library

But when I add two --library parameters and build it like this, it seems to work (ignore the sql error ;)

linuxdeploy-x86_64.AppImage \
    ...
    --library=${QT_BASE_DIR}/plugins/platforms/libqwayland-generic.so \
    --library=${QT_BASE_DIR}/plugins/platforms/libqxcb.so

cp ${SAYONARA_DIR}/build/AppDir/usr/lib/libqwayland-generic.so ${SAYONARA_DIR}/build/AppDir/usr/plugins/platforms/
cp ${SAYONARA_DIR}/build/AppDir/usr/lib/libqxcb.so ${SAYONARA_DIR}/build/AppDir/usr/plugins/platforms/

appimagetool-x86_64.AppImage AppDir

Output

QT_DEBUG_PLUGINS=1 ./sayonara-1.11.0-stable1-gabcabc12.AppImage

[23:12:13] : InstanceChecker: Check for another instance...
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforms" ...
qt.core.plugin.factoryloader: looking at "libqwayland-generic.so"
qt.core.plugin.loader: Found metadata in lib /tmp/.mount_sayonaZ6PYNA/usr/plugins/platforms/libqwayland-generic.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "wayland"
        ]
    },
    "archlevel": 1,
    "className": "QWaylandIntegrationPlugin",
    "debug": false,
    "version": 395264
}


qt.core.plugin.factoryloader: Got keys from plugin meta data QList("wayland")
qt.core.plugin.factoryloader: looking at "libqxcb.so"
qt.core.plugin.loader: Found metadata in lib /tmp/.mount_sayonaZ6PYNA/usr/plugins/platforms/libqxcb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "xcb"
        ]
    },
    "archlevel": 1,
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 395264
}


qt.core.plugin.factoryloader: Got keys from plugin meta data QList("xcb")
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaZ6PYNA/usr/bin/platforms" ...
qt.core.library: "/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforms/libqwayland-generic.so" cannot load: Cannot load library /tmp/.mount_sayonaZ6PYNA/usr/plugins/platforms/libqwayland-generic.so: /tmp/.mount_sayonaZ6PYNA/usr/lib/libQt6WaylandClient.so.6: undefined symbol: wl_proxy_marshal_flags
qt.core.plugin.loader: QLibraryPrivate::loadPlugin failed on "/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforms/libqwayland-generic.so" : "Cannot load library /tmp/.mount_sayonaZ6PYNA/usr/plugins/platforms/libqwayland-generic.so: /tmp/.mount_sayonaZ6PYNA/usr/lib/libQt6WaylandClient.so.6: undefined symbol: wl_proxy_marshal_flags"
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
qt.core.library: "/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforms/libqxcb.so" loaded library
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaZ6PYNA/usr/plugins/platformthemes" ...
qt.core.plugin.factoryloader: looking at "libqxdgdesktopportal.so"
qt.core.plugin.loader: Found metadata in lib /tmp/.mount_sayonaZ6PYNA/usr/plugins/platformthemes/libqxdgdesktopportal.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1",
    "MetaData": {
        "Keys": [
            "xdgdesktopportal",
            "flatpak",
            "snap"
        ]
    },
    "archlevel": 1,
    "className": "QXdgDesktopPortalThemePlugin",
    "debug": false,
    "version": 395264
}


qt.core.plugin.factoryloader: Got keys from plugin meta data QList("xdgdesktopportal", "flatpak", "snap")
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaZ6PYNA/usr/bin/platformthemes" ...
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforminputcontexts" ...
qt.core.plugin.factoryloader: looking at "libcomposeplatforminputcontextplugin.so"
qt.core.plugin.loader: Failed to find metadata in lib /tmp/.mount_sayonaZ6PYNA/usr/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so: '/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so' is not a Qt plugin (metadata not found)
qt.core.plugin.factoryloader: "Failed to extract plugin meta data from '/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so': '/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so' is not a Qt plugin (metadata not found)" 
         not a plugin
qt.core.plugin.factoryloader: looking at "libibusplatforminputcontextplugin.so"
qt.core.plugin.loader: Failed to find metadata in lib /tmp/.mount_sayonaZ6PYNA/usr/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so: '/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so' is not a Qt plugin (metadata not found)
qt.core.plugin.factoryloader: "Failed to extract plugin meta data from '/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so': '/tmp/.mount_sayonaZ6PYNA/usr/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so' is not a Qt plugin (metadata not found)" 
         not a plugin
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaZ6PYNA/usr/bin/platforminputcontexts" ...
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaZ6PYNA/usr/plugins/styles" ...
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaZ6PYNA/usr/bin/styles" ...
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaZ6PYNA/usr/plugins/sqldrivers" ...
qt.core.plugin.factoryloader: looking at "libqsqlite.so"
qt.core.plugin.loader: Failed to find metadata in lib /tmp/.mount_sayonaZ6PYNA/usr/plugins/sqldrivers/libqsqlite.so: '/tmp/.mount_sayonaZ6PYNA/usr/plugins/sqldrivers/libqsqlite.so' is not a Qt plugin (metadata not found)
qt.core.plugin.factoryloader: "Failed to extract plugin meta data from '/tmp/.mount_sayonaZ6PYNA/usr/plugins/sqldrivers/libqsqlite.so': '/tmp/.mount_sayonaZ6PYNA/usr/plugins/sqldrivers/libqsqlite.so' is not a Qt plugin (metadata not found)" 
         not a plugin
qt.core.plugin.factoryloader: checking directory path "/tmp/.mount_sayonaZ6PYNA/usr/bin/sqldrivers" ...

I attached the file tree as well for the non-working version. Thank you a lot in advance.

Michael

tree.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions