-
Notifications
You must be signed in to change notification settings - Fork 1
SEMPR with Qt5
The only part restricting the version of qt (and which originally introduced qt to sempr) is the RDF stuff, namely soprano. Soprano 2.9.4 (latest release, quite a few years old) relies on qt4, but on the kde-repo a commit exists that should enable compilation with qt5.
First, make sure that you remove all occurrences of soprano from your system.
sudo apt-get remove soprano-daemon libsoprano4
Check that you have installed qt5:
pkg-config --libs Qt5Core
If not, install qt5.
To also compile the redland-backend with qt5, you need the librdf0-dev
package. This provides the necessary development files. One problem with installing this through apt-get, though, is that libraptor2-dev
depends on libcurl4-gnutls-dev
, which conflicts with libcurl4-openssl-dev
and thus will uninstall e.g. ROS....
There are 2 possibilities:
-
You don't need ROS / don't need
libcurl4-openssl-dev
. In that case, just dosudo apt-get install librdf0-dev
and let it handle all the dependencies, which will includelibcurl4-gnutls-dev
. -
You need ROS / or at least
libcurl4-openssl-dev
. In that case, do the following:-
Download
libraptor2-dev
:apt-get download libraptor2-dev
-
Install it through dpkg, ignoring the
libcurl4-gnutls-dev
-dependency:sudo dpkg --ignore-depends=libcurl4-gnutls-dev -i libraptor2-dev_2.0.14-1_amd64.deb
-
This might tell you that other dependencies are not fulfilled. In my case, this was:
dpkg: dependency problems prevent configuration of libraptor2-dev: libraptor2-dev depends on libxslt1-dev (>= 1.0.18); however: Package libxslt1-dev is not installed. libraptor2-dev depends on libyajl-dev; however: Package libyajl-dev is not installed.
So, go ahead and install them. But
sudo apt-get install ...
will complain aboutlibraptor2-dev
, so you will want to remove it again, e.g. usingsudo apt-get install -f
.# install missing deps -- see output of dpkg sudo apt-get install libxslt1-dev libyajl-dev # will fail due to "broken" packages sudo apt-get install -f # removes libraptor2-dev sudo apt-get install libxslt1-dev libyajl-dev # will now work
And again, install
libraptor2-dev
:sudo dpkg --ignore-depends=libcurl4-gnutls-dev -i libraptor2-dev_2.0.14-1_amd64.deb
This should now succeed. However, since the dependency was just ignored, apt-get will now complain about this broken package and refuse to install anything else before fixing this. Sadly, there is not
--shut-up-and-install
-option in apt-get. So we need to trick it into thinking that it was installed correctly and everything is fine, in the next step. -
How to trick apt-get? We are going to change the dependencies of the installed libraptor2-dev package from
...-gnutls-dev
to...-openssl-dev
, since that is what ROS uses and conflicts here. Is this "ok"? Certainly not. It's hacky. It's bad. Let's proceed anyway, because: We only do this to compile soprano once. Feel free to revert everything after we are done.sudo apt-get remove libraptor2-dev
will remove all this hacky stuff, and it's okay, since we only need it to compile soprano. At runtime we will only needlibraptor2-0
, which is no problem at all.So, to trick apt-get into thinking everything's okay:
sudo vim /var/lib/dpkg/status # find this entry: [...] Package: libraptor2-dev Status: install ok installed Priority: optional Section: libdevel Installed-Size: 898 Maintainer: Ubuntu Developers <[email protected]> Architecture: amd64 Source: raptor2 Version: 2.0.14-1 Depends: libraptor2-0 (= 2.0.14-1), libxml2-dev (>= 2.5.10), libcurl4-gnutls-dev, libxslt1-dev (>= 1.0.18), pkg-config, libyajl-dev [...] # and modify the "Depends:" part: # from "libcurl4-gnutls-dev" to "libcurl4-openssl-dev". or delete it altogether, whatever.
-
No you can install all the redland-dev-stuff:
sudo apt-get install librdf0-dev
-
Remember that you may want to clean this mess up (remove libraptor2-dev) after you finished installing soprano.
-
Afterwards, clone the soprano repository which is patched for qt5-support, build and install it.
(Patched with qt5-plugin export makros and pkgconfig file. FYI: The export patch is written by Denis Kuplyakov and originally posted on the soprano mailing list.)
mkdir soprano_qt5 && cd soprano_qt5
mkdir install
git clone https://github.com/sempr-tk/soprano_qt5.git
cd soprano
# compile with qt5
mkdir build && cd build
cmake .. -DQT5_BUILD=true -DCMAKE_INSTALL_PREFIX=~/soprano_qt5/install
make -j8 install
# add install dir to pkg-config path
# (e.g. in .bashrc)
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:~/soprano_qt5/install/lib/pkgconfig
# make sure the correct version of soprano is found
pkg-config --libs soprano # search for -lQt5Core
Now, if you hacked your way around the libcurl4-[gnutls|openssl]-dev
problem you might want to do sudo apt-get remove libraptor2-dev
since we don't need the hacked-in packed anymore.
Congratulations, you now have soprano with qt5-support. If you now do a fresh build of sempr it will use qt5, too.