linuxdeploy-plugin-qt icon indicating copy to clipboard operation
linuxdeploy-plugin-qt copied to clipboard

QT_QPA_PLATFORM plugins seem to be deployed incorrectly

Open RealLucioCarreras opened this issue 5 months ago • 0 comments

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

RealLucioCarreras avatar Aug 07 '25 21:08 RealLucioCarreras