installing scribus-trunk daily build on Ubuntu 14.04 .. plugin xcb not found

Previous topic - Next topic

dragonfly

I'm returning to this forum after a long period of not using Scribus.

I have Scribus Version 1.4.3.svn installed on Ubuntu 14.04 32 bit .. although I have not used Scribus for some time.

I thought I would update to scribus-trunk (version 1.5) and I added PPA to install daily build.

So I have two versions of Scribus installed.

When I try to launch /usr/bin/scribus-trunk .. scribus crashes.

I get a clue by running command .. scribus-trunk --version

scribus-trunk --version
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Reinstalling the application may fix this problem.
Aborted (core dumped)


I searched around and read these posts ..

http://stackoverflow.com/questions/17106315/failed-to-load-platform-plugin-xcb-while-launching-qt5-app-on-linux-without

https://lemirep.wordpress.com/2013/06/01/deploying-qt-applications-on-linux-and-windows-3/

Now quite separately I am trying out different versions of Qt5 and currently I have Qt 5.5.1 installed in /opt/qt55 .. not the usual location.

After reading the second post above I added these vars to ~/.profile

export LD_LIBRARY_PATH="/opt/qt55/lib":${LD_LIBRARY_PATH}
export QML_IMPORT_PATH="/opt/qt55/qml"
export QML2_IMPORT_PATH="/opt/qt55/qml"
export QT_QPA_PLATFORM_PLUGIN_PATH="/opt/qt55/plugins/platforms" 


and rebooted.

But I'm stilll missing the xcb plugin and scribus-trunk still crashes.

Scribus 1.4.3 svn continues to launch without problems.

Can you advise on installing scribus-trunk daily build alongside scribus 1.4.3 on Ubuntu 14.04?

dragonfly

Researching here ...

https://forum.qt.io/topic/38094/solved-qt5-2-1-platform-issue-on-deployment-could-not-find-xcb-plugin-linux/13

I believe that scribus-trunk is looking for
/opt/qt55/plugins/platforms/libqxcb.so

So how do I get scribus-trunk to find libqxcb.so

I've tried setting LD_LIBRARY_PATH but no joy ...

echo $LD_LIBRARY_PATH
/opt/qt55/plugins/platforms:/opt/qt55/lib:/usr/lib/i386-linux-gnu/:/usr/lib/

[later edit]
Jump to final post to see why the above LD_LIBRARY_PATH is incorrect.


dragonfly

I'm still stuck on this issue ..

Can you clarify what versions of Qt 5 are used to build scribus-ng and scribus-trunk?

a.l.e

hey

can you give us your parameters to the cmake command?

if you have a self compiled qt,  you have to set the path to it both when compiling scribus and when running it...

all in all, you'd better use a version of ubuntu where you can compile scribus without having to compile your copy of qt...


dragonfly

Thanks for responding.

I was hoping to avoid compiling scribus-ng and scribus-trunk and instead to simply install them (from PPA) via
    sudo apt-get install scribus-ng
    sudo apt-get install scribus-trunk

as I did to get scribus 1.4 to work in Ubuntu 14.04 (32 bit). 
So I have no cmake parameters to show you.
I have never built scribus from source.   I hoped to just install latest binaries from PPA repo.

In fact in /user/bin/ I now have these three binaries ...
     scribus           11.8 MiB
     scribus-ng      17.2 MiB
     scribus-trunk  20.1 MiB

If I run commands .. ldd scribus-ng .. or .. ldd scribus-trunk .. I see no dependency errors (but equally I see no references to Qt path /opt/qt55).

If I try to launch scribus-ng (with QT_DEBUG_PLUGINS=1 scribus-ng) I see this error ...

In /opt/qt55/plugins/platforms/libqxcb.so:
  Plugin uses incompatible Qt library (5.5.1) [release]
"The plugin '/opt/qt55/plugins/platforms/libqxcb.so' uses incompatible Qt library. (5.5.1) [release]"
         not a plugin

I have cleared all attempts to set env vars through ~/.profile.

I can provide more detailed diagnostics if it helps to answer this.

Is the conclusion that I must now compile scribus-ng / scribus-trunk source to work with Qt 5.5.1 paths?

a.l.e

mmm... i guess you're running too fast. :-)

next question: why do you have a custom qt5?

ciao
a.l.e

dragonfly


Quotenext question: why do you have a custom qt5?

This is a long story of development experiments ...

Quite separately from Scribus I wanted to experiment with Qt 5.* + Python bindings (PyQt) for app development (aiming at desktop initially). Previously I had Qt 4 on Ubuntu.   I now have Qt 5.5.1 + PyQt + eric6 IDE working.

