Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Qt6 compatibility #495

Merged
merged 5 commits into from
May 24, 2022
Merged

Qt6 compatibility #495

merged 5 commits into from
May 24, 2022

Conversation

tobtoht
Copy link
Contributor

@tobtoht tobtoht commented Jun 27, 2021

This patch allows for builds with Qt 6 with qmake.

@probonopd
Copy link
Owner

Thanks @tobtoht. This is blocked by #512.

@RICCIARDI-Adrien
Copy link
Contributor

Hi @tobtoht,

Thank you for your PR, Qt 6 compatibility is something a lot of us need.

I tried your changes and some of them prevent linuxdeployqt to build with Qt 5.x. This is due to QString::SkipEmptyParts that changed namespace in Qt 6.
I made a little change here to make linuxdeployqt build with both Qt 5 and Qt 6. I then successfully built with Qt 5.12.12 and Qt 6.2.2 on Linux.

When running the linuxdeployqt built with Qt 6, I get the following error : ERROR: ldd outputLine: "libQt6Core.so.6 => not found", but I don't get any error with linuxdeployqt built with Qt 5. Do you have any hint on how to fix that ?

@tobtoht
Copy link
Contributor Author

tobtoht commented Feb 5, 2022

Thanks @RICCIARDI-Adrien, I've added your fix.

@vimpostor
Copy link

Thanks @tobtoht. This is blocked by #512.

#512 has been solved by now, when can we expect this PR to be merged?

@probonopd
Copy link
Owner

As I understand it, this patch might make it possible to compile linuxdeployqt using Qt 6.
But this patch will not give linuxdeployqt the capability to deploy Qt 6 based applications.
What would be the use case?

@vimpostor
Copy link

vimpostor commented May 24, 2022

As I understand it, this patch might make it possible to compile linuxdeployqt using Qt 6.

Oh I misunderstood then

What would be the use case?

The usecase would be to deploy Qt6 applications. If I remember correctly your tool does only make assumptions about the glibc version, but none about how old the Qt version is since it bundles Qt libraries anyway.

@RICCIARDI-Adrien
Copy link
Contributor

I think that at least Qt 6 plugins support must be added before merging this pull request, otherwise it won't deploy any plugin. See

