Building Tribler
This page contains instructions on how to build and package Tribler.
Windows
The most up-to-date information on building Tribler on Windows can be found here.
This section contains information about building Tribler on Windows. In the end you should be left with a .exe
file which, when opened, enables users to install Tribler on their system.
This guide installs a 64-bit version of Tribler and has been tested on Windows 10 and Windows 2008 Server R2, 64-bit. It is recommended to create this builder on a system that is already able to run Tribler from a git checkout (it means that all the required packages required by Tribler are installed already). In case you want to build a 32 bit version, just install all the dependencies mentioned in 32 bit version.
Information about setting up a developer environment on Windows can be found here.
When you have installed zope, an empty __init__.py
file must be present in the zope folder. If this file is missing, a No module named zope
error will be thrown. Create this file in the site-packages/zope
folder if it does not exist.
Required packages
To build a Tribler installer, you’ll need some additional scripts and packages. The versions used as of writing this guide are mentioned next to the package or script.
* The git command tools (version 2.7.0) are required to fetch the latest release information. These can be downloaded from here.
* PyInstaller, a tool to create an executable from python files. Install the latest version from pip: pip install pyinstaller
.
* The builder needs to find all packages that are required by Tribler so make sure you can run Tribler on your machine and that there are no missing dependencies.
* Nullsoft Scriptable Install System (NSIS) (version 2.5.0) is a script-driven Installer authoring tool for Microsoft Windows with minimal overhead. It can be downloaded here. We selected version 2.5 as the uninstall functions were not called properly in 3.03b.
* Three plugins are required.The UAC plugin is the first. This can be downloaded from here (version 0.2.4c). How to install a plugin can be found here.
* The second plugin that is needed is AccessControl plug-in (version 1.0.8.1). It can be downloaded here.
* The third plugin required is NSIS Simple Firewall Plugin (version 1.2.0). You can download it here.
* The fourth plugin needed is NSProcess (Version 1.6.7), which can be downloaded here.
* A version of Microsoft Visual Studio should be installed (we use 2012), but make sure you do not have the build-tools only. The full (community) edition can be downloaded here.
Building & Packaging Tribler
Start by cloning Tribler if you haven’t done already (using the git clone
command).
Next, create a build
folder directly on your C:\
drive.
Inside the build
folder, put the following items:
A folder
certs
containing a.pfx
key. In our case it’s namedswarmplayerprivatekey.pfx
. Make sure to rename paths inmakedist_win.bat
to match your file name.vc_redist_110.exe
(Visual C++ Redistributable for Visual Studio 2012), which is available here. In case you build 32 bit, get the x86 version. Once more, don’t forget to rename the file.libsodium.dll
which can be downloaded from libsodium.org (as of writing version 1.0.8).The openssl dll files
libeay32.dll
,libssl32.dll
andssleay32.dll
(place them in a directory namedopenssl
).
Then:
Set a
PASSWORD
environment variable with its value set to the password matching the one set in your.pfx
file.Create the
.TriblerVersion
file with the result of execution of the following command:git describe | python -c "import sys; print(next(sys.stdin).lstrip('v'))"
Create the
.TriblerCommit
file with the result of execution of the following command:git rev-parse HEAD
Set the
TRIBLER_VERSION
environment variable with the content of the.TriblerVersion
file.Set the
QT_QPA_PLATFORM=offscreen
environment variableSet the
QT_ACCESSIBILITY=1
environment variableSet the
QT_IM_MODULE=ibus
environment variable
Finally, open a command prompt and enter the following commands (Change 11.0 depending on your version of Microsoft Visual Studio):
Note that for building 32 bit you need to pass anything but 64, i.e. 32 or 86 to the update_version.py
script.
This builds an .exe
installer which installs Tribler.
MacOS
The most up-to-date information on building Tribler on macOS can be found here.
This guide explains how to build Tribler on MacOS (10.10 to 10.13). The final result is a .dmg
file which, when opened, allows Tribler.app
to be copied to the Applications directory and or launched. Make sure the required packages required by Tribler are installed
from the Development instructions.
Building Tribler on macOS
Start by checking out the directory you want to clone (using git clone
). Open a terminal and cd
to this new cloned directory (referenced to as tribler_source
in this guide).
Next, we should inject version information into the files about the latest release:
git describe | python -c "import sys; print(next(sys.stdin).lstrip('v'))" > .TriblerVersion
git rev-parse HEAD > .TriblerCommit
python3 ./build/update_version.py -r .
Now execute the builder with the following command:
python3 -m pip install -r requirements-build.txt
export QT_QPA_PLATFORM=offscreen
export QT_ACCESSIBILITY=1
export QT_IM_MODULE=ibus
export "TRIBLER_VERSION=$(head -n 1 .TriblerVersion)"
build/mac/makedist_macos.sh
This will create the .dmg
file in the tribler_source/dist
directory.
Debian and derivatives
The most up-to-date information on building Tribler on Ubuntu can be found here.
Run the following commands in your terminal (assuming you are in the Tribler’s repository root folder):
sudo apt-get update
sudo apt-get -y install debhelper devscripts libxcb-xinerama0-dev libqt5x11extras5
python3 -m pip install -r requirements-build.txt
git describe | python -c "import sys; print(next(sys.stdin).lstrip('v'))" > .TriblerVersion
git rev-parse HEAD > .TriblerCommit
export QT_QPA_PLATFORM=offscreen
export QT_ACCESSIBILITY=1
export QT_IM_MODULE=ibus
export "TRIBLER_VERSION=$(head -n 1 .TriblerVersion)"
./build/debian/makedist_debian.sh
This will build a tribler.deb
file, including all dependencies and required libraries.
Other Unixes
We don’t have a generic setup.py yet.
So for the time being, the easiest way to package Tribler is to put Tribler/
in /usr/share/tribler/
and debian/bin/tribler
in /usr/bin/
. A good reference for the dependency list is debian/control
.