UnixCompile

From RetroShare
Jump to: navigation, search

This documents how to compile the latest sources from Retroshare subversion repository on Linux.

Contents

Dependancies

First, you need to install the packages needed for compiling RetroShare.

Debian/Ubuntu/Raspbian

sudo apt-get install g++ libgnome-keyring-dev libqt4-dev libxss-dev libssl-dev \
libupnp-dev subversion libbz2-dev libprotobuf-dev protobuf-compiler cmake libsqlite3-dev

If you just want to build retroshare-gui, you won't need "libprotobuf-dev", "protobuf-compiler", "cmake" and "libbz2-dev".

If you want to compile the VOIP plugin, you will need to also install qtmobility-dev as:

sudo apt-get install qtmobility-dev

Arch Linux

pacman -S pkg-config subversion openssl libupnp libgnome-keyring libxss qt4 protobuf cmake
  • bzip2 is in the "base" package, and thus should be installed already.
  • pkg-config is in "base-devel" and is likely to be installed, too. (Using the Raspberry-Pi-Arch-Image it seems to be necessary to install it.)
  • If you just want to build retroshare-gui, you won't need "protobuf" and "cmake".

Build Retroshare

Note: In the this section, you can use another directory instead of ~, too.

Note: The -j parameter to make is the number of cores used, and should be changed accordingly to fasten compilation.

Obtain latest retroshare sources from SVN

cd ~/
svn co svn://svn.code.sf.net/p/retroshare/code/trunk retroshare

You can keep the checked-out source code up-to-date by running

svn up

then.

Build

Note: replace the "qmake" command with "qmake-qt4" on Arch Linux, Debian (and maybe other distros).

Note: The make -j[number] makes the compiler use more cores. If you have more than 2 cores, change to the appropriate number.

retroshare-gui

cd ~/retroshare/libbitdht/src && qmake && make clean && make -j2
cd ~/retroshare/openpgpsdk/src && qmake && make clean && make -j2
cd ~/retroshare/libretroshare/src && qmake && make clean && make -j2
cd ~/retroshare/retroshare-gui/src && qmake && make clean && make -j2

retroshare-nogui

retroshare-nogui depends on the libssh library 0.5.4, which is used for the RPC via SSH protocol.

If your distribution already provides the current libssh version, you can install the libssh-dev package from your distribution, otherwise, you need to download and build this library yourself:

cd ~
mkdir lib/ && cd lib/
wget https://red.libssh.org/attachments/download/41/libssh-0.5.4.tar.gz
tar zxvf libssh-0.5.4.tar.gz
cd libssh-0.5.4/
mkdir build/ && cd build/
cmake -DWITH_STATIC_LIB=ON ..
make -j2

Now you can build retroshare-nogui:

cd ~/retroshare/rsctrl/src && make -j2
cd ~/retroshare/retroshare-nogui/src && qmake && make clean && make -j2 

Run

Run retroshare-nogui

~/retroshare/retroshare-nogui/src/retroshare-nogui

Run retroshare-gui

~/retroshare/retroshare-gui/src/RetroShare

Additional Plugins

Please note that after compiling, you must copy the .so. files into you ~/.retroshare/extensions folder, enable them in RetroShare, and then restart RetroShare.

You should recompile them after every update to a new release.

VOIP

You will find this plugin in
~/retroshare/plugins/VOIP

Call qmake and make.

The qtmobility library is needed on Debian.

FeedReader

This plugin allows news feeds into Retroshare. You can keep them as local for yourself, or feed through to a forum to share with others.

You will find this plugin in
~/retroshare/plugins/FeedReader

Call qmake and make.

LinksCloud

This plugin allows sharing of web links.

You will find this plugin in
~/retroshare/plugins/LinksCloud

Call qmake and make.

GXS related

The information in this section is how to compile retroshare-gui with the new experimental GXS cache system. As librarys/dependancies may change, the instructions here may change a lot and may be incomplete.

additional dependancies

You will need libsqlite3 (should be included in your distro) and the sqlcipher extension library.

building sqlcipher

You will need sqlcipher library for encrypting the gxs local storage. Using the same directory structure as above:

cd ~/lib/
git clone https://github.com/sqlcipher/sqlcipher.git
cd sqlcipher/
./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"
make -j2

If it doesn't work, try changing the linker flags to LDFLAGS="/usr/lib/libcrypto.a" (change the path to the location of "libcrypto.a" on your distribution).

building pegmarkdown

cd ~/retroshare/supportlibs/pegmarkdown && qmake && make clean && make -j2

enable gxs in *.pro files

Uncomment the line

#config += gxs debug

in both "~/retroshare/libretroshare/src/libretroshare.pro" and "~/retroshare/retroshare-gui/src/retroshare-gui.pro". Then do a CLEAN build, if you had not enabled gxs before.

Personal tools
Namespaces

Variants
Actions
Navigation
External websites
Wiki
Toolbox