[pyqtdeploy] Failing at building the demo

Kaiser Chief kaiser.chiefmail at gmail.com
Sat Apr 20 10:32:44 BST 2024


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/ce6d3ad6/attachment-0001.htm>


More information about the PyQt mailing list