[pyqtdeploy] Failing at building the demo

Charles peacech at gmail.com
Sat Apr 20 14:57:37 BST 2024


 -lQtMultimedia means that you are linking with QtMultimedia.so.

The first thing you do is check is your /usr/lib directory whether that
file exists: cd /usr/lib && find | grep -i qtmultimedia

Then if the file is not found, you check the list of files your
qtmultimedia5-dev package has. You'll see that it has Qt5Multimedia.so.

So then what you need to do is just symlink it

ln
-s /usr/lib/x86_64-linux-gnu/libQt5Multimedia.so
/usr/lib/x86_64-linux-gnu/libQtMultimedia.so


On Sat, Apr 20, 2024 at 8:21 PM umbertofilippo <umbertofilippo at tiscali.it>
wrote:

> Hi KC and thanks again for your suopport!
>
>
> I have included it in my toml file, then tried to build the project and I
> got the error: "Project ERROR: Unknown module(s) in QT: multimedia linux"
>
>
> I then googled and understood I might need to install QtMultimedia on my
> system (Linux Mint 20).
>
> I then did `sudo apt install qtmultimedia5-dev libqt5multimedia5
> libqt5multimedia5-plugins` (not sure if all were necessary), and now during
> the make command I receive a new error:
>
>
> ```
>
> /usr/bin/ld: cannot find -lQtMultimedia: No such file or directory
> collect2: error: ld returned 1 exit status
> make: *** [Makefile:210: memory] Error 1
>
> ```
>
>
> I tried to find out how to solve the problem but after some search I could
> figure it out.
>
> I guess it still has to do with some missing components, but I could not
> find the proper page with a list of all the needed libraries.
>
>
> Do you or anyone else has it?
>
>
> Thanks again for your time, really appreciated
>
>
> Umberto
>
>
> On 4/20/24 11:32, Kaiser Chief wrote:
>
> Hi umbertofilippo,
>
> The non-standard python packages should be added to the `sysroot.toml`
> first.
>
> In fact, there should be a `PyQt5` block in your `sysroot.toml`. (The
> component plugin for PyQt5 will work there). Look at the `Pyqt5.Linux`
> section and add QtMultimedia to the list of modules (QtWidgets should
> already be there for instance).
>
> Then reload your .pdt and it should automatically detect QtMultimedia
> which you can tick.
>
> I have checked your python source code and it does not seem that you need
> any other dependency so you can ghead with this change and build.
>
> Best regards,
>
> KC
>
>
> On Fri, 19 Apr 2024, 17:16 umbertofilippo, <umbertofilippo at tiscali.it>
> wrote:
>
>> Hello everyone,
>>
>>
>> I finally had some time to come back to this.
>>
>> I tried to build my own application (a simple memory game, whose source
>> you can find here: https://github.com/umbe1987/memory).
>>
>> Host Linux-64 and target Linux-64.
>>
>> The deployment process seemed smooth, however when I try to launch my
>> application in the build-linux-64 directory, I see this error:
>>
>>
>> ```
>>
>> Traceback (most recent call last):
>>   File "memory.py", line 6, in <module>
>>   File "bootstrap-3.11.0.py", line 1178, in _find_and_load
>>   File "bootstrap-3.11.0.py", line 1142, in _find_and_load_unlocked
>> ModuleNotFoundError: No module named 'PyQt5.QtMultimedia'
>>
>> ```
>>
>> I went back to the .pdt file (`pyqtdeploy-build memory.pdt`), but in the
>> Packages tab I cannot see QtMultimedia listed anywhere.
>>
>> I could try to add it manually in the memory.pdt file, but I was
>> wondering if I am doing anything wrong.
>>
>> I am sharing the content of my pdt file below.
>>
>> Many thanks in advance if you wish to help.
>>
>>
>> Umberto
>>
>>
>> memory.pdt
>>
>> ```
>>
>> version = 0
>> sysroot = ""
>> sysroots_dir = ""
>> parts = [ "Python:random", "PyQt:PyQt5.QtWidgets", "Python:glob",
>> "Python:os", "PyQt:PyQt5.QtCore", "PyQt:PyQt5.QtGui", "SIP:PyQt5.sip",
>> "PyQt:PyQt5",]
>>
>> [Application]
>> entry_point = ""
>> is_console = false
>> is_bundle = false
>> name = ""
>> qmake_configuration = ""
>> script = "memory.py"
>> syspath = ""
>>
>> [Application.Package]
>> name = "data"
>> exclude = [ "*.pyc", "*.pyd", "*.pyo", "*.pyx", "*.pxi", "__pycache__",
>> "*-info", "EGG_INFO", "*.so",]
>> [[Application.Package.Content]]
>> name = "back.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content]]
>> name = "img"
>> included = true
>> is_directory = true
>> [[Application.Package.Content.Content]]
>> name = "analisiapprofondita.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "cagnaccioselvaggio.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "diamanteocchidileone.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "lameraviglia.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "leggedelpiuforte.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "lucertolacrogiolante.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "ricercaossessiva.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "ruggitodelwurm.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "studioaccurato.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "Tropicalisland.jpg"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "wurmarrogante.jpg"
>> included = true
>> is_directory = false
>>
>>
>> [[Application.Package.Content]]
>> name = "sound"
>> included = true
>> is_directory = true
>> [[Application.Package.Content.Content]]
>> name = "end.wav"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "fail.wav"
>> included = true
>> is_directory = false
>>
>> [[Application.Package.Content.Content]]
>> name = "success.wav"
>> included = true
>> is_directory = false
>>
>> ```
>> On 3/12/24 08:48, umbertofilippo wrote:
>>
>> Thanks Charles and KC!
>>
>>
>> I was finally able to build the demo after installing all the Qt for X11
>> requirements for Linux!!!
>>
>>
>> For the records, here is what I had to install on my machine (Linux Mint
>> 21):
>>
>> Note: there is a package in the list of requirements which has a missing
>> match on my system, I am marking it down below:
>>
>>
>> sudo apt-get install libxcb-util-dev
>> sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev
>> libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev
>> libxcb1-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev
>> libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev
>> libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev
>> libxkbcommon-dev libxkbcommon-x11-dev libxcb-xinerama0-dev # instead of
>> "libxcd-xinerama-dev"
>>
>>
>> Now, on my application and then Android! ;)
>>
>>
>> On 3/9/24 20:47, Umberto Minora wrote:
>>
>> Thanks for the hint Charles, I will try to test the solution as soon as I
>> can and report back on the result.
>>
>> As far as I understand, I should do "sudo apt-get install
>> libxcb-util-dev" as explained in
>> https://forum.qt.io/topic/125582/qt-5-15-2-do-not-build-libqxcb-so-but-at-the-same-time-qt-5-14-0-successfully-build-libqxcb-so/4?_=1710013170647&lang=it
>> and run "build-demo.py" again.
>>
>> Will be back soon.
>>
>> Umberto
>>
>> Il 9 mar 2024 15:48, Charles <peacech at gmail.com> <peacech at gmail.com> ha
>> scritto:
>>
>> Do you have libxcb.so platform plugin in your qt directory?
>>
>> If not you need to rebuild qt again, make sure that requirements listed
>> at https://doc.qt.io/qt-5/linux-requirements.html are installed and make
>> sure the xcb platform plugin is built.
>>
>> On Sat, Mar 9, 2024 at 8:38 PM umbertofilippo <umbertofilippo at tiscali.it>
>> wrote:
>>
>> Hello everyone,
>>
>>
>> just a quick update: I did the KC's three lines trick and it did the job.
>>
>> I am now stuck at yet another error, which is
>>
>> Generating the Makefiles...
>> /home/umberto/games/python/pyqt-demo/sysroot-linux-64/Qt/bin/qmake
>> -recursive PyQt5.pro
>> sip-install:
>> '/home/umberto/games/python/pyqt-demo/sysroot-linux-64/Qt/bin/qmake
>> -recursive PyQt5.pro' failed returning 3
>> Info: creating stash file /tmp/tmphwkq3ix1/.qmake.stash
>> Reading /tmp/tmphwkq3ix1/QtCore/QtCore.pro
>> Reading /tmp/tmphwkq3ix1/QtNetwork/QtNetwork.pro
>> Reading /tmp/tmphwkq3ix1/QtGui/QtGui.pro
>> Reading /tmp/tmphwkq3ix1/QtWidgets/QtWidgets.pro
>> Reading /tmp/tmphwkq3ix1/QtX11Extras/QtX11Extras.pro
>> Project ERROR: Unknown module(s) in QT: x11extras
>> pyqtdeploy-sysroot: execution of 'sip-install' failed: returned exit code
>> 1
>>
>>
>> I am attaching the whole log again in case it's useful to better
>> understand what went wrong.
>>
>>
>> Any idea how to move on from here?
>>
>>
>> Sorry for spamming but I hope this thread not only will fix my issues but
>> also will serve as a reference for building with a Linux machine (or me and
>> for others hopefully).
>>
>>
>> Umberto
>>
>>
>> On 3/8/24 20:32, Kaiser Chief wrote:
>>
>> Hi,
>>
>> "qt-everywhere-opensource-src-5.15.10.tar.xz" is the right file you are
>> looking for.
>>
>> Unfortunately, "pyqtdeploy/sysroot/plugins/Qt.py" is looking for
>> 'qt-everywhere-src-{}.tar.xz'
>>
>> You could fix that line (#53) in "pyqtdeploy/sysroot/plugins/Qt.py"with:
>> ` qt-everywhere-opensource-src-{}.tar.xz `
>>
>> However, you might encounter problems down the line probably...
>>
>> I would recommend to stick with Qt5.15.2 and do necessary changes.
>> Alternatively, you could built
>> qt-everywhere-opensource-src-5.15.10.tar.xz from source manually and tell
>> pyqtdeploy where to look for Qt install (but that's a bit more painful).
>>
>>
>> Best regards,
>>
>> KC
>>
>> Le ven. 8 mars 2024 à 19:21, umbertofilippo <umbertofilippo at tiscali.it>
>> a écrit :
>>
>> Thanks again for the feedback,
>>
>>
>> I have just tried to update the sysroot.toml like this:
>>
>>
>> # Qt
>> ##########################################################################
>>
>> [Qt]
>> version = "5.15.10" # original was "5.15.2"
>> edition = "opensource"
>>
>> and now it seems the link to download the qt source can no longer be
>> found.
>>
>>
>> Qt: installing component...
>> Qt: looking for 'qt-everywhere-src-5.15.10.tar.xz' in
>> /home/umberto/games/python/pyqt-demo.
>> Qt: downloading 'qt-everywhere-src-5.15.10.tar.xz' from
>> https://download.qt.io/archive/qt/5.15/5.15.10/single/...
>> Qt: '
>> https://download.qt.io/archive/qt/5.15/5.15.10/single/qt-everywhere-src-5.15.10.tar.xz'
>> was not found.
>> pyqtdeploy-sysroot: Qt: unable to find
>> '/home/umberto/.pyqtdeploy/cache/qt-everywhere-src-5.15.10.tar.xz'.
>>
>>
>> The only similar thing I can see in
>> https://download.qt.io/archive/qt/5.15/5.15.10/single/ is
>> "qt-everywhere-opensource-src-5.15.10.tar.xz"
>>
>>
>> If there is no easy way to solve this you can think of I will probably
>> try to test adding those 3 lines to qtbase/src/corelib/global/qglobal.h
>>
>>
>> Thanks again so much for your kind and feedback, much appreciated!
>>
>>
>> Umberto
>>
>>
>> On 3/8/24 19:38, Kaiser Chief wrote:
>>
>> To complement Charles' answer, it seems like someone found a quick fix
>> with GCC11, in case you are reluctant to move back to GCC10:
>> https://forum.qt.io/topic/136672/error-installing-qt-everywhere-src-5-15-2-on-ubuntu-22-04/2
>>
>> add these 3 lines at the top of qtbase/src/corelib/global/qglobal.h : (I
>> haven't tested that)
>> ```
>> #ifdef __cplusplus
>> #include <limits>
>> #endif
>> ```
>>
>> For ref, the QT bug associated is:
>> https://bugreports.qt.io/browse/QTBUG-90395
>> It has been fixed for QT5.15.9
>> <https://bugreports.qt.io/issues/?jql=project+%3D+QTBUG+AND+fixVersion+%3D+5.15.9>,
>> but since you are using the default QT5.15.2, well it's not fixed.
>>
>> Best regards,
>>
>> KC
>>
>> Le ven. 8 mars 2024 à 18:28, Charles <peacech at gmail.com> a écrit :
>>
>> With C++ the relevant error is the first error line, the rest is usually
>> noise. If you google gcc numeric_limits is not a class template you will
>> find https://bugs.gentoo.org/768342
>>
>> If you use gcc 11 then use gcc 10 otherwise patch qt headers as in
>> https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=92d54be896563102786238893a9c645b8bdb43ef
>>
>> On Sat, Mar 9, 2024 at 12:49 AM umbertofilippo <umbertofilippo at tiscali.it>
>> wrote:
>>
>> Moving on,
>>
>>
>> I have tried to remove OpenSSL from the "sysroot.toml" since it is not
>> required, and now the process seems to go further, but I am stuck at a new
>> error:
>>
>>
>> Verifying host architecture 'linux-64'...
>> Verifying target architecture 'linux-64'...
>> zlib: verifying...
>> Qt: verifying...
>> Python: verifying...
>> SIP: verifying...
>> PyQt: verifying...
>> PyQt3D: verifying...
>> PyQtChart: verifying...
>> PyQtDataVisualization: verifying...
>> PyQtNetworkAuth: verifying...
>> PyQtPurchasing: verifying...
>> QScintilla: verifying...
>> zlib: installing component...
>> Qt: installing component...
>> Qt: downloading 'qt-everywhere-src-5.15.2.tar.xz' from
>> https://download.qt.io/archive/qt/5.15/5.15.2/single/...
>> pyqtdeploy-sysroot: execution of './configure' failed: returned exit code
>> 2
>>
>>
>> What can be the cause of this new error? I see there is a new folder now
>> in the original pyqt demo directory called "sysroot-linux-64" and inside I
>> see there's "sysroot-linux-64/build/qt-everywhere-src-5.15.2" with a
>> "configure" file, but other than this I have no clue sincerely on why it is
>> failing.
>>
>>
>> I have attached the content of running build-demo.py with --verbose
>>
>>
>> Hope someone can help me. Thanks.
>>
>>
>> On 3/8/24 12:18, umbertofilippo wrote:
>>
>> Hi and many thanks for you feedback!
>>
>>
>> First of all let me tell that I am very interested in finding a solution
>> to this problem, and I will try to do my best if I can contribute in case
>> it's needed.
>>
>>
>> I just checked, and this is what I can see in my
>> /usr/include/openssl/opensslv.h file. Cannot tell though if pyqtdeploy is
>> supposed to work or not given these lines...
>>
>>
>> /*
>>  * SECTION 4: BACKWARD COMPATIBILITY
>>  */
>>
>> # define OPENSSL_VERSION_TEXT "OpenSSL 3.0.2 15 Mar 2022"
>>
>> /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
>> # ifdef OPENSSL_VERSION_PRE_RELEASE
>> #  define _OPENSSL_VERSION_PRE_RELEASE 0x0L
>> # else
>> #  define _OPENSSL_VERSION_PRE_RELEASE 0xfL
>> # endif
>> # define OPENSSL_VERSION_NUMBER          \
>>     ( (OPENSSL_VERSION_MAJOR<<28)        \
>>       |(OPENSSL_VERSION_MINOR<<20)       \
>>       |(OPENSSL_VERSION_PATCH<<4)        \
>>       |_OPENSSL_VERSION_PRE_RELEASE )
>>
>> # ifdef  __cplusplus
>> }
>> # endif
>>
>> # include <openssl/macros.h>
>> # ifndef OPENSSL_NO_DEPRECATED_3_0
>> #  define HEADER_OPENSSLV_H
>> # endif
>>
>> #endif
>>
>>
>> Umberto
>>
>>
>> On 3/7/24 19:11, Kaiser Chief wrote:
>>
>> Hi,
>>
>> To complement my previous message (and after doing a quick search through
>> the source code):
>> * The script "OpenSSL.py" is looking for "OPENSSL_VERSION_NUMBER" in
>> "/usr/include/openssl/opensslv.h"
>> * In OpenSSL 1.1.1 (which is installed on my Linux), I can see the line
>> "#define OPENSSL_VERSION_NUMBER" in  "/usr/include/openssl/opensslv.h".
>>
>> Can you check that you have that line in your header file too?
>>
>> If not, it's probably that OpenSSL updated their header files and put the
>> VERSION_NUMBER somewhere else...
>>
>> If you want to run the demo, I would recommend you install the default
>> versions as written in the `sysroot.toml`
>>
>> If there are fixes to make for each "version grepping", I believe that
>> Phil had a way to contribute to plugins for pyqtdeploy, but can't remember
>> where...
>>
>> Best regards,
>>
>> KC
>>
>> Le jeu. 7 mars 2024 à 17:56, Kaiser Chief <kaiser.chiefmail at gmail.com> a
>> écrit :
>>
>> Hi,
>>
>> According to the sysroot help page (
>> https://www.riverbankcomputing.com/static/Docs/pyqtdeploy/sysroot.html#openssl),
>> if you have configured your `sysroot.toml` like this:
>> ```
>>
>> [OpenSSL.linux]
>> version = ""
>> install_from_source = false
>>
>> ```
>>
>> Then, on Linux, the OpenSSL library used will be the one installed on
>> your OS with no assumption on the version (so that should work in your
>> example).
>> Now, that's what is provided in the demo folder for `pyqtdeploy-3.3.0`,
>> so that's odd.
>>
>> Therefore, it could be that the `pyqtdeploy-sysroot` functionality is
>> struggling to extract the version number from your OS-installed OpenSSL.
>>
>> ---
>>
>> I am not of great help with that comment, however, I would like to
>> suggest, if it's your first time with pyqtdeploy to give a try at my Github
>> repo:
>>
>> https://github.com/achille-martin/pyqt-crom
>>
>> This repo aims at demonstrating how beginner devs, intermediate devs and
>> expert devs can benefit from pyqtdeploy.
>> It also offers a few simple tutorials to get started with pyqtdeploy
>> (simpler than the demo in the official pyqtdeploy package) and optimises
>> bits of the tool regarding the user interface (for now).
>>
>> I can support you with your initial journey on discovering pyqtdeploy
>> through my repo if you wish.
>>
>> Best regards,
>>
>> KC
>>
>> Le jeu. 7 mars 2024 à 17:06, umbertofilippo <umbertofilippo at tiscali.it>
>> a écrit :
>>
>> Hello everyone, first time here for me :)
>>
>>
>> I was giving pyqtdeploy a try and I am stuck at the very first step of
>> the "Building the Demo" page.
>>
>>
>> I am on a Linux-64 machine. I am following the tutorial at
>> https://www.riverbankcomputing.com/static/Docs/pyqtdeploy/demo.html and
>> I have downloaded the demo files from
>>
>> https://files.pythonhosted.org/packages/44/d4/978017382f0ecc48601944c3fc0f58a5c5075a1d3acd48d09c11ee471b05/pyqtdeploy-3.3.0.tar.gz
>>
>>
>> I have created a virtual python environment with the following packages
>> and versions installed:
>>
>> Name,Version
>> _libgcc_mutex,0.1
>> _openmp_mutex,4.5
>> bzip2,1.0.8
>> ca-certificates,2024.2.2
>> ld_impl_linux-64,2.40
>> libexpat,2.6.1
>> libffi,3.4.2
>> libgcc-ng,13.2.0
>> libgomp,13.2.0
>> libnsl,2.0.1
>> libsqlite,3.45.1
>> libuuid,2.38.1
>> libxcrypt,4.4.36
>> libzlib,1.2.13
>> ncurses,6.4
>> openssl,3.2.1
>> pip,24.0
>> pyqt5,5.15.10
>> pyqt5-qt5,5.15.2
>> pyqt5-sip,12.13.0
>> pyqtdeploy,3.3.0
>> python,3.12.2
>> readline,8.2
>> setuptools,69.1.1
>> tk,8.6.13
>> toml,0.10.2
>> tzdata,2024a
>> wheel,0.42.0
>> xz,5.2.6
>>
>> I have tried to run the command "python build-demo.py" straight away,
>> but I am getting the following error:
>>
>> OpenSSL: verifying...
>> OpenSSL: determining installed version from
>> '/usr/include/openssl/opensslv.h'.
>> pyqtdeploy-sysroot: OpenSSL: unable to extract the version number.
>>
>>
>> OpenSSL is installed on my machine and the result of doing "openssl
>> version" is "OpenSSL 3.2.1 30 Jan 2024 (Library: OpenSSL 3.2.1 30 Jan
>> 2024)"
>>
>>
>> Am I supposed to install the exact versions of all the components found
>> in the ""sysroot.toml" file to be able to run "python build-demo.py"
>> successfully?
>>
>>
>> Thanks,
>>
>>
>> Umberto
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20240420/c3de87d6/attachment-0001.htm>


More information about the PyQt mailing list