Bug 425749

Summary: libpyside2-py3-5.14 installation fails
Product: [KDE Neon] neon Reporter: Guido Sanchez <sanchez.guido>
Component: Packages User EditionAssignee: Neon Bugs <neon-bugs>
Status: RESOLVED WAITINGFORINFO    
Severity: normal CC: admin, geisserml, harvey.shi, jr, nate, neon-bugs, sitter, smihael, tynach2
Priority: NOR    
Version First Reported In: unspecified   
Target Milestone: ---   
Platform: Neon   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=428285
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: qtbase-abi-5-12-8 control file
qtdeclarative-abi-5-12-8 control file

Description Guido Sanchez 2020-08-24 18:29:39 UTC
SUMMARY

I tried to install ROS Noetic on a fresh install of KDE Neon based on Ubuntu 20.04. After trying to resolve unmet dependencies, I find that the package libpyside2-py3-5.14 fails because it depends on two virtual packages that I cannot find: qtbase-abi-5-12-8 and qtdeclarative-abi-5-12-8.

According to Ubuntu's package details [1, 2], libqt5qml5 and libqt5core5a should provide those virtual packages, and those two are installed from KDE Neon repository. I know that KDE Neon is not Ubuntu, but this would allow to install ROS.

Using the instructions found in [3] to create two dummy packages called qtbase-abi-5-12-8 and qtdeclarative-abi-5-12-8 solved the issue for now. 

[1] https://packages.ubuntu.com/focal/qtbase-abi-5-12-8
[2] https://packages.ubuntu.com/focal/qtdeclarative-abi-5-12-8
[3] https://eric.lubow.org/2010/creating-dummy-packages-on-debian/

STEPS TO REPRODUCE
1. Install a fresh version of KDE Neon
2. Run 'pkcon install libpyside2-py3-5.14'

OBSERVED RESULT

Installation fails due to unmet dependencies

EXPECTED RESULT

Installation is successful

SOFTWARE/OS VERSIONS

Linux/KDE Plasma: KDE neon 5.19 - Kernel Version: 5.4.0-42-generic

KDE Plasma Version: 5.19.4
KDE Frameworks Version: 5.73.0
Qt Version: 5.14.2

ADDITIONAL INFORMATION
Comment 1 Guido Sanchez 2020-08-24 18:30:51 UTC
Created attachment 131152 [details]
qtbase-abi-5-12-8 control file
Comment 2 Guido Sanchez 2020-08-24 18:31:28 UTC
Created attachment 131153 [details]
qtdeclarative-abi-5-12-8 control file
Comment 3 harvey.shi 2020-09-29 07:15:54 UTC
Same issue here, thanks for the workaround!
Comment 4 Colin Griffith 2020-10-02 22:28:44 UTC
I'd love to see a set of packages for Pyside2 in the Neon repositories, built against the version of Qt installed through said Neon repositories. It would not only help solve dependencies like this, but also provide more up-to-date Python QT libraries for development.
Comment 5 admin 2020-10-26 16:59:29 UTC
I need it also to build cutter (cutter.re) with shiboken2/pyside2, it would be indeed really nice to see new packages for this. I've made a duplicated report since I couldn't find anything in search before reporting but now it's done...
https://bugs.kde.org/show_bug.cgi?id=428285
Comment 6 smihael 2020-11-02 20:04:33 UTC
This also affects me.
Comment 7 geisserml 2021-05-09 12:45:00 UTC
I'm affected, too. This is quite hindering for development since the PyPI wheel for PySide2 has some severe theme issues that make it basically unusable.
Comment 8 geisserml 2021-05-21 20:51:15 UTC
Sorry for commenting on this again, but it would be really really nice if something could be done about this issue. PySide is an officialy supported and very popular part of Qt, so that's awkard it is not available on KDE Neon.
Comment 9 geisserml 2021-05-21 21:16:30 UTC
The virtual packages hack as explained by Guido Sanchez still works but is risky and might cause functional issues (or potentially also security risks) due to ABI incompatibilities. PySide depends on these packages for a reason.
The same basically accounts for PyQt, which is still on version 5.14 as well.
Comment 10 geisserml 2021-07-01 14:59:38 UTC
Update: PyQt5 got updated to 5.15 some time ago, and PySide2 toady. Many thanks!!
Comment 11 geisserml 2021-07-01 15:14:17 UTC
Hmm, but unfortunately something went wrong. I just applied the update and now PySide2 apparently is broken more or less compeletely. Some of my code directly terminates with a segmentation fault, some does only when closing the main window.

Here is a very simple sample code that segfaults on exit:

```
import sys
from PySide2.QtWidgets import QApplication, QMainWindow

if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    
    window = QMainWindow()
    window.show()
    
    app.exec_()
```
Comment 12 geisserml 2021-07-01 15:15:18 UTC
In gdb:

Reading symbols from python3...
Reading symbols from /usr/lib/debug/.build-id/9c/096cdc8214a805dca8d174fe072684b0f21645.debug...
(gdb) run
Starting program: /usr/bin/python3 pyside2_test.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff3d37700 (LWP 7296)]
[New Thread 0x7ffff3536700 (LWP 7297)]
[New Thread 0x7fffe2d35700 (LWP 7298)]
[New Thread 0x7fffd01cd700 (LWP 7299)]
[New Thread 0x7fffcdca1700 (LWP 7300)]
[New Thread 0x7fffcd4a0700 (LWP 7301)]
[New Thread 0x7fffccc9f700 (LWP 7302)]
[New Thread 0x7fffbffff700 (LWP 7303)]
[Thread 0x7fffbffff700 (LWP 7303) exited]
[Thread 0x7fffccc9f700 (LWP 7302) exited]
[Thread 0x7fffcd4a0700 (LWP 7301) exited]
[Thread 0x7fffcdca1700 (LWP 7300) exited]

Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
_PyErr_SetObject (tstate=0x0, exception=<type at remote 0x8f7340>, value=('__name__',)) at ../Python/errors.c:115
115     ../Python/errors.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt full
#0  _PyErr_SetObject (tstate=0x0, exception=<type at remote 0x8f7340>, value=('__name__',)) at ../Python/errors.c:115
        exc_value = <optimized out>
        tb = 0x0
#1  0x00000000005d0fb4 in _PyErr_SetKeyError (arg='__name__') at ../Python/errors.c:182
        tstate = 0x0
        tup = ('__name__',)
        tstate = <optimized out>
        tup = <optimized out>
        __atomic_load_ptr = <optimized out>
        __atomic_load_tmp = <optimized out>
#2  _PyDict_DelItem_KnownHash (op=<optimized out>, key='__name__', hash=-131977350396443160) at ../Objects/dictobject.c:1628
        ix = <optimized out>
        mp = <optimized out>
        old_value = 0x0
#3  0x000000000058fa31 in PyDict_DelItem (key='__name__', 
    op={'__getattribute__': '__getattribute__', '__getattr__': '__getattr__', '__setattr__': '__setattr__', '__delattr__': '__delattr__', '__repr__': '__repr__', '__hash__': '__hash__', '__call__': '__call__', '__str__': '__str__', '__lt__': '__lt__', '__le__': '__le__', '__eq__': '__eq__', '__ne__': '__ne__', '__gt__': '__gt__', '__ge__': '__ge__', '__next__': '__next__', '__get__': '__get__', '__set__': '__set__', '__delete__': '__delete__', '__init__': '__init__', '__new__': '__new__', '__del__': '__del__', '__await__': '__await__', '__aiter__': '__aiter__', '__anext__': '__anext__', '__add__': '__add__', '__radd__': '__radd__', '__sub__': '__sub__', '__rsub__': '__rsub__', '__mul__': '__mul__', '__rmul__': '__rmul__', '__mod__': '__mod__', '__rmod__': '__rmod__', '__divmod__': '__divmod__', '__rdivmod__': '__rdivmod__', '__pow__': '__pow__', '__rpow__': '__rpow__', '__neg__': '__neg__', '__pos__': '__pos__', '__abs__': '__abs__', '__bool__': '__bool__', '__invert__': '__invert__', '__lshift__': '__lshift__', '__...(truncated)) at ../Objects/dictobject.c:1607
        hash = <optimized out>
        hash = <optimized out>
#4  unicode_dealloc (unicode='__name__') at ../Objects/unicodeobject.c:1859
No locals.
#5  0x00007ffff6cd1260 in Shiboken::String::finalizeStaticStrings() ()
   from /usr/local/lib/python3.8/dist-packages/shiboken2/libshiboken2.abi3.so.5.15
No symbol table info available.
#6  0x00000000004a54bf in call_ll_exitfuncs (runtime=<optimized out>) at ../Python/pylifecycle.c:1364
        exitfunc = <optimized out>
#7  Py_FinalizeEx () at ../Python/pylifecycle.c:1368
        status = 0
        runtime = <optimized out>
        tstate = <optimized out>
        interp = 0x962830
        malloc_stats = 0
#8  0x00000000006b6f7d in Py_RunMain () at ../Modules/main.c:691
        exitcode = 0
#9  0x00000000006b71ed in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:743
        args = {argc = 2, use_bytes_argv = 1, bytes_argv = 0x7fffffffdc48, wchar_argv = 0x0}
#10 0x00007ffff7dcb0b3 in __libc_start_main (main=0x4ef190 <main>, argc=2, argv=0x7fffffffdc48, init=<optimized out>, fini=<optimized out>, 
    rtld_fini=<optimized out>, stack_end=0x7fffffffdc38) at ../csu/libc-start.c:308
--Type <RET> for more, q to quit, c to continue without paging--c
        self = <optimized out>
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {7041536, 6258318027025474774, 6264496, 140737488346176, 0, 0, -6258318025837583146, -6258335870587706154}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x2, 0x7fffffffdc48}, data = {prev = 0x0, cleanup = 0x0, canceltype = 2}}}
        not_first_call = <optimized out>
#11 0x00000000005f96de in _start () at ../Include/object.h:459
No symbol table info available.
(gdb) py-bt
Unable to locate python frame
Comment 13 geisserml 2021-07-01 15:24:41 UTC
I tried to roll back, but apparently that's not easily possible.
Comment 14 Jonathan Riddell 2021-07-01 19:35:04 UTC
Sorry for your problems.

Using a fresh KDE neon User edition setup from docker I can run your example python app fine.  I can also run it fine on my KDE neon unstable install fine.  I can also run more complex apps fine such as mygnuhealth.

Are you full up to date?
Comment 15 geisserml 2021-07-02 14:20:08 UTC
(In reply to Jonathan Riddell from comment #14)

Thank you for looking into it. Yes, my system is fully up to date.
I can use the pyside2 binaries from PyPI for now, but anyway I'd like to know the cause for the issues...
Comment 16 geisserml 2021-07-02 19:07:43 UTC
> I can run your example python app fine.
And you're sure you don't have the PyPI version of pyside2 installed?
Comment 17 Carlos De Maine 2025-09-20 09:35:29 UTC
Thank you for your bug report! 
However this bug report was created/provided previous to 01/01/2023 and also has not received any updates since  before 01/01/2025. 
Unfortunately KDE neon no longer provides updates for anything older than noble 24.04 based edition's.
Please upgrade to KDE neon noble and if you can reproduce the issue after upgrading to an active version, feel free to re-open this bug report.
Thanks for understanding!