[PySide] Building pyside2 seems to be rocket science...

Filippo Rusconi listes.rusconi at laposte.net
Thu Dec 10 23:50:59 CET 2020


and... it turns out that I am not a rocket scientist :-(

Greetings, fellow developers,

those reading this mailing list regularly know that I have been struggling with
the build of Pyside2...

Well, I think I finally got round of some glitches in the build system and I
would like to publish some notes that might be useful to others in the same
journey... These notes will also be in the net, so I can refer to these
later :-)


Qt 5.15
=======

Debian testing, 20201210

Python3.9, gcc (Debian 10.2.0)

Note: the command lines start with % (using zsh).

First off follow the instructions at 

https://doc.qt.io/qtforpython/gettingstarted-linux.html

However some things need to be done that are not described:

In order to succeed in building sphinx/qthelp doc builds:

% apt install python3-sphinxcontrib.qthelp

% cd pyside-setup && git checkout -b 5.15 --track origin/5.15

To make sure the pyside2-tools directory gets populated

% git submodule update --init

Check that the directory is no more empty:

% ls sources/pyside2-tools

In the virtual environment and in pyside-setup run the command:

% python3 setup.py build --reuse-build --qmake=/usr/lib/x86_64-linux-gnu/qt5/bin/qmake --build-tests --ignore-git 2>&1 | tee ../pyside2-5.15-build-$(today-time).log

Get error:
==========

Regenerating /home/rusconi/.python-virtual-envs/pyside-setup/build/lib.linux-x86_64-3.9/PySide2/examples/opengl/textures/textures_rc.py from textures.qrc
In directory /home/rusconi/.python-virtual-envs/pyside-setup:
         Running command:  /home/rusconi/.python-virtual-envs/pyside-setup/testenv3_install/py3.9-qt5.15.1-64bit-release/bin/rcc -g python /home/rusconi/.python-virtual-envs/pyside-setup/build/lib.linux-x86_64-3.9/PySide2/examples/opengl/textures/textures.qrc -o /home/rusconi/.python-virtual-envs/pyside-setup/build/lib.linux-x86_64-3.9/PySide2/examples/opengl/textures/textures_rc.py
setup.py/prepare_packages:  [Errno 2] No such file or directory: '/home/rusconi/.python-virtual-envs/pyside-setup/testenv3_install/py3.9-qt5.15.1-64bit-release/bin/rcc'
error: [Errno 2] No such file or directory: '/home/rusconi/.python-virtual-envs/pyside-setup/testenv3_install/py3.9-qt5.15.1-64bit-release/bin/rcc'
Traceback (most recent call last):
   File "/home/rusconi/.python-virtual-envs/pyside-setup/setup.py", line 296, in <module>
     setup_runner.run_setup()
   File "/home/rusconi/.python-virtual-envs/pyside-setup/build_scripts/setup_runner.py", line 168, in run_setup
     raise RuntimeError(msg)
RuntimeError: 
setup.py invocation failed with exit code: 1.

setup.py invocation was: /home/rusconi/.python-virtual-envs/testenv/bin/python3 setup.py build --reuse-build --qmake=/usr/lib/x86_64-linux-gnu/qt5/bin/qmake --build-tests --ignore-git --internal-build-type=pyside2

Fix:
====

% pushd /home/rusconi/.python-virtual-envs/pyside-setup/testenv3_install/py3.9-qt5.15.1-64bit-release/bin/
% ln -sf /usr/bin/qtchooser uic
% ln -sf /usr/bin/qtchooser rcc

% python3 setup.py build --reuse-build --qmake=/usr/lib/x86_64-linux-gnu/qt5/bin/qmake --build-tests --ignore-git 2>&1 | tee ../pyside2-5.15-build-$(today-time).log

Get error:
==========

In directory /home/rusconi/.python-virtual-envs/pyside-setup:
         Running command:  /home/rusconi/.python-virtual-envs/pyside-setup/patchelf --set-rpath $ORIGIN/:/usr/lib/x86_64-linux-gnu /home/rusconi/.python-virtual-envs/pyside-setup/build/lib.linux-x86_64-3.9/PySide2/pyside2-lupdate
warning: working around a Linux kernel bug by creating a hole of 94208 bytes in ‘/home/rusconi/.python-virtual-envs/pyside-setup/build/lib.linux-x86_64-3.9/PySide2/pyside2-lupdate’
Patched rpath to '$ORIGIN/' (Linux) or updated rpath (OS/X) in /home/rusconi/.python-virtual-envs/pyside-setup/build/lib.linux-x86_64-3.9/PySide2/pyside2-lupdate.
running build_py
package init file 'sources/pyside2/PySide2/__init__.py' not found (or not a regular file)
running build_ext
--- Build completed (10s)

Fix:
====

% cp build/lib.linux-x86_64-3.9/PySide2/__init__.py sources/pyside2/PySide2
  
% python3 setup.py build --reuse-build --qmake=/usr/lib/x86_64-linux-gnu/qt5/bin/qmake --build-tests --ignore-git 2>&1 | tee ../pyside2-5.15-build-$(today-time).log

Build terminates and $? is 0.

Now install:
============

% python3 setup.py install --reuse-build --qmake=/usr/lib/x86_64-linux-gnu/qt5/bin/qmake --build-tests --ignore-git 2>&1 | tee ../pyside2-5.15-build-$(today-time).log

The install terminates and $? is 0.

Could play Tetrix using 

% python3 examples/widgets/widgets/tetrix.py !!!

Done !

Now the hardest part: start writing code for the Python bindings of my lib.

Thanks for listening.

-- 
⢀⣴⠾⠻⢶⣦⠀  Filippo Rusconi, PhD
⣾⠁⢠⠒⠀⣿⡁   Research scientist at CNRS
⢿⡄⠘⠷⠚⠋⠀   Debian Developer
⠈⠳⣄⠀⠀⠀⠀  http://msxpertsuite.org
           http://www.debian.org




More information about the PySide mailing list