Build Quassel on Linux (english) » History » Version 20
powerjungle, 01/12/2021 11:41 PM
| 1 | 1 | musca | h1. Build Quassel on Linux |
|---|---|---|---|
| 2 | 1 | musca | |
| 3 | 1 | musca | Step-by-step guide to compile the project utilizing the the classic toolchain in a terminal |
| 4 | 1 | musca | |
| 5 | 1 | musca | {{toc}} |
| 6 | 1 | musca | |
| 7 | 1 | musca | h2. Preparation of the build system |
| 8 | 1 | musca | |
| 9 | 1 | musca | The build process needs |
| 10 | 1 | musca | - the compiler and some tools like a linker, cmake, make |
| 11 | 17 | Avamander | - the development libraries for KDE5, QT5, OpenSSL and zlib |
| 12 | 1 | musca | - and git to manage the Quassel sourcecode |
| 13 | 1 | musca | |
| 14 | 17 | Avamander | Under DEBIAN GNU/Linux Buster (10) the needed packages are installed as follows (execute as root): |
| 15 | 20 | powerjungle | <pre><code># apt-get update && apt-get install build-essential cmake extra-cmake-modules qtbase5-dev zlib1g-dev libqca-qt5-2-dev libboost-all-dev libqt5sql5-psql libkf5configwidgets-dev libkf5notifications-dev libkf5notifyconfig-dev gettext</code></pre> |
| 16 | 13 | musca | |
| 17 | 12 | musca | (please insert commands for other distributions here) |
| 18 | 13 | musca | |
| 19 | 1 | musca | |
| 20 | 1 | musca | h2. Managing the sourcecode |
| 21 | 1 | musca | |
| 22 | 1 | musca | This task is done utilizing "git":http://en.wikipedia.org/wiki/Git_(software) while being logged in as a normal user. |
| 23 | 1 | musca | The sourcecode is downloaded with 'git clone $URL' and stored in the directory ~/quassel. |
| 24 | 16 | sandsmark | <pre><code>$ cd ~ && git clone https://github.com/quassel/quassel.git</code></pre> |
| 25 | 1 | musca | |
| 26 | 1 | musca | The development of Quassel is an ongoing process, so from time to time you want |
| 27 | 1 | musca | to update to the latest contributions with 'git pull origin' . |
| 28 | 1 | musca | |
| 29 | 7 | musca | <pre><code>$ cd ~/quassel && git pull origin</code></pre> |
| 30 | 1 | musca | |
| 31 | 1 | musca | |
| 32 | 2 | musca | h2. Compile! |
| 33 | 1 | musca | |
| 34 | 1 | musca | After updating the sourcecode one can generate a new build. |
| 35 | 1 | musca | Every build is done in its own directory enabling |
| 36 | 1 | musca | the return to the old build directory in the case of defeat. |
| 37 | 10 | musca | <pre><code>$ cd quassel |
| 38 | 1 | musca | $ mkdir build |
| 39 | 8 | musca | </code></pre> |
| 40 | 1 | musca | |
| 41 | 1 | musca | In the build directory the command 'cmake' generates the make-files (i.e. a dependency map for the compiler). |
| 42 | 15 | Anonymous | The options of cmake are described in the file ~/quassel/INSTALL in your source directory. Note: LINGUAS is an environment variable, not a cmake variable. You can optionally export it before running cmake. |
| 43 | 10 | musca | <pre><code>$ cd ~/quassel/build |
| 44 | 15 | Anonymous | $ LINGUAS="de en_US" cmake ~/quassel -DWANT_CORE=ON -DWANT_QTCLIENT=ON -DWANT_MONO=ON -DWITH_KDE=ON -DWITH_OPENSSL=ON -DWITH_DBUS=ON -DWITH_PHONON=ON -DWITH_WEBKIT=ON |
| 45 | 8 | musca | </code></pre> |
| 46 | 1 | musca | |
| 47 | 1 | musca | Now the command 'make' generates the calls for the compiler |
| 48 | 8 | musca | <pre><code>$ make </code></pre> |
| 49 | 1 | musca | |
| 50 | 1 | musca | h2. Install with checkinstall |
| 51 | 1 | musca | |
| 52 | 1 | musca | It is wise to prefer the default packagemanager of your system rather doing a 'make install'. |
| 53 | 1 | musca | The installation will be done as root with checkinstall. |
| 54 | 1 | musca | checkinstall generates a package (deb, rpm or tgz) for your packagemanager (apt, rpm or installpkg), |
| 55 | 1 | musca | that can later be removed easily and leaves a clean system. |
| 56 | 1 | musca | checkinstall has options for several distributions: -D for Debian, -R for RPM, -S for Slackware. |
| 57 | 1 | musca | When installing the package it asks interactive two questions, as shown in the following example: |
| 58 | 1 | musca | |
| 59 | 1 | musca | example: |
| 60 | 8 | musca | <pre><code>/home/user/quassel/build/# checkinstall -D --pkgname quassel-all --pkgversion 0.5.0 --pkgrelease $(date +%y%m%d%H%M%S) make install</code></pre> |
| 61 | 1 | musca | Output: |
| 62 | 1 | musca | Please enter a description of the package. |
| 63 | 1 | musca | Finish your description with an empty line or EOF. |
| 64 | 1 | musca | |
| 65 | 1 | musca | Input: |
| 66 | 1 | musca | >> [quassel-all contains quassel-core, quassel-client and quassel (mono).] |
| 67 | 1 | musca | >> [enter] |
| 68 | 1 | musca | |
| 69 | 1 | musca | Output: |
| 70 | 1 | musca | Das Paket wird entsprechend dieser Vorgaben erstellt: |
| 71 | 10 | musca | 0 - Maintainer: [ your.name@somedomain.test ] |
| 72 | 1 | musca | 1 - Summary: [ quassel-all contains core, client und quassel (mono). ] |
| 73 | 1 | musca | 2 - Name: [ quassel-all ] |
| 74 | 1 | musca | 3 - Version: [ 0.5.0 ] |
| 75 | 1 | musca | 4 - Release: [ 091021181559 ] |
| 76 | 1 | musca | 5 - License: [ GPL ] |
| 77 | 1 | musca | 6 - Group: [ checkinstall ] |
| 78 | 1 | musca | 7 - Architecture: [ i386 ] |
| 79 | 1 | musca | 8 - Source location: [ build_091021181559 ] |
| 80 | 1 | musca | 9 - Alternate source location: [ ] |
| 81 | 1 | musca | 10 - Requires: [ ] |
| 82 | 1 | musca | 11 - Provides: [ quassel-all ] |
| 83 | 1 | musca | |
| 84 | 1 | musca | Input: |
| 85 | 1 | musca | [ just press [enter] to proceed generating the package] |
| 86 | 1 | musca | |
| 87 | 5 | musca | The result: Quassel is installed. (here for Debian): |
| 88 | 11 | musca | <pre><code> Done. The new package has been installed and saved to |
| 89 | 1 | musca | |
| 90 | 1 | musca | /home/$(user)/quassel/build/quassel-all_0.5.0-091021103522_i386.deb |
| 91 | 1 | musca | |
| 92 | 1 | musca | You can remove it from your system anytime using: |
| 93 | 1 | musca | |
| 94 | 1 | musca | dpkg -r quassel-all |
| 95 | 5 | musca | </code></pre> |
| 96 | 1 | musca | |
| 97 | 3 | musca | |
| 98 | 1 | musca | |
| 99 | 1 | musca | h2. Draft of a buildscript |
| 100 | 1 | musca | |
| 101 | 2 | musca | The repeating tasks of updating and compiling is done in the following buildscript: |
| 102 | 9 | musca | <pre><code>#!/usr/bin/bash |
| 103 | 1 | musca | # quick quassel buildscript (draft) |
| 104 | 1 | musca | # |
| 105 | 1 | musca | # initialize your local git-repository once with this command |
| 106 | 16 | sandsmark | # cd ~ && git clone https://github.com/quassel/quassel.git ~/quassel |
| 107 | 1 | musca | # |
| 108 | 1 | musca | # updating latest contributions: |
| 109 | 1 | musca | cd ~/quassel |
| 110 | 1 | musca | git pull origin |
| 111 | 1 | musca | # |
| 112 | 1 | musca | # make a new build directory with a suffix containing the date |
| 113 | 1 | musca | export date=$(date +%y%m%d%H%M%S) |
| 114 | 1 | musca | mkdir build_$date |
| 115 | 1 | musca | # |
| 116 | 1 | musca | # cmake: Optionen siehe ~/quassel/INSTALL |
| 117 | 1 | musca | cd build_$date |
| 118 | 11 | musca | cmake ~/quassel -DWANT_CORE=ON -DWANT_QTCLIENT=ON -DWANT_MONO=ON -DWITH_KDE=ON -DWITH_OPENSSL=ON -DWITH_DBUS=ON -DWITH_PHONON=ON -DWITH_WEBKIT=OFF -DLINGUAS="de en_US" |
| 119 | 1 | musca | make |
| 120 | 1 | musca | # |
| 121 | 1 | musca | # avoid the classic 'make install', prefer generating a package with checkinstall |
| 122 | 1 | musca | echo please execute as root via copy & paste in the directory ~/quassel/build_$date |
| 123 | 1 | musca | echo first to remove old package: dpkg -r quassel-all |
| 124 | 1 | musca | echo then to install new package: checkinstall -D --pkgname quassel-all --pkgversion 0.5.0 --pkgrelease $date make install |
| 125 | 4 | musca | </code></pre> |