void deployPlugins(const AppDirInfo &appDirInfo, const QString &pluginSourcePath,

@probonopd
Copy link
Owner

probonopd commented May 24, 2022

Since this PR doesn't break building linuxdeployqt with Qt 5, I think it can be merged; however it will not result in the possibility to deploy Qt 6 applications unless someone updates the code to (also) do that. And even then, the resulting AppImages will not be all that useful yet because they won't be able to run on all still-supported LTS Linux distributions if I am not mistaken.

@vimpostor
Copy link

vimpostor commented May 24, 2022

the resulting AppImages will not be all that useful yet because they won't be able to run on all still-supported LTS Linux distributions if I am not mistaken.

In #532 it was apparently possible to get Qt6 running on Ubuntu 14.04, so the official claim of the Qt company is not true (it claims Ubuntu 20.04 is necessary)

@probonopd probonopd merged commit 66d6eee into probonopd:master May 24, 2022
@probonopd
Copy link
Owner

probonopd commented May 24, 2022

That's good news then. So, if someone would like to send a PR to add deployment of the Qt6 plugins similar to the Qt5 ones (details: #532), this would be a welcome addition.

@RICCIARDI-Adrien
Copy link
Contributor

Let's give a try... @probonopd, do you know some test case applications that use a lot of Qt plugins ?

@probonopd
Copy link
Owner

probonopd commented May 24, 2022

I can't remember I had specific test case apps. Maybe use one (or two) from the examples in the README? Ah no, its not known whether they can be compiled with Qt 6. So best look for some app that is known to work with Qt 6.

@RICCIARDI-Adrien
Copy link
Contributor

Thank you, I will try with some README examples (hoping they can build with Qt 6).

I have 2 more questions for you :

  1. Why is there a Visual Studio preprocessor define in this enum declaration ?
    #if defined(Q_COMPILER_CLASS_ENUM) || defined(Q_CC_MSVC)
  2. Did you assign a random bit to each Qt module, or did you find these values somewhere ? I think I will need to create another array for the Qt 6 modules :
    QtBluetoothModule = 0x0000000000000001,

@probonopd
Copy link
Owner

I don't know - we'd have to ask @ribtoks as those came in as part of
0f2dba4

@RICCIARDI-Adrien
Copy link
Contributor

Looking at the code they seem only used to determine which Qt modules are used and need a translation file, so the bit values might be assigned "randomly" for Qt 6 modules. Thank you for your quick reply !

@ribtoks
Copy link
Contributor

ribtoks commented May 25, 2022

@RICCIARDI-Adrien These are just random and this code is copied from windeployqt for how they deal with translations. You may check that code as to how Qt6 is handled

@RICCIARDI-Adrien
Copy link
Contributor

@ribtoks Thank you, this is a good idea !

@RICCIARDI-Adrien
Copy link
Contributor

Here is a proof of concept with an initial support of Qt 6 : https://github.com/RICCIARDI-Adrien/linuxdeployqt/tree/add_qt6_support.

I tested this on the following applications, they were the only ones I could find that were able to build with Qt 6 :

Each application could successfully run after deployment (however I did not do exhaustive tests). Application executable was successfully modified to use the deployed libraries. All needed files (like qt.conf) or directories (like lib, plugins or translations) were successfully created and populated for Time Logger and PacketSender. Only the qt.conf file was created for linuxdeployqt.

In all cases, I added the parameter -bundle-non-qt-libs to the linuxdeployqt command line to disable the FHS mode and also tests whether all libs were found.
I used an Ubuntu 18.04 virtual machine and built Qt 6.2.4 from sources. I installed Qt into the /opt/Qt/6.2.4 directory.

Here are the commands I used :

Build linuxdeployqt

git clone https://github.com/RICCIARDI-Adrien/linuxdeployqt
cd linuxdeployqt
git checkout add_qt6_support 
cd tools/linuxdeployqt/
/opt/Qt/6.2.4/bin/qmake 
make -j $(nproc)
sudo make install

Deploy Time Logger

git clone https://github.com/ricciardi-adrien/Time_Logger
cd Time_Logger
/opt/Qt/6.2.4/bin/qmake
make -j $(nproc)
/opt/Qt/6.2.4/bin/linuxdeployqt Time_Logger -bundle-non-qt-libs
./Time_Logger

Deploy PacketSender

git clone https://github.com/dannagle/PacketSender
cd PacketSender/src
/opt/Qt/6.2.4/bin/qmake PacketSender.pro 
make -j $(nproc)
/opt/Qt/6.2.4/bin/linuxdeployqt packetsender -bundle-non-qt-libs
./packetsender

Deploy linuxdeployqt itself

cd linuxdeployqt/bin
/opt/Qt/6.2.4/bin/linuxdeployqt linuxdeployqt -bundle-non-qt-libs
./linuxdeployqt

There were some errors when trying to deploy linudeployqt, however the program executable runs fine.
Here is the linuxdeployqt execution output :

ar@ar-VirtualBox:~/Bureau/linuxdeployqt/bin$ /opt/Qt/6.2.4/bin/linuxdeployqt linuxdeployqt -bundle-non-qt-libs
linuxdeployqt 8 (commit 6249c4c), build <local dev build> built on 2022-05-31 20:59:16 UTC
FHS-like mode with PREFIX, fhsPrefix: "/home/ar/Bureau/linuxdeployqt"
app-binary: "/home/ar/Bureau/linuxdeployqt/bin/linuxdeployqt"
appDirPath: "/home/ar/Bureau"
relativeBinPath: "linuxdeployqt/bin/linuxdeployqt"
ERROR: findDependencyInfo: ""
ERROR: getBinaryRPaths: "/usr/bin/objdump: /home/ar/Bureau/Qt_Builder_6.2.4/qt-everywhere-src-6.2.4/qtbase/tests/auto/corelib/plugin/qpluginloader/elftest/garbage1.so: Format de fichier non reconnu\n"
ERROR: findDependencyInfo: ""
ERROR: getBinaryRPaths: "/usr/bin/objdump: /home/ar/Bureau/Qt_Builder_6.2.4/qt-everywhere-src-6.2.4/qtbase/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt2.elf64.so: Format de fichier non reconnu\n"
ERROR: findDependencyInfo: ""
ERROR: getBinaryRPaths: "/usr/bin/objdump: /home/ar/Bureau/Qt_Builder_6.2.4/qt-everywhere-src-6.2.4/qtbase/tests/auto/corelib/plugin/qpluginloader/elftest/garbage3.so: Format de fichier non reconnu\n"
ERROR: findDependencyInfo: ""
ERROR: getBinaryRPaths: "/usr/bin/objdump: /home/ar/Bureau/Qt_Builder_6.2.4/qt-everywhere-src-6.2.4/qtbase/tests/auto/corelib/plugin/qpluginloader/elftest/garbage4.so: Format de fichier non reconnu\n"
ERROR: findDependencyInfo: ""
ERROR: getBinaryRPaths: "/usr/bin/objdump: /home/ar/Bureau/Qt_Builder_6.2.4/qt-everywhere-src-6.2.4/qtbase/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt3.elf64.so: Fichier tronqu\xC3\xA9\n"
ERROR: findDependencyInfo: ""
ERROR: findDependencyInfo: ""
ERROR: getBinaryRPaths: "/usr/bin/objdump: /home/ar/Bureau/Qt_Builder_6.2.4/qt-everywhere-src-6.2.4/qtbase/tests/auto/corelib/plugin/qpluginloader/elftest/garbage5.so: Format de fichier non reconnu\n"
ERROR: findDependencyInfo: ""
ERROR: getBinaryRPaths: "/usr/bin/objdump: /home/ar/Bureau/Qt_Builder_6.2.4/qt-everywhere-src-6.2.4/qtbase/tests/auto/corelib/plugin/qpluginloader/elftest/garbage2.so: Format de fichier non reconnu\n"
ERROR: findDependencyInfo: ""
ERROR: getBinaryRPaths: "/usr/bin/objdump: /home/ar/Bureau/Qt_Builder_6.2.4/qt-everywhere-src-6.2.4/qtbase/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt1.elf64.so: Format de fichier non reconnu\n"
ERROR: findDependencyInfo: ""
ERROR: getBinaryRPaths: "/usr/bin/objdump: /home/ar/Bureau/Qt_Builder_6.2.4/qt-everywhere-src-6.2.4/qtbase/tests/auto/corelib/plugin/qlibrary/library_path/invalid.so: Format de fichier non reconnu\n"
ERROR: findDependencyInfo: ""
ERROR: getBinaryRPaths: "/usr/bin/objdump: /home/ar/Bureau/Qt_Builder_6.2.4/qt-everywhere-src-6.2.4/qtwebengine/src/3rdparty/chromium/ppapi/native_client/src/untrusted/irt_stub/libppapi.so: Format de fichier non reconnu\n"
WARNING: Plugin "/opt/Qt/6.2.4/plugins/platformthemes/libqgtk2.so" not found, skipping
WARNING: Plugin "/opt/Qt/6.2.4/plugins/styles/libqgtk2style.so" not found, skipping

It would be great if people try these changes with their own setups to find as much as bugs and corner cases as possible.

@vimpostor
Copy link

It would be great if people try these changes with their own setups to find as much as bugs and corner cases as possible.

It seems to end up in an infinite loop for me when using it with https://github.com/vimpostor/quickcurver

Instructions used:

# in the root of my repo
cmake -B build
cmake --build build
cd build
/path/to/linuxdeployqt/bin/linuxdeployqt quickcurver -bundle-non-qt-libs -unsupported-allow-new-glibc

Backtrace of infinite loop:

#0  0x00007ffff730604f in ppoll () from /usr/lib/libc.so.6
#1  0x00007ffff7cd171b in qt_safe_poll(pollfd*, unsigned long, timespec const*) () from /usr/lib/libQt5Core.so.5
#2  0x00007ffff7c198db in QProcess::waitForFinished(int) () from /usr/lib/libQt5Core.so.5
#3  0x0000555555568794 in findDependencyInfo(QString const&) ()
#4  0x000055555556b27b in getQtLibraries(QString const&, QString const&, QSet<QString> const&) ()
#5  0x000055555556e79f in deployQtLibraries(QList<LibraryInfo>, QString const&, QStringList const&, bool) ()
#6  0x0000555555578a0a in deployPlugins(AppDirInfo const&, QString const&, QString, DeploymentInfo) ()
#7  0x000055555557a589 in deployPlugins(QString const&, DeploymentInfo) ()
#8  0x0000555555563d65 in main ()

@RICCIARDI-Adrien
Copy link
Contributor

Thanks for testing and reporting @vimpostor ! What's your Linux distro (as you are using -unsupported-allow-new-glibc) ? This way I can reproduce the bug on the same configuration than you.
PS : I played Achtung die Kurve a long time ago, it will be really fun to test with your program !

@vimpostor
Copy link

vimpostor commented Jun 1, 2022 via email

@probonopd
Copy link
Owner

probonopd commented Jun 5, 2022

-unsupported-allow-new-glibc is absolutely not to be used. It produces broken AppImages.

You need to find a build of Qt 6 that runs on all still-supported versions of Ubuntu, and use that, without -unsupported-allow-new-glibc.

@RICCIARDI-Adrien
Copy link
Contributor

@vimpostor, could you build your game on Ubuntu 18.04 with Qt 6.3, and deploy it without -unsupported-allow-new-glibc ?

@a12e
Copy link

a12e commented Jul 18, 2022

Hi @RICCIARDI-Adrien,
I also have a Qt 6 app running fine on Ubuntu 18.04 LTS. I would like to use linuxdeployqt to deploy it, but Qt 6 plugins are indeed not bundled.
What is the current status of the PR? Is there something I can do to help?

@RICCIARDI-Adrien
Copy link
Contributor

Hi @a12e,
Did you try packaging your app with this PR or with the master branch code ?
What plugins does your application need ?

@RICCIARDI-Adrien
Copy link
Contributor

@a12e Sorry for the dump question, I forgot that this PR was merged !

@a12e
Copy link

a12e commented Jul 18, 2022

@RICCIARDI-Adrien

I tried your add_qt6_support branch, and it works better than linuxdeployqt's master.

  • QML plugins are missing, because it cannot find qmlimportscanner. Indeed, in Qt 6, all tools are now located in QT_INSTALL_LIBEXECS, instead of QT_INSTALL_BINS. By manually copying qmlimportscanner next to the linuxdeployqt executable, QML plugins are properly deployed. Maybe we could add a new if around those lines?

    // Use qmlimportscanner from QLibraryInfo::BinariesPath
    QString qmlImportScannerPath = QDir::cleanPath(qtToBeBundledInfo.value("QT_INSTALL_BINS")) + "/qmlimportscanner";
    LogDebug() << "Looking for qmlimportscanner at" << qmlImportScannerPath;
    // Fallback: Look relative to the linuxdeployqt binary
    if (!QFile(qmlImportScannerPath).exists()){
    qmlImportScannerPath = QCoreApplication::applicationDirPath() + "/qmlimportscanner";
    LogDebug() << "Fallback, looking for qmlimportscanner at" << qmlImportScannerPath;
    }

  • Qt Network and Qt Multimedia plugins are not there any more, but this is perfectly normal because they were removed in Qt 6.

  • Finally, the new Qt 3D render plugins are missing in my deployment, but i can use the -extra-plugins= switch.

$ find /usr/local/plugins/renderers/
/usr/local/plugins/renderers/
/usr/local/plugins/renderers/libopenglrenderer.so
/usr/local/plugins/renderers/librhirenderer.so

So, with your branch and those tweaks, I seem to be able to deploy my Qt 6 app (QML, Qt 3D, Qt Multimedia) successfully.

@RICCIARDI-Adrien
Copy link
Contributor

Great, let's add the fix for qmlimportscanner.
Can you run ldd on your app binary (before running linuxdeployqt) ? One of the shared libraries should refer to Qt 3D.
If I recall well, Qt Multimedia has been added back to Qt 6 starting from Qt 6.2. Which version of Qt 6 are you using ?

@RICCIARDI-Adrien
Copy link
Contributor

@a12e, could you also test the qmlimportscanner fix from this branch https://github.com/RICCIARDI-Adrien/linuxdeployqt/tree/add_qt6_support_test ?

@a12e
Copy link

a12e commented Jul 18, 2022

@RICCIARDI-Adrien your fix for qmlimportscanner works great!

I use Qt 6.3.1 built with GCC 11 under Ubuntu 18.04 LTS.

Yes, Qt Multimedia was added back, but its plugin architecture has been removed. Instead, everything lies directly in libQt6Multimedia.so.

This is the ldd before linuxdeplyqt:

        /lib64/ld-linux-x86-64.so.2 (0x00007ff2bd2f4000)
        libEGL.so.1 => /usr/lib/x86_64-linux-gnu/libEGL.so.1 (0x00007ff2b484f000)
        libFLAC.so.8 => /usr/lib/x86_64-linux-gnu/libFLAC.so.8 (0x00007ff2a93e8000)
        libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007ff2ae8e7000)
        libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007ff2b1836000)
        libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007ff2af498000)
        libOpenGL.so.0 => /usr/lib/x86_64-linux-gnu/libOpenGL.so.0 (0x00007ff2b2880000)
        libQt63DCore.so.6 => /usr/local/lib/libQt63DCore.so.6 (0x00007ff2bb47d000)
        libQt63DExtras.so.6 => /usr/local/lib/libQt63DExtras.so.6 (0x00007ff2bbbfd000)
        libQt63DInput.so.6 => /usr/local/lib/libQt63DInput.so.6 (0x00007ff2b4e77000)
        libQt63DLogic.so.6 => /usr/local/lib/libQt63DLogic.so.6 (0x00007ff2b4c68000)
        libQt63DRender.so.6 => /usr/local/lib/libQt63DRender.so.6 (0x00007ff2bb71b000)
        libQt6Concurrent.so.6 => /usr/local/lib/libQt6Concurrent.so.6 (0x00007ff2b4a63000)
        libQt6Core.so.6 => /usr/local/lib/libQt6Core.so.6 (0x00007ff2b861a000)
        libQt6DBus.so.6 => /usr/local/lib/libQt6DBus.so.6 (0x00007ff2b1a67000)
        libQt6Gui.so.6 => /usr/local/lib/libQt6Gui.so.6 (0x00007ff2b8db1000)
        libQt6Multimedia.so.6 => /usr/local/lib/libQt6Multimedia.so.6 (0x00007ff2bb171000)
        libQt6Network.so.6 => /usr/local/lib/libQt6Network.so.6 (0x00007ff2b9929000)
        libQt6OpenGL.so.6 => /usr/local/lib/libQt6OpenGL.so.6 (0x00007ff2ba43b000)
        libQt6Qml.so.6 => /usr/local/lib/libQt6Qml.so.6 (0x00007ff2b9ced000)
        libQt6QmlModels.so.6 => /usr/local/lib/libQt6QmlModels.so.6 (0x00007ff2b2aae000)
        libQt6Quick.so.6 => /usr/local/lib/libQt6Quick.so.6 (0x00007ff2ba6dd000)
        libQt6QuickControls2.so.6 => /usr/local/lib/libQt6QuickControls2.so.6 (0x00007ff2baf62000)
        libQt6QuickTemplates2.so.6 => /usr/local/lib/libQt6QuickTemplates2.so.6 (0x00007ff2b2d82000)
        libSDL2-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0 (0x00007ff2bbee0000)
        libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007ff2ae6e5000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007ff2b69a4000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007ff2aaa2c000)
        libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007ff2b6588000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007ff2aa826000)
        libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007ff2b6792000)
        libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007ff2af956000)
        libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007ff2b6175000)
        libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007ff2b6385000)
        libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007ff2b5f6a000)
        libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007ff2afb5c000)
        libXss.so.1 => /usr/lib/x86_64-linux-gnu/libXss.so.1 (0x00007ff2b5d66000)
        libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007ff2b5b60000)
        libapparmor.so.1 => /lib/x86_64-linux-gnu/libapparmor.so.1 (0x00007ff2aac30000)
        libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007ff2b713c000)
        libasyncns.so.0 => /usr/lib/x86_64-linux-gnu/libasyncns.so.0 (0x00007ff2aae40000)
        libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007ff2aff8e000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff2b7647000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007ff2ad733000)
        libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007ff2bc212000)
        libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007ff2b01a3000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff2b7443000)
        libdouble-conversion.so.1 => /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.1 (0x00007ff2b08e6000)
        libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007ff2ae4d4000)
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007ff2ad2f6000)
        libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007ff2af74e000)
        libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007ff2b1d39000)
        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007ff2b1350000)
        libgbm.so.1 => /usr/lib/x86_64-linux-gnu/libgbm.so.1 (0x00007ff2ae2c5000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff2b7c57000)
        libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007ff2a9879000)
        libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ff2b40f1000)
        libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007ff2aeb73000)
        libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007ff2b31ea000)
        libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007ff2a8af6000)
        libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007ff2b23ba000)
        libgstallocators-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstallocators-1.0.so.0 (0x00007ff2b3eed000)
        libgstapp-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstapp-1.0.so.0 (0x00007ff2b4408000)
        libgstaudio-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstaudio-1.0.so.0 (0x00007ff2af223000)
        libgstbase-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0 (0x00007ff2b3779000)
        libgstgl-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstgl-1.0.so.0 (0x00007ff2b3c87000)
        libgstpbutils-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstpbutils-1.0.so.0 (0x00007ff2b4617000)
        libgstreamer-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0 (0x00007ff2b343e000)
        libgsttag-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgsttag-1.0.so.0 (0x00007ff2aefe8000)
        libgstvideo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstvideo-1.0.so.0 (0x00007ff2b39ee000)
        libgudev-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgudev-1.0.so.0 (0x00007ff2ae0bb000)
        libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007ff2ab74d000)
        libicui18n.so.60 => /usr/lib/x86_64-linux-gnu/libicui18n.so.60 (0x00007ff2b0eaf000)
        libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007ff2b0af7000)
        libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007ff2ad937000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007ff2aa1f1000)
        libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007ff2adb69000)
        libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007ff2ad528000)
        liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007ff2a9b95000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007ff2a9db1000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff2b7e6f000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007ff2a965f000)
        libogg.so.0 => /usr/lib/x86_64-linux-gnu/libogg.so.0 (0x00007ff2a91df000)
        liborc-0.4.so.0 => /usr/lib/x86_64-linux-gnu/liborc-0.4.so.0 (0x00007ff2ade3f000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff2aed77000)
        libpcre2-16.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007ff2b066f000)
        libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007ff2b1604000)
        libproxy.so.1 => /usr/lib/x86_64-linux-gnu/libproxy.so.1 (0x00007ff2b1f7e000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff2b7a38000)
        libpulse.so.0 => /usr/lib/x86_64-linux-gnu/libpulse.so.0 (0x00007ff2b6eec000)
        libpulsecommon-11.1.so => /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-11.1.so (0x00007ff2b03f0000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007ff2a9fd7000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff2b5100000)
        libsndfile.so.1 => /usr/lib/x86_64-linux-gnu/libsndfile.so.1 (0x00007ff2ab046000)
        libsndio.so.6.1 => /usr/lib/x86_64-linux-gnu/libsndio.so.6.1 (0x00007ff2b6cdc000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff2b820d000)
        libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007ff2ab4c9000)
        libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007ff2aa3f5000)
        libvorbis.so.0 => /usr/lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007ff2a8fb4000)
        libvorbisenc.so.2 => /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007ff2a8d0b000)
        libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007ff2b574f000)
        libwayland-cursor.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007ff2b5547000)
        libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007ff2b595e000)
        libwayland-server.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-server.so.0 (0x00007ff2aa613000)
        libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007ff2ab2bf000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007ff2afd66000)
        libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007ff2b5308000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff2b219d000)
        libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007ff2b2605000)
        linux-vdso.so.1 (0x00007ffc1d89e000)

This is the commands I used to deploy my app :

linuxdeployqt appdir/usr/share/applications/*.desktop -qmldir=../resources/ -no-copy-copyright-files -extra-plugins=renderers/librhirenderer.so,sceneparsers/libassimpsceneimport.so,tls/libqopensslbackend.so -verbose=2
cp -v /usr/lib/x86_64-linux-gnu/libstdc++.so.6 appdir/usr/lib/
linuxdeployqt appdir/usr/share/applications/*.desktop -appimage -no-copy-copyright-files -verbose=2

I needed to bundle a more recent version of the libstdc++ because of GCC 11 and modern C++, but there is no issue with glibc or other core libs.

I tested my app under a brand new Ubuntu 18.04 VM, everything works smoothly for now.

@RICCIARDI-Adrien
Copy link
Contributor

Thank you for the information and the tests.

Is any of the Qt libraries missing or are they all deployed correctly ?

libQt63DCore.so.6
libQt63DExtras.so.6
libQt63DInput.so.6
libQt63DLogic.so.6
libQt63DRender.so.6
libQt6Concurrent.so.6
libQt6Core.so.6
libQt6DBus.so.6
libQt6Gui.so.6
libQt6Multimedia.so.6
libQt6Network.so.6
libQt6OpenGL.so.6
libQt6Qml.so.6
libQt6QmlModels.so.6
libQt6Quick.so.6
libQt6QuickControls2.so.6
libQt6QuickTemplates2.so.6 

I attempted a fix for the Qt 3D renderers deployment, but I can't test it. Could you test it https://github.com/RICCIARDI-Adrien/linuxdeployqt/tree/add_qt6_support_test ?

@RICCIARDI-Adrien
Copy link
Contributor

I added the support for almost all Qt 6 plugins, but I can't test on complex applications. Could some of the people participating to this thread test with their own applications ? RICCIARDI-Adrien@66ff3cc

Thanks in advance for your help !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants