Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 556132 - net-p2p/retroshare-0.6.0_rc2_pre8551[voip]: should either use qt4 or force <media-libs/opencv-3.0.0[-qt4]
Summary: net-p2p/retroshare-0.6.0_rc2_pre8551[voip]: should either use qt4 or force <m...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Sergey Popov
URL:
Whiteboard:
Keywords: PATCH
Depends on:
Blocks:
 
Reported: 2015-07-28 14:10 UTC by PhobosK
Modified: 2015-09-22 10:18 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
retroshare-0.6.0_rc2_pre8551-r1.ebuild.patch (retroshare-0.6.0_rc2_pre8551-r1.ebuild.patch,2.57 KB, patch)
2015-07-28 14:13 UTC, PhobosK
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description PhobosK 2015-07-28 14:10:28 UTC
There are a couple of problems with the =net-p2p/retroshare-0.6.0_rc2_pre8551 ebuild:

1. It uses qt5 for compilation/runtime, but the problem is that if one wants to use its VOIP plugin (i.e. use the "voip" flag of the package) the application will crash (Segfault) at runtime when enabling the VOIP plugin. This is because the VOIP depends on media-libs/opencv and when qt4 flag of opencv is enabled the VOIP (retroshare/extensions6/libVOIP.so) becomes linked both to QT4 and QT5 libs, so it segfaults:

LDD output with opencv +qt4 USE flag -> RetroShare segfaults when VOIP plugin is enabled:

$ ldd /usr/lib64/retroshare/extensions6/libVOIP.so|grep -i -e "qt\|openc"
        libopencv_core.so.2.4 => /usr/lib64/libopencv_core.so.2.4 (0x00007f7211ca9000)
        libopencv_highgui.so.2.4 => /usr/lib64/libopencv_highgui.so.2.4 (0x00007f7211a13000)
        libopencv_imgproc.so.2.4 => /usr/lib64/libopencv_imgproc.so.2.4 (0x00007f721156f000)
        libQt5Widgets.so.5 => /usr/lib64/libQt5Widgets.so.5 (0x00007f7210ab3000)
        libQt5Multimedia.so.5 => /usr/lib64/libQt5Multimedia.so.5 (0x00007f72109d1000)
        libQt5Gui.so.5 => /usr/lib64/libQt5Gui.so.5 (0x00007f721046f000)
        libQt5Core.so.5 => /usr/lib64/libQt5Core.so.5 (0x00007f720ff9d000)
        libQtOpenGL.so.4 => /usr/lib64/qt4/libQtOpenGL.so.4 (0x00007f720a4c8000)
        libQtGui.so.4 => /usr/lib64/qt4/libQtGui.so.4 (0x00007f72097e1000)
        libQtTest.so.4 => /usr/lib64/qt4/libQtTest.so.4 (0x00007f72095b9000)
        libQtCore.so.4 => /usr/lib64/qt4/libQtCore.so.4 (0x00007f72090cb000)
        libQt5Network.so.5 => /usr/lib64/libQt5Network.so.5 (0x00007f7208c36000)
        libopencore-amrwb.so.0 => /usr/lib64/libopencore-amrwb.so.0 (0x00007f7200194000)
        libopencore-amrnb.so.0 => /usr/lib64/libopencore-amrnb.so.0 (0x00007f71fff69000)


LDD output with opencv -qt4 USE flag -> RetroShare works when VOIP plugin is enabled:

$ ldd /usr/lib64/retroshare/extensions6/libVOIP.so|grep -i -e "qt\|openc"
        libopencv_core.so.2.4 => /usr/lib64/libopencv_core.so.2.4 (0x00007f50f6a2f000)
        libopencv_highgui.so.2.4 => /usr/lib64/libopencv_highgui.so.2.4 (0x00007f50f67d5000)
        libopencv_imgproc.so.2.4 => /usr/lib64/libopencv_imgproc.so.2.4 (0x00007f50f6331000)
        libQt5Widgets.so.5 => /usr/lib64/libQt5Widgets.so.5 (0x00007f50f5875000)
        libQt5Multimedia.so.5 => /usr/lib64/libQt5Multimedia.so.5 (0x00007f50f5793000)
        libQt5Gui.so.5 => /usr/lib64/libQt5Gui.so.5 (0x00007f50f5231000)
        libQt5Core.so.5 => /usr/lib64/libQt5Core.so.5 (0x00007f50f4d5f000)
        libQt5Network.so.5 => /usr/lib64/libQt5Network.so.5 (0x00007f50ee394000)
        libopencore-amrwb.so.0 => /usr/lib64/libopencore-amrwb.so.0 (0x00007f50e2a11000)
        libopencore-amrnb.so.0 => /usr/lib64/libopencore-amrnb.so.0 (0x00007f50e27e7000)


2. If voip USE flag is set, net-p2p/retroshare cannot be compiled with =media-libs/opencv-3.0.0 - still not supported upstream


Thus for fixing all these there are two possible ways:
1. Force when net-p2p/retroshare-0.6.0_rc2_pre8551 is +voip then the <media-libs/opencv-3.0.0 to be -qt4
2. Make the net-p2p/retroshare entirely use QT4. As far as I investigated the QT5 support is a new one, so may has some problems (I didn't had the time to test that). So maybe this approach is better than the above IMHO...

Besides no matter what approach would be selected since voip plugin cannot be compiled with media-libs/opencv-3.0.0, a dependency on version 2 OpenCV should be added....


I am uploading my QT4 solution, tested and working with VOIP enabled and all...

Thanks

Reproducible: Always

Steps to Reproduce:
When emerged net-p2p/retroshare-0.6.0_rc2_pre8551[voip] and media-libs/opencv[qt4] on runtime enabling the VOIP plugin of RetroShare segfaults
Comment 1 PhobosK 2015-07-28 14:13:37 UTC
Created attachment 407812 [details, diff]
retroshare-0.6.0_rc2_pre8551-r1.ebuild.patch

A proposed fix for the ebuild of =net-p2p/retroshare-0.6.0_rc2_pre8551 using QT4 instead of QT5.
Changelog:

1. Use QT4 instead of QT5, because of VOIP plugin incompetability
2. Add dependency on <media-libs/opencv-3.0.0 when voip USE is set
Comment 2 Sergey Popov gentoo-dev 2015-09-22 10:18:28 UTC
commit deec4416ebd76c8ffc84af138d9949269d8610c8
Author: Sergey Popov <pinkbyte@gentoo.org>
Date:   Tue Sep 22 13:14:54 2015 +0300

    net-p2p/retroshare: fix segfault in VOIP plugin, drop old version
    
    When OpenCV is built with Qt4 support, Retroshare VOIP plugin, that links to it
    causes segfault during application loading.
    
    Gentoo-Bug: 556132
    
    Package-Manager: portage-2.2.20