I also wanted to install latest Scribus for project documentation although I have Scribus 1.4.3 svn installed..

I have the Qt packages as listed here ..

http://askubuntu.com/questions/508503/whats-the-development-package-for-qt5-in-14-04

But .. the Ubuntu 14.04 repo stops at Qt 5.2.1.

The reason I opted for installing Qt 5.5.1 is the eric6 IDE dependency

While attempting to install latest eric6 IDE, with earlier version of Qt installed,  I encountered this error ..
"Sorry, you must have Qt version 4.8.0 or better or 5.3.0 or better".

So I decided to uninstall Qt 4 and upgrade (manually) to Qt 5.5.1 and then install latest PyQt snapshot and eric6 IDE. 

I purged all older Qt versions and now have Qt 5.5 Creator working as before. Qt 5.5.1 examples work.  PyQt works. eric6 IDE works.

...

Then I attempted to install Scribus-ng/Scribus-trunk and hit the 'xcb' plugin roadblock as reported earlier.

...

My latest attempt to correct this is to place a qt.conf file in same folder as scribus executables (/usr/bin).

Contents ..

[Paths]
Prefix= ../../opt/qt55
Translations=i18n
Libraries=lib
Plugins=plugins


But that didn't help.   same plugin error seen.

...

The confusing point is that scribus wiki
http://wiki.scribus.net/canvas/Building_SVN_versions_with_CMake#Version_1.5.x
reads ... dependency .. Qt (version >= 5.2; see below for details)

If I were to now try purging Qt 5.5.1 what earlier version of Qt would work with scribus-ng (the binary)?

Thanks again.

a.l.e

what about upgrading your ubuntu?

if you're not bound to that version of ubuntu, it's probably the better choice, if you want to try out the newest version of scribus and eric...

dragonfly

Upgrade what?   Ubuntu 14.04, Qt or Scribus?   There is plenty of life left in 14.04 LTS.

What I did try today was installing a second (earlier) version of Qt .. in fact Qt 5.3.2 ..
and adding path /opt/Qt5.3.2/5.3/gcc/bin to $PATH and to qt.conf.

Quoteqmake -v
QMake version 3.0
Using Qt version 5.3.2 in /opt/Qt5.3.2/5.3/gcc/lib

Then I ran .. QT_DEBUG_PLUGINS=1 scribus-ng

and the debug output was similar to previous reports ...

QuoteIn /opt/Qt5.3.2/5.3/gcc/plugins/platforms/libqxcb.so:
  Plugin uses incompatible Qt library (5.3.2) [release]
"The plugin '/opt/Qt5.3.2/5.3/gcc/plugins/platforms/libqxcb.so' uses incompatible Qt library. (5.3.2) [release]"
         not a plugin
QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/platforms" ...
This application failed to start because it could not find or load the Qt platform plugin "xcb".

But clearly the reference to path "/usr/bin/platforms" is an error (this path doesn't exist in /usr/bin). 
Is Scribus searching for /plugins/platforms/?

...

Please answer my earlier question.
What version of Qt was used to build scribus-ng and scribus-trunk? 
What Qt library is "compatible"?
I will then try to launch scribus-ng in that same environment used by Scribus build team.

...

I don't have these problems with other apps, some more demanding in resources than Scribus.

dragonfly

Problem resolved.

After much trial and error I hit on the combination to get scribus-ng and scribus-trunk to launch without the xcb plugin error.

(1) Place qt.conf file in same folder as scribus-ng and scribus-trunk executables (/usr/bin/qt.conf).

qt.conf ... settings for Qt 5.5.1 path ...

[Paths]
Prefix= ../../opt/qt55
Translations=i18n
Libraries=lib
Plugins=plugins


(2) Set environment variables in ~/.profile then reboot


export PATH="/opt/qt55/bin":$PATH
export LD_LIBRARY_PATH="/opt/qt55/lib":${LD_LIBRARY_PATH}


This works for the two different versions of Qt I installed (the paths have to be amended if default Qt version is changed).

e.g. Earlier version of Qt 5.3.2 required these settings
in ~/.profile ...
export PATH="/opt/Qt5.3.2/5.3/gcc/bin":$PATH
export LD_LIBRARY_PATH="/opt/Qt5.3.2/5.3/gcc/lib":${LD_LIBRARY_PATH}

and in qt.conf ...
Prefix= ../../opt/Qt5.3.2/5.3/gcc

Note that in qt.conf the Prefix var defining path to Qt is relative to the folder (/usr/bin) where qt.conf is placed.
Read more here on using qt.conf ... http://doc.qt.io/qt-5/qt-conf.html


These vars could be setup in a bash script.