Linux/fr: Difference between revisions

From RawPedia
Jump to navigation Jump to search
mNo edit summary
(Style updated)
 
(42 intermediate revisions by the same user not shown)
Line 1: Line 1:
<span style="color: #000000; background: none; overflow: hidden; page-break-after: avoid; font-size: 2.0em; font-family: Georgia,Times,serif; margin-top: 1em; margin-bottom: 0.25em; line-height: 1.3; padding: 0; border-bottom: 1px solid #AAAAAA;">Linux</span>
<div class="pagetitle">Linux</div>


Cette page détaille les instructions pour compiler RawTherapee dans les systèmes '''GNU/Linux'''. Vous trouverez aussi des instructions pour la compilation dans [[Windows/fr|Windows]] et [[OS X/fr|OS X]].
Cette page détaille les instructions pour compiler RawTherapee dans les systèmes '''GNU/Linux'''. Vous trouverez aussi des instructions pour la compilation dans [[Windows/fr|Windows]] et [[MacOS/fr|MacOS]].


En cas de doute, [[IRC/fr | Joigniez  nous sur IRC]] et demandez à un humain !
En cas de doute, [[IRC/fr | Joigniez  nous sur IRC]] ou sur le [[Forum/fr|Forum]] et demandez à un humain !


== Dépendances ==
== Dépendances ==
Pour compiler RawTherapee votre système nécessite un jeu d'outils, appelés dépendances, en voici la liste pour les deux versions de RawTherapee GTK2 et GTK3
Pour compiler RawTherapee votre système nécessite un jeu d'outils et des bibliothèques venues d'autres programmes. Ils sont appelés dépendances, en voici la liste pour la dernière version de RawTherapee.


{| class="wikitable sortable"
{| class="wikitable sortable"
|+ Tableau des dépendances pour RawTherapee 4 et 5.0
|+ Dépendances pour RawTherapee:
! GTK+      !! Paquetage     !! Version            !! Gentoo                !! Debian/Ubuntu        !! URL
! Package     !! Version            !! URL
|-
|-
| GTK2, GTK3 || BZIP2       || bzip2>-1.0.4       || app-arch/bzip2        || libbz2-dev          || http://www.bzip.org/
| CMake       || cmake>=3.5       || https://cmake.org/
|-
|-
| GTK2, GTK3 || EXIV2        || exiv2>=0.19        || media-gfx/exiv2        || libexiv2-dev        || http://www.exiv2.org/
| EXIV2        || exiv2>=0.19        || http://www.exiv2.org/
|-
|-
| GTK2, GTK3 || EXPAT        || expat>=2.1.0      || dev-libs/expat        || libexpat-dev        || http://expat.sourceforge.net/
| EXPAT        || expat>=2.1.0      || https://libexpat.github.io/
|-
|-
| GTK2, GTK3 || FFTW3        || fftw>=3.2.2        || sci-libs/fftw          || fftw-dev            || http://fftw.org/
| FFTW3        || fftw>=3.2.2        || http://fftw.org/
|-
|-
| GTK2, GTK3 || GCC          || gcc>=4.9          || sys-devel/gcc          || build-essential      || http://gcc.gnu.org/
| GCC          || gcc>=4.9          || https://gcc.gnu.org/
|-
|-
| GTK2, GTK3 || GLIB2        || glib-2.0>=2.24    || dev-libs/glib          || libglib2.0-dev      || http://www.gtk.org/
| GLIB2        || glib-2.0>=2.24    || https://www.gtk.org/
|-
|-
| GTK2, GTK3 || GLIBMM      || glibmm-2.4>=2.24  || dev-cpp/glibmm        || libglibmm-2.4-dev    || http://www.gtkmm.org
| GLIBMM      || glibmm-2.4>=2.24  || https://www.gtkmm.org/
|-
|-
| GTK2      || GTK+        || gtk+-2.0>=2.24.18  || x11-libs/gtk+          || libgtk2.0-dev        || http://www.gtk.org/
| GTK+        || gtk+-3.16 < 3.24.0 || https://www.gtk.org/
|-
|-
|       GTK3 || GTK+        || gtk+-3.16         || x11-libs/gtk+          || libgtk-3-dev         || http://www.gtk.org/
| GTKMM        || gtkmm-3.16        || https://www.gtkmm.org/
|-
|-
| GTK2      || GTK2-Engines || gtk-engines-2.20.2 || x11-themes/gtk-engines || gtk2-engines        || http://www.gtk.org/
| JPEG        || libjpeg>=6b        || https://libjpeg-turbo.org/ https://jpegclub.org/ https://www.ijg.org/
|-
|-
| GTK2      || GTKMM       || gtkmm-2.4>=2.22    || dev-cpp/gtkmm         || libgtkmm-2.4-dev    || http://www.gtkmm.org
| LCMS2       || lcms>=2.6         || http://www.littlecms.com/
|-
|-
|       GTK3 || GTKMM        || gtkmm-3.16        || dev-cpp/gtkmm          || libgtkmm-3.0-dev    || http://www.gtkmm.org
| LENSFUN      || lensfun>=0.2      || http://lensfun.sourceforge.net/
|-
|-
| GTK2, GTK3 || JPEG        || libjpeg>=6b        || media-libs/jpeg        || libjpeg-dev          || http://libjpeg-turbo.virtualgl.org/ http://jpegclub.org/ http://www.ijg.org/
| LIBCANBERRA  || libcanberra>=0.29  || http://0pointer.de/lennart/projects/libcanberra/ (Linux only)
|-
|-
| GTK2, GTK3 || LCMS2        || lcms>=2.6          || media-libs/lcms        || liblcms2-dev        || http://www.littlecms.com/
| LIBIPTCDATA  || libiptcdata>=1.0.2 || http://libiptcdata.sourceforge.net
|-
|-
| GTK3      || LENSFUN      || lensfun>=0.2     || media-libs/lensfun      || liblensfun-dev      || http://lensfun.sourceforge.net/
| PNG          || libpng>=1.2.44    || http://www.libpng.org/
|-
|-
| GTK2, GTK3 || LIBCANBERRA  || libcanberra>=0.29  || media-libs/libcanberra || libcanberra-gtk3-dev || http://0pointer.de/lennart/projects/libcanberra/ (Linux seulement)
| librsvg      || librsvg>=2.40      || https://github.com/GNOME/librsvg
|-
|-
| GTK2, GTK3 || LIBIPTCDATA  || libiptcdata>=1.0.2 || media-libs/libiptcdata || libiptcdata-dev      || http://libiptcdata.sourceforge.net
| SIGC        || sigc++-2.0         || https://github.com/libsigcplusplus/libsigcplusplus
|-
|-
| GTK2, GTK3 || PNG          || libpng>=1.2.44     || media-libs/libpng      || libpng-dev          || http://www.libpng.org/
| TIFF        || libtiff>=4.0.4     || http://libtiff.org/
|-
|-
| GTK2, GTK3 || SIGC        || sigc++-2.0        || dev-libs/libsigc++    || libsigc++-2.0-dev    || http://libsigc.sourceforge.net/
| ZLIB        || zlib>=1.2.3        || http://www.zlib.net/
|-
| GTK2, GTK3 || TIFF        || libtiff>=3.9.4    || media-libs/tiff        || libtiff-dev          || http://www.remotesensing.org/libtiff/
|-
| GTK2, GTK3 || ZLIB        || zlib>=1.2.3        || sys-libs/zlib          || zlib1g-dev          || http://www.zlib.net/
|}
|}




Pour compiler RawTherapee 3, obsolète, vous avez besoin de ceux-ci :
Pour installer toutes ces dépendances, vous devez ouvrir une console et y coller le code de la section appropriée. Les fragments de code ci-dessous listent les dépendances pour la dernière version de RawTherapee qui exige GTK3. Nous avons laissé tombé le support de GTK2 depuis l'édition "5.0-r1-gtk2" de février 2017. Si vous utilisez une distribution moderne, simplement copier et coller les fragments de code tels qu'ils sont. Si vous êtes sur une vieille distribution sans le support de GTK3, alors reportez vous sur l'article archivé [[Linux_GTK2/fr|GTK2]], puis choisissez et compilez la balise obsolète <code>5.0-r1-gtk2</code>.


{| class="wikitable"
=== Arch/Manjaro ===
|+  Dépendances nécessaires pour RawTherapee 3
Les versions actuelles de Arch et de Manjaro fonctionnent correctement "au sortir de la boite". Reportez vous à l'article [[Linux_GTK2/fr|GTK2]] si vous compilez sur une version antérieure à 17.1.2.
! Paquetage  !! Version    !! Gentoo          !! Debian/Ubuntu  !! URL
 
|-
<pre style="white-space: pre-wrap">sudo pacman -S --needed bzip2 cmake exiv2 expat fftw glib2 glibmm gtk3 gtkmm3 lcms2 lensfun libcanberra libiptcdata libjpeg-turbo libpng librsvg libsigc++ libtiff zlib</pre>
| LCMS1    || lcms<=1.99 || media-libs/lcms || liblcms1-dev    || http://www.littlecms.com/
 
|}
Procéder à la [[#Compilation|compilation]].
 
=== CentOS ===
 
CentOS 7 possède des paquetages très dépassés et nécessite des étapes supplémentaires pour installer des versions récentes de GCC, git, lensfun et libtiff. Les étapes ci-dessous ont été vérifiées et fonctionnent dans CentOS 7.4.1708, mais vous les utiliserez à votre propre risque.
 
GCC >=4.9.3:
<pre style="white-space: pre-wrap">sudo yum update
sudo yum install cmake git
sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
source /opt/rh/devtoolset-7/enable</pre>
 
git >=2.7:
<pre style="white-space: pre-wrap">sudo yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm</pre>


Pour installer toutes ces dépendances, vous devez ouvrir une console et y coller le code de la section appropriée. Notez que ces bribes de code incluent les dépendances Gtk3 si elles sont disponibles, donc si vous voulez compiler la branche Legacy "gtk2" qui utilise Gtk2, bien vouloir remplacer les dépendances Gtk3 par celles de Gtk2 comme décrit dans la liste ci-dessus.
lensfun:
<pre style="white-space: pre-wrap">
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -ivh epel-release-latest-7.noarch.rpm</pre>


=== Arch ===
libtiff >=4.0.4:
La dernière version de Arch supporte Gtk3. Utiliser la branche <code>dev</code> (ou essayez une édition "gtk3"). Les dépendances ci-dessous sont pour GTK3 seulement.  
<pre style="white-space: pre-wrap">sudo yum install ninja-build
<pre style="white-space: pre-wrap">sudo pacman -S bzip2 exiv2 expat fftw glib2 glibmm gtk3 gtkmm3 lcms2 lensfun libcanberra libiptcdata libjpeg-turbo libpng libsigc++ libtiff zlib</pre>
mkdir ~/programs && cd ~/programs
wget http://download.osgeo.org/libtiff/tiff-4.0.9.tar.gz
tar zxvf tiff-4.0.9.tar.gz
mkdir tiff-4.0.9/libtiff-build && cd tiff-4.0.9/libtiff-build
cmake -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/libtiff-4.0.9 -DCMAKE_INSTALL_PREFIX=/usr -G Ninja ..
ninja-build
sudo ninja-build install
</pre>


=== CentOS 7.1 ===
Installation des autres dépendances :
Centos 7.1 ne supporte pas de version suffisamment récente de Gtk3, vous ne pouvez donc compiler que la branche <code>gtk2</code>.
<pre style="white-space: pre-wrap">sudo yum install curl expat-devel fftw-devel gtk3-devel gtkmm30-devel lcms2-devel lensfun-devel libcanberra-devel libiptcdata-devel libjpeg-turbo-devel libpng-devel librsvg2-devel zlib-devel</pre>
Etant donné que CentOS 7.1 ne semble pas avoir le moteur du thème Clearlooks GTK2, vous aurez soit à installer un autre moteur du thème GTK2, ou bien après l'installation de RawTherapee d'aller dans "Préférences > Général > Thème par défaut" et de valider "Utiliser le thème du système".
<pre style="white-space: pre-wrap">sudo yum install bzip2-devel cmake curl exiv2-devel expat-devel fftw-devel gcc-c++ git glibmm24-devel gtk2-devel gtkmm24-devel lcms2-devel libjpeg-turbo-devel libcanberra-devel libiptcdata-devel libpng-devel libtiff-devel sigc++20-devel zlib-devel</pre>


=== Fedora ===
Lien symbolique vers libatomic :
Fedora supporte Gtk3 depuis la version 22, utiliser la branche <code>dev</code> (ou essayez une édition "gtk3"). Les dépendances ci-dessous sont pour GTK3 seulement. Si vous utilisez Fedora 21 ou plus ancien, utilisez la branche Legacy <code>gtk2</code>.
<pre style="white-space: pre-wrap">sudo ln -s /usr/lib64/libatomic.so.1 /usr/lib64/libatomic.so</pre>
<pre style="white-space: pre-wrap">sudo dnf install bzip2-devel cmake exiv2-devel expat-devel fftw-devel gcc-c++ glib2-devel glibmm24-devel gtk3-devel gtkmm30-devel lcms2-devel lensfun-devel libcanberra-devel libiptcdata-devel libjpeg-turbo-devel libpng-devel libsigc++20-devel libtiff-devel zlib-devel</pre>


=== Gentoo ===
Pour procéder à la prochaine étape, la compilation, vous aurez besoin d'éditer le script <code>build-rawtherapee</code> et ajoutez ces trois lignes dans la section CMake près de la fin du fichier, par exemple après la ligne "-DWITH_BENCHMARK" et avant la ligne "$HOME" :
Gentoo supporte Gtk3. utiliser la branche <code>dev</code> (ou essayez une édition "gtk3"). Les dépendances ci-dessous sont pour GTK3 seulement.
<pre style="white-space: pre-wrap">   -DTIFF_INCLUDE_DIR="$HOME/programs/tiff-4.0.9/libtiff" \
<pre style="white-space: pre-wrap">sudo emerge -uva app-arch/bzip2 dev-cpp/gtkmm:3.0 dev-libs/expat media-gfx/exiv2 media-libs/lcms media-libs/lensfun media-libs/libcanberra media-libs/libiptcdata media-libs/libjpeg-turbo media-libs/libpng media-libs/tiff net-misc/curl sci-libs/fftw sys-libs/zlib x11-libs/gtk+:3</pre>
    -DTIFF_LIBRARY="$HOME/programs/tiff-4.0.9/libtiff-build/libtiff/libtiff.so"
    -DCMAKE_CXX_FLAGS="-Wno-deprecated -Wno-parentheses" \
</pre>


=== openSUSE ===
Procéder à la [[#Compilation|compilation]].
openSUSE 42.2 et Tumbleweed supportent Gtk3, utiliser la branche <code>dev</code> (ou essayez une édition "gtk3"). Les dépendances ci-dessous sont pour GTK3 seulement. A noter openSUSE 42.1 supporte gtk+-3.16.7 mais la compilation échoue car l'exigence sigc++-2.0>=2.4 n'est pas respectée. Si vous utilisez une version 42.1 ou plus ancienne, utilisez la branche Legacy <code>gtk2</code>.
<pre style="white-space: pre-wrap">sudo zypper in cmake fftw3-devel gcc-c++ glib2-devel glibmm2-devel gtk3-devel gtkmm3-devel libbz2-devel libcanberra-devel libexpat-devel libiptcdata-devel libjpeg-devel liblcms2-devel libpng-devel libsigc++2-devel libtiff-devel zlib-devel</pre>


=== Sabayon ===
=== Debian/Ubuntu/Mint/elementary OS ===
Sabayon supporte Gtk3, utiliser la branche <code>dev</code> (ou essayez une édition "gtk3"). Les dépendances ci-dessous sont pour GTK3 seulement.
Les versions actuelles de ces distributions fonctionnent correctement "au sortir de la boite". Reportez vous à l'article [[Linux_GTK2/fr|GTK2]] si vous compilez sur une version d'Ubuntu antérieure à 16.04.
<pre style="white-space: pre-wrap">sudo equo install app-arch/bzip2 dev-cpp/gtkmm:3.0 dev-libs/expat dev-util/cmake media-gfx/exiv2 media-libs/lcms media-libs/libcanberra media-libs/libiptcdata media-libs/libjpeg-turbo media-libs/libpng media-libs/tiff net-misc/curl sci-libs/fftw sys-libs/zlib x11-libs/gtk+:3</pre>


=== Ubuntu ===
==== Ubuntu >=16.10, Mint >=18.3, elementary OS >=0.4.1  ====
Ubuntu à partir de la version 15.10 (Wily Werewolf) supporte Gtk3, utiliser la branche <code>dev</code> (ou essayez une édition "gtk3"). Les dépendances ci-dessous sont pour GTK3 seulement. Les versions plus anciennes d'Ubuntu soit ne supportent pas du tout <code>gtk3</code>, soit la  version de <code>gtk3</code> qu'elles fournissent n'est pas suffisamment récente (la branche <code>gtk3</code> exige au minimum la version 3.16 de Gtk3), cela signifie que dans ce cas vous devez utiliser la branche Legacy <code>gtk2</code> qui utilise Gtk2.


==== Ubuntu 17.10, 17.04 et 16.10 ====
Utiliser la branche <code>dev</code> (ou essayez une édition "gtk3"). Les dépendances ci-dessous sont pour GTK3 seulement.
<pre style="white-space: pre-wrap">sudo apt update
<pre style="white-space: pre-wrap">sudo apt update
sudo apt install build-essential cmake curl git libcanberra-gtk3-dev libexiv2-dev libexpat-dev libfftw3-dev libglibmm-2.4-dev libgtk-3-dev libgtkmm-3.0-dev libiptcdata0-dev libjpeg-dev liblcms2-dev libpng-dev libsigc++-2.0-dev libtiff5-dev zlib1g-dev</pre>
sudo apt install build-essential cmake curl git libcanberra-gtk3-dev libexiv2-dev libexpat-dev libfftw3-dev libglibmm-2.4-dev libgtk-3-dev libgtkmm-3.0-dev libiptcdata0-dev libjpeg-dev liblcms2-dev libpng-dev librsvg2-dev libsigc++-2.0-dev libtiff5-dev zlib1g-dev</pre>


==== Ubuntu 16.04 LTS et 15.10 ====
Procéder à la [[#Compilation|compilation]].
Utiliser la branche <code>dev</code> (ou essayez une édition "gtk3"). Les dépendances ci-dessous sont pour GTK3 seulement.
 
==== Ubuntu 16.04 LTS ====
<pre style="white-space: pre-wrap">sudo apt-get update
<pre style="white-space: pre-wrap">sudo apt-get update
sudo apt-get install build-essential cmake curl git libbz2-dev libcanberra-gtk3-dev libexiv2-dev libexpat-dev libfftw3-dev libglibmm-2.4-dev libgtk-3-dev libgtkmm-3.0-dev libiptcdata0-dev libjpeg8-dev liblcms2-dev liblensfun-dev libpng12-dev libsigc++-2.0-dev libtiff5-dev zlib1g-dev</pre>
sudo apt-get install build-essential cmake curl git libbz2-dev libcanberra-gtk3-dev libexiv2-dev libexpat-dev libfftw3-dev libglibmm-2.4-dev libgtk-3-dev libgtkmm-3.0-dev libiptcdata0-dev libjpeg8-dev liblcms2-dev liblensfun-dev libpng12-dev librsvg2-dev  libsigc++-2.0-dev libtiff5-dev zlib1g-dev</pre>


==== Ubuntu 15.04, 14.10, 14.04 LTS ====
Procéder à la [[#Compilation|compilation]].
Utiliser la branche Legacy <code>gtk2</code>. Les dépendances ci-dessous sont pour <code>gtk2</code> seulement.
 
<pre style="white-space: pre-wrap">sudo apt-get update
=== Fedora ===
sudo apt-get install build-essential cmake curl git libbz2-dev libcanberra-gtk-dev libexiv2-dev libexpat-dev libfftw3-dev libglibmm-2.4-dev libgtk2.0-dev libgtkmm-2.4-dev libiptcdata0-dev libjpeg8-dev liblcms2-dev libpng12-dev libsigc++-2.0-dev libtiff5-dev zlib1g-dev</pre>
Les versions actuelles de Fedora fonctionnent correctement "au sortir de la boite". Reportez vous à l'article [[Linux_GTK2/fr|GTK2]] si vous compilez sur une version antérieure à 22.


RawTherapee nécessite la version 4.9 ou supérieure de GCC. Ubuntu 14.04 LTS est fourni avec la version 4.8.2 qui est trop ancienne, pour obtenir la version 4.9, suivre ces étapes : http://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-on-ubuntu-14-04 (en anglais)
<pre style="white-space: pre-wrap">sudo dnf install cmake curl expat-devel fftw-devel gcc-c++ git gtk3-devel gtkmm30-devel lcms2-devel lensfun-devel libatomic libcanberra-devel libiptcdata-devel libjpeg-turbo-devel libpng-devel librsvg2-devel libtiff-devel zlib-devel</pre>


==== Ubuntu 13.10, 13.04, 12.10, 12.04 LTS, 11.10 ====
Procéder à la [[#Compilation|compilation]].
Ces versions d'Ubuntu sont très dépassées. Le code ci-dessous fonctionne habituellement mais il peut s'arrêter à tout moment. Mettez votre système d'exploitation à jour.


comme ces version d'Ubuntu ne supportent que GCC-4.8.1 ou plus ancien, la dernière version que vous pourrez compiler est [https://github.com/Beep6581/RawTherapee/commit/b343b9a7 commit b343b9a7] du 29-12-2015. Les versions plus récentes ne compileront pas.
=== Gentoo/Sabayon ===
Les utilisateurs de Sabayon doivent pouvoir utiliser les mêmes dépendances que pour Gentoo, mais à la place de <code>sudo emerge -uva</code>, prendre <code>sudo equo install sys-devel/gcc dev-vcs/git</code>.


<pre style="white-space: pre-wrap">sudo apt-get update
<pre style="white-space: pre-wrap">sudo emerge -uva dev-cpp/gtkmm:3.0 dev-libs/expat dev-util/cmake media-gfx/exiv2 media-libs/lcms media-libs/lensfun media-libs/libcanberra media-libs/libiptcdata media-libs/libjpeg-turbo media-libs/libpng gnome-base/librsvg media-libs/tiff net-misc/curl sci-libs/fftw sys-libs/zlib x11-libs/gtk+:3</pre>
sudo apt-get install build-essential cmake curl git libbz2-dev libcanberra-gtk-dev libexiv2-dev libexpat-dev libfftw3-dev libglibmm-2.4-dev libgtk2.0-dev libgtkmm-2.4-dev libiptcdata0-dev libjpeg8-dev liblcms2-dev libpng12-dev libsigc++-2.0-dev libtiff5-dev zlib1g-dev</pre>


==== Ubuntu 10.10 et 11.04 ====
Procéder à la [[#Compilation|compilation]].
Ces versions d'Ubuntu sont très dépassées. Le code ci-dessous fonctionne habituellement mais il peut s'arrêter à tout moment. Mettez votre système d'exploitation à jour.


<pre style="white-space: pre-wrap">sudo apt-add-repository ppa:dasprid/rawtherapee
=== openSUSE ===
sudo apt-get update
Les versions d'openSUSE supérieures à Leaf 15.0 et Tumbleweed devraient fonctionner sans aucune réserve. Des problèmes sérieux de compilation sont probables avec les versions antérieures. Reportez vous à l'article [[Linux_GTK2/fr|GTK2]] si vous compilez sur une version antérieure à 42.1.
sudo apt-get install cmake curl git libbz2-dev libcanberra-gtk-dev libexiv2-dev libexpat-dev libglibmm-2.4-dev libgtk2.0-dev libgtkmm-2.4-dev libiptcdata0-dev libjpeg62 liblcms2-dev libnm-glib2 libpng12-dev libsigc++-2.0-dev libtiff4-dev zlib1g-dev</pre>


<pre style="white-space: pre-wrap">sudo zypper cmake gcc gcc-c++ gtk3-devel gtkmm3-devel liblcms2-devel fftw3-devel libitpcdata-devel librsvg-devel libtiff-devel libjpeg-devel libcanberra-gtk3-devel
<!--
</pre>


=== Deux façons de continuer ===
Ensuite, <code>lensfun</code> doit être installé manuellement:
Deux façons de poursuivre : soit utiliser le script d'installation automatique tel que décrit dans [[Linux/fr#Compilation :_la méthode automatique | Compilation :_la méthode automatique]], conçue pour vous faciliter la vie et vous en donner pour votre argent, ou bien, si vous n'avez pas d'autre moyen d'occuper le reste de la soirée, alors utilisez la méthode manuelle, décrite dans [[Linux/fr#Compilation :_la méthode manuelle | Compilation :_la méthode manuelle]].


== Compilation :_la méthode automatique ==
<pre>wget https://sourceforge.net/projects/lensfun/files/0.3.2/lensfun-0.3.2.tar.gz
<span style="color: red;">Le script buildRT est actuellement obsolète et ne fonctionnera pas avec Git. Nous travaillons sur un nouveau script. En attendant, ignorez le reste de cette section et passez à la méthode manuelle 2015-11-22</span>
tar xvf lensfun-0.3.2.tar.gz
cd lensfun-0.3.2.tar.gz
mkdir build
cd build
cmake ../
make
sudo make install</pre>


'''PROCUREZ VOUS LE SCRIPT ICI :''' http://rawtherapee.googlecode.com/hg/tools/buildRT
Procéder à la [[#Compilation|compilation]].


C'est un script Bash pour automatiquement cloner le dépôt du code source de RawTherapee, présenter à l'utilisateur une liste de branches disponibles (par ex "default") et variantes de compilation  ("release" and "debug"), et enfin compiler automatiquement les branches et les variantes choisies et créer une archive zip de chaque compilation choisie. Les compilations sont prêtes à l'emploi. buildRT ne vérifie '''pas''' les dépendances, assurez vous d'avoir bien lu la section [[Linux/fr#Dépendances | Dépendances]] avant d'utiliser ce script.  
== Compilation ==
Il existe deux écoles pour compiler RawTherapee : soit utiliser le script Bash [[#La méthode automatique|automatique]] qui compile RawTherapee à votre place (recommandé), ou faites le [[#La méthode manuelle|manuellement]].


Le lancer sous un compte utilisateur, pas sous root !
=== La méthode automatique ===
Voici la façon recommandée pour compiler RawTherapee car elle est rapide, simple et sûre. Elle s'appuie sur un script Bash qui télécharge le dernier code source de RawTherapee et le compile de façon optimisée pour votre processeur. Les compilations sont prêtes à l'usage. Le script ne vérifie pas la disponibilité des dépendances, lisez donc bien le chapitre [[Linux/fr#Dépendances | Dépendances]] avant de lancer le script. Les compilations sont autonomes, c'est à dire que vous pouvez faire cohabiter plusieurs versions de RawTherapee en même temps, simplement en renommant les dossiers de compilation afin que la création d'une nouvelle compilation n'écrase pas la précédente, ce qui est le cas par défaut.
 
Lancer le script sous un compte utilisateur, pas sous root !


Ouvrir un terminal, aller chercher le script, le rendre exécutable et le lancer :
Ouvrir un terminal, aller chercher le script, le rendre exécutable et le lancer :


<pre style="white-space: pre-wrap">cd ~
<pre style="white-space: pre-wrap">cd ~
wget http://rawtherapee.googlecode.com/hg/tools/buildRT
wget https://raw.githubusercontent.com/Beep6581/RawTherapee/dev/tools/build-rawtherapee -O build-rawtherapee
chmod +x ~/buildRT
chmod +x build-rawtherapee
./buildRT</pre>
./build-rawtherapee</pre>


La plupart des utilisateurs choisissent de compiler la branche "default", et la variante "release", ou "debug" si on souhaite avoir davantage de messages d'erreur très utiles pour le débogage, au prix d'une plus grande lenteur.
Si tout va bien, le script se terminera par le message "Pour lancer RawTherapee entrer : ..."


Faire attention à ce que dit le script, il vous dira où est exactement Rawtherapee une fois compilé, et comment le lancer. C'est tout !
Pour mettre RawTherapee à jour si vous l'avez précédemment compilé avec ce script, simplement exécuter à nouveau le script, c'est tout.


Exécuter <code>./buildRT -h</code> pour voir une liste avec la description de toutes les options supportées par buildRT.
Le script <code>build-rawtherapee</code> est inclus dans le code source de RawTherapee. Puisque l'exécution du script met le code source à jour, après votre première compilation vous pouvez effacer le script téléchargé manuellement ci-dessus avec wget, et utiliser à la place <code>~/programs/code-rawtherapee/tools/build-rawtherapee</code> qui se maintiendra toujours à jour.


Le numéro de version et la date de buildRT sont indiquées dans les en-têtes (les quelques premières lignes). C'est mis à jour tous les deux mois en moyenne, vérifiez donc régulièrement l'arrivée d'une nouvelle version, surtout si une compilation échoue, une nouvelle version corrigera surement le problème. Une nouvelle version peut-être obtenue en lançant <code>./buildRT -u</code> (dans le dossier tools)
Le script compile la branche courante, qui est par défaut <code>dev</code> où est réalisé la plupart du développement. Pour compiler une branche différente, la récupérer en utilisant les commandes git usuelles avant d'exécuter le script. Pour en savoir plus au sujet des branches de RawTherapee lire ci-dessous le paragraphe [[Linux/fr#Choisir_une_branche|Choisir une branche]].


Pour plus d'informations, voir <code>./build-rawtherapee --help</code>.
-->
==Compilation :_la méthode manuelle ==
Ce chapitre décrit comment compiler RawTherapee manuellement. <!-- , c'est à dire, sans utiliser le script ci-dessus.-->.


=== Cloner la source ===
Vous avez terminé, RawTherapee est prêt à l'utilisation. Vous pouvez passer le chapitre "La méthode manuelle"
 
=== La méthode manuelle ===
La façon recommandée pour compiler RawTherapee est d'utiliser le script automatique, voir [[#La méthode automatique|la méthode automatique]]. Pour apprendre à compiler manuellement, continuez la lecture.
 
Afin de préserver le bon ordre dans votre répertoire "home" pendant la compilation manuelle de multiples programmes (par ex. en n'utilisant pas le gestionnaire de paquetages de votre distribution) et pour que ce tutoriel de compilation manuelle reste compatible avec le script de compilation automatique, veuillez créer le dossier <code>~/programs/</code> qui va contenir dans le dossier <code>~/programs/code-rawtherapee</code>, tous les codes sources relatifs à RawTherapee, et dans le dossier <code>~/programs/rawtherapee</code>, la compilation. Vous pouvez utiliser la même disposition pour compiler d'autres programmes.
 
==== Cloner la source ====
Premièrement, il faut cloner le dépôt du code source de RawTherapee. Ouvrir une console et exécuter ces commandes :
Premièrement, il faut cloner le dépôt du code source de RawTherapee. Ouvrir une console et exécuter ces commandes :


<pre style="white-space: pre-wrap">git clone https://github.com/Beep6581/RawTherapee ~/repo-rt
<pre style="white-space: pre-wrap">mkdir -p ~/programs
cd ~/repo-rt</pre>
git clone https://github.com/Beep6581/RawTherapee ~/programs/code-rawtherapee
cd ~/programs/code-rawtherapee</pre>


=== Choisir une branche ===
==== Choisir une branche ====
* Les fonctionnalités sont développées sur leur propre branche de fonctionnalité
* Les fonctionnalités sont développées sur leur propre branche de fonctionnalité
* Les développements sont effectués sur la branche <code>dev</code>. Les branches de fonctionnalité sont fusionnées avec la branche <code>dev</code> quand elle sont prêtes. La branche <code>dev</code> est instable.
* Les développements sont effectués dans la branche <code>dev</code>. Les branches de fonctionnalité sont fusionnées avec la branche <code>dev</code> quand elle sont prêtes. La branche <code>dev</code> est instable.
* Les publications sont issues de la branche <code>releases</code>.
* Les publications sont issues de la branche <code>releases</code>.


Line 182: Line 208:
<pre style="white-space: pre-wrap">git checkout <publication ou branche></pre>
<pre style="white-space: pre-wrap">git checkout <publication ou branche></pre>


RawTherapee utilise GTK+ pour l'interface utilisateur et exige la version 3.16 ou supérieure. Si votre système ne supporte pas cette version 3.16 ou plus récente, vous devez utiliser la publication <code>5.0-r1-gtk2</code>. Notre support de GYK2 a officiellement cessé le 02 février 2017, mettez votre système à jour.
RawTherapee utilise GTK+ pour l'interface utilisateur et exige la version 3.16 ou supérieure. Si votre système ne supporte pas cette version 3.16 ou plus récente, vous devez utiliser la publication <code>5.0-r1-gtk2</code>. Notre support de GTK2 a officiellement cessé le 02 février 2017. Reportez vous à l'article archivé [[Linux_GTK2/fr|GTK2]] et mettez votre système à jour.


Note: la compilation d'anciennes versions de RawTherapee échouera sur un système moderne, car les vieilles dépendances seront manquantes.
La compilation d'anciennes versions de RawTherapee échouera sur un système moderne, car les vieilles dépendances seront manquantes.


=== Compiler RawTherapee ===
==== Compiler RawTherapee ====
Vous allez maintenant réaliser une compilation de RawTherapee, elle sera construite dans le dossier ~/repo-rt/build/release, et ensuite vous déplacerez ce dossier dans votre répertoire personnel et le renommerez "rt", donc assurez vous qu'il n'existe pas déjà un dossier nommé ~/rt.


Vous devez avoir connaissance de quelques paramètres de compilation, vous passerez ceux-ci à CMake en utilisant l'option -D, comme décrit ci-dessous :
Vous allez maintenant réaliser une compilation de RawTherapee, elle sera construite dans le dossier <code>~/programs/code-rawtherapee/build/release</code>, et ensuite vous déplacerez ce dossier dans <code>~/programs/rawtherapee</code>


; BUILD_TYPE
===== CMake =====
:Vous devez spécifier le <code>BUILD_TYPE</code> pour compiler RawTherapee. Vous pouvez donner la valeur <code>BUILD_TYPE</code> à "<code>debug</code>", "<code>relwithdebinfo</code>" ou "<code>release</code>". Les compilations "relwithdebinfo" et "debug" vous fournira une [[How_to_write_useful_bug_reports/fr | trace d'appels bien utile]] si RawTherapee se plante pendant l'exécution de GDB et vous pourrez nous la soumettre afin que nous puissions résoudre le problème. La compilation "debug" est la plus lente mais génère les informations les plus détaillées. La compilation "relwithdebinfo" est presque aussi rapide qu'une compilation "release" et génère le plus souvent suffisamment d'informations bien que pas aussi détaillées qu'avec la compilation "debug". La compilation "release" ne fournira aucune information mais contient de nombreuses optimisations de la vitesse ce qui en fait un programme qui fonctionne beaucoup plus vite que la version "debug". Pour une utilisation usuelle choisissez une compilation "release" ou "relwithdebinfo". Si vous tombez sur un bug reproductible, alors refaites la compilation avec "debug" et envoyez nous la trace d'appels (ou réparez vous même et envoyez nous le patch !). Sinon, utilisez une compilation "relwithdebinfo" et espérez qu'elle sera suffisamment détaillée.
Vous devez avoir connaissance de quelques paramètres de compilation, vous passerez ceux-ci à CMake en utilisant l'option <code>-D</code>, comme décrit ci-dessous :


; CMAKE_BUILD_TYPE
: Un des suivants : <code>release</code> (par defaut), <code>relwithdebinfo</code> ou <code>debug</code>.
: Cela détermine si la compilation doit favoriser la rapidité d’exécution ou la quantité des commentaires en sortie de déboguage.
:Les compilations "relwithdebinfo" et "debug" vous fournira une [[How_to_write_useful_bug_reports/fr | trace d'appels bien utile]] si RawTherapee se plante pendant l'exécution de GDB et vous pourrez nous la soumettre afin que nous puissions résoudre le problème. La compilation "debug" est la plus lente mais génère les informations les plus détaillées. La compilation "relwithdebinfo" est presque aussi rapide qu'une compilation "release" et génère le plus souvent suffisamment d'informations bien que pas aussi détaillées qu'avec la compilation "debug". La compilation "release" ne fournira aucune information mais contient de nombreuses optimisations de la vitesse ce qui en fait un programme qui fonctionne beaucoup plus vite que la version "debug". Pour une utilisation usuelle choisissez une compilation "release" ou "relwithdebinfo". Si vous tombez sur un bug reproductible, alors refaites la compilation avec "debug" et envoyez nous la trace d'appels (ou réparez vous même et envoyez nous le patch !). Nous préférons les traces d'appels des compilations debug plutôt que celles des compilations relwithdebinfo
:: Pour réaliser une compilation de type "release", écrire <code>-DCMAKE_BUILD_TYPE="release"</code>
:: Pour réaliser une compilation de type "release", écrire <code>-DCMAKE_BUILD_TYPE="release"</code>
:: Remplacer "release" par "debug" ou "relwithdebinfo" si besoin.


; USE_OLD_CXX_ABI
; USE_OLD_CXX_ABI
: <code>ON</code> or <code>OFF</code> (par défaut).
: Lors de la compilation d'un programme, on doit utiliser les mêmes conventions que celles utilisées par les bibliothèques appelées par ledit programme, sinon, la compilation (création des liens) échouera. En général, on n'a pas besoin de s'en préoccuper, mais nous sommes actuellement à une époque de remplacement progressif de GCC4 par GCC5, chacun utilisant par défaut une convention incompatible avec l'autre, ce qui est la cause du problème. Si les bibliothèques sur votre système ont été compilées avec GC5, elles utilisent probablement un standard appelé C++11. Cela signifie que votre compilation de RawTherapee doit utiliser le même standard, ce qui est le cas par défaut. Cependant, si malgré l'utilisation de GCC5 vos bibliothèques étaient compilées avec l'ancien standard C++03, alors RawTherapee doit être paramétré pour utiliser le même, et pour cela vous devez configurer "USE_OLD_CXX_ABI" sur "ON":
: Lors de la compilation d'un programme, on doit utiliser les mêmes conventions que celles utilisées par les bibliothèques appelées par ledit programme, sinon, la compilation (création des liens) échouera. En général, on n'a pas besoin de s'en préoccuper, mais nous sommes actuellement à une époque de remplacement progressif de GCC4 par GCC5, chacun utilisant par défaut une convention incompatible avec l'autre, ce qui est la cause du problème. Si les bibliothèques sur votre système ont été compilées avec GC5, elles utilisent probablement un standard appelé C++11. Cela signifie que votre compilation de RawTherapee doit utiliser le même standard, ce qui est le cas par défaut. Cependant, si malgré l'utilisation de GCC5 vos bibliothèques étaient compilées avec l'ancien standard C++03, alors RawTherapee doit être paramétré pour utiliser le même, et pour cela vous devez configurer "USE_OLD_CXX_ABI" sur "ON":


Line 210: Line 239:


; PROC_TARGET_NUMBER
; PROC_TARGET_NUMBER
: L'option PROC_TARGET_NUMBER définit pour quel type de CPU doit se faire l’optimisation. "2" est un bon choix car il signifie "natif", donc l'optimisation sera automatiquement pour le CPU détecte.
: Entre <code>0</code> (par défaut) et <code>9</code>.
: L'option PROC_TARGET_NUMBER définit pour quel type de CPU doit se faire l’optimisation.
: Si vous compilez pour vous-même, mettre "2". Cela signifie "natif", donc l'optimisation sera automatiquement pour le CPU détecte et RawTherapee sera aussi rapide que possible sur votre CPU. Il se peut qu'il ne fonctionne pas du tout sur d'autres architectures.
: Si vous compilez pour distribuer (à d'autres personnes), mettre "1". Cela signifie "générique", ainsi seules les optimisations supportées par le plus grand nombre de CPU seront utilisées, la compilation peut donc être téléchargée et utilisée par tout le monde, mais n'aura pas les meilleures optimisations possibles.
: Pour plus d'informations, voir le fichier "ProcessorTargets.cmake" dans le dossier cloné.
: Pour plus d'informations, voir le fichier "ProcessorTargets.cmake" dans le dossier cloné.
:: Pour que la compilation utilise l'optimisation "native", écrire : <code>-DPROC_TARGET_NUMBER="2"</code>
:: Pour que la compilation utilise l'optimisation "native", écrire : <code>-DPROC_TARGET_NUMBER="2"</code>
Line 216: Line 248:
; BUILD_BUNDLE
; BUILD_BUNDLE
: <code>ON</code> ou <code>OFF</code>
: <code>ON</code> ou <code>OFF</code>
: Ceci n'est optionnel que sur Linux. Il est forcé sur ON pour Windows et macOS.
: Il est forcé sur "ON "pour Windows et macOS. Optionnel pour Linux où c'est "OFF" par défaut.
: Si réglé sur ON, le programme sera compilé dans un répertoire spécifique (<code>DATADIR</code>), sinon il sera installé selon <code>CMAKE_INSTALL_PREFIX</code> qui vaut typiquement pour tout le système.  
: Si réglé sur "ON", le programme sera compilé dans un répertoire (<code>DATADIR</code>), sinon il sera installé selon <code>CMAKE_INSTALL_PREFIX</code> qui vaut typiquement pour tout le système.  
 
; BUNDLE_BASE_INSTALL_DIR
: Utiliser un chemin absolu.
: Le programme sera compilé dans ce répertoire.
: Par exemple, choisir : <code>-DBUNDLE_BASE_INSTALL_DIR="$HOME/programs/rawtherapee"</code>
: S'il n'est pas défini, <code>${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}</code> sera utilisé par défaut


; LENSFUNDBDIR
; LENSFUNDBDIR
: Non défini par défaut
: L'option <code>LENSFUNDBDIR</code> permet de situer la base de données lensfun dans le répertoire spécifié. Elle peut être non définie, absolue ou relative.
: L'option <code>LENSFUNDBDIR</code> permet de situer la base de données lensfun dans le répertoire spécifié. Elle peut être non définie, absolue ou relative.
: Si non définie, alors Lensfun utilise sa propre logique pour trouver la base de donnée. C'est l'option recommandée si Lensfun est déjà installée pour tout le système et que vous souhaitez l'utiliser.
: Si non définie, alors Lensfun utilise sa propre logique pour trouver la base de donnée. C'est l'option recommandée si Lensfun est déjà installée pour tout le système et que vous souhaitez l'utiliser.
Line 225: Line 264:
: Si vous compilez un lot, le chemin est relatif au répertoire racine du lot, sinon il est relatif au <code>DATADIR</code>, c'est-à-dire <code>${CMAKE_INSTALL_PREFIX}/share/rawtherapee</code>
: Si vous compilez un lot, le chemin est relatif au répertoire racine du lot, sinon il est relatif au <code>DATADIR</code>, c'est-à-dire <code>${CMAKE_INSTALL_PREFIX}/share/rawtherapee</code>


Enfin, vous devez trouver combien de threads sont supportés par votre CPU. Cela rendra la compilation plus rapide mais n'aura aucun effet sur la vitesse d’exécution de RawTherapee.
; OPTION_OMP
; Threads
: <code>ON</code> (par défaut) ou <code>OFF</code>.
: Pour trouver combien de threads sont supportés par votre CPU, exécuter :
: Si validé, compile avec le support de OpenMP, ce qui valide le multithreading et rend RawTherapee plus rapide.
: <code>grep -c processor /proc/cpuinfo</code>
: puis remplacer le nombre dans "-j4" ci-dessous par ce nombre.


Maintenant, vous êtes prêt pour la compilation :
; WITH_LTO
<pre style="white-space: pre-wrap">cd ~/repo-rt
: <code>ON</code> ou <code>OFF</code> (par défaut).
rm -rf build
: Si validé, compile avec les optimisations de link-time, ce qui peut rendre RawTherapee un peu plus rapide.
mkdir build && cd build
 
cmake -DCMAKE_BUILD_TYPE="release" \
; WITH_PROF
      -DPROC_TARGET_NUMBER="2" \
: <code>ON</code> ou <code>OFF</code> (par défaut).
      -DBUILD_BUNDLE="ON" \
: Pour des fins de débogage. Génère du code supplémentaire pour écrire des informations de profil adaptées au programme d'analyse gprof.
      -DCACHE_NAME_SUFFIX="5-dev" \
 
      -DWITH_LTO="OFF" \
; WITH_SAN
      ..
: <code>OFF</code> (défaut) ou l'une des diverses autres options.
make -j4 install
: Pour des fins de débogage. Permet d'activer divers débogueurs.
mv release ~/rt</pre>
: Voir le chapitre [https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html Program Instrumentation Options] du manuel de GCC davantage d'informations.
 
; WITH_SYSTEM_KLT
: <code>ON</code> ou <code>OFF</code> (par défaut).
: Si sur ON, compiler en utilisant la bibliothèque du systeme KLT, sinon, utilise le bouquet de fichiers KLT avec RawTherapee.
: Le détecteur de traits Kanade–Lucas–Tomasi (KLT) feature tracker est utilisé par l'outil de [[Lens/Geometry/fr#Distorsion| Correction automatique de la distortion]].
 
; WITH_BENCHMARK
: <code>ON</code> ou <code>OFF</code> (par défaut).
: Compilation avec les fonctions de synchronisation en service pour mesurer les performances.
 
===== Make =====
 
Trouvez combien de threads sont supportés par votre CPU. Cela rendra la compilation plus rapide mais n'aura aucun effet sur la vitesse d’exécution de RawTherapee. Pour trouver combien de threads sont supportés par votre CPU, exécutez dans un terminal :
<pre style="white-space: pre-wrap">nproc --all</pre>
Il retournera un nombre. Utilisez le pour le paramètre <code>--jobs</code> ci-dessous.
 
Compile:
<pre style="white-space: pre-wrap">cd ~/programs/code-rawtherapee
mkdir build
cd build
 
cmake \
    -DCMAKE_BUILD_TYPE="release" \
    -DCACHE_NAME_SUFFIX="5-dev" \
    -DPROC_TARGET_NUMBER="2" \
    -DBUILD_BUNDLE="ON" \
    -DBUNDLE_BASE_INSTALL_DIR="$HOME/programs/rawtherapee" \
    -DOPTION_OMP="ON" \
    -DWITH_LTO="OFF" \
    -DWITH_PROF="OFF" \
    -DWITH_SAN="OFF" \
    -DWITH_SYSTEM_KLT="OFF" \
    ..
 
make --jobs=4
make install
</pre>
 
==== Exécuter RawTherapee ====


=== Exécuter RawTherapee ===
Pour lancer RawTherapee :
Pour lancer RawTherapee :
<pre style="white-space: pre-wrap">~/rt/rawtherapee</pre>
<pre style="white-space: pre-wrap">~/programs/rawtherapee/rawtherapee</pre>
 
Ou pour lancer la version en ligne de commande :
<pre style="white-space: pre-wrap">~/programs/rawtherapee/rawtherapee-cli</pre>


Le dépot du code source est dans <code>~/repo-rt</code> et le programme compilé est dans <code>~/rt</code>
Le dépot du code source est dans <code>~/programs/code-rawtherapee</code> et le programme compilé est dans <code>~/programs/rawtherapee</code>


Vous pouvez effacer en toute sécurité <code>~/repo-rt</code> si vous le désirez. Le programme compilé continuera de fonctionner, mais vous aurez à refaire toutes les étapes ci-dessus pour réaliser une mise à jour. Il vaut mieux laisser le dépot intact et vous pourrez ainsi réaliser l'étape suivante dans une semaine ou un mois.
Vous pouvez effacer en toute sécurité <code>~/programs/code-rawtherapee</code> si vous le désirez. Le programme compilé continuera de fonctionner, mais vous aurez à refaire toutes les étapes ci-dessus pour réaliser une mise à jour. Il vaut mieux laisser le dépôt intact et vous pourrez ainsi réaliser l'étape suivante dans une semaine ou un mois, lorsque vous désirerez mettre à jour.


=== Mettre à jour RawTherapee ===
==== Mettre à jour RawTherapee ====
Chaque fois que vous désirez mettre RawTherapee à jour vers le dernier code disponible, simplement faire ce qui suit :
Chaque fois que vous désirez mettre RawTherapee à jour vers le dernier code disponible, simplement faire ce qui suit :
<pre style="white-space: pre-wrap">cd ~/repo-rt
<pre style="white-space: pre-wrap">cd ~/programs/code-rawtherapee
git pull</pre>
git pull</pre>


Puis répéter l'étape [Linux/fr#Compiler RawTherapee | Compiler RawTherapee]] ci-dessus.
Puis répéter l'étape [[#Make | Make]] ci-dessus.
 
Pour la mise à jour, vous pouvez récupérer le dossier <code>build</code> de la fois précédente pour éviter d'avoir à recompiler des choses qui n'ont pas changé et rendre le processus plus rapide. CMake devrait détecter automatiquement les changements. Cependant, il y a des situations où la compilation échoue si l'on ré-utilise le dossier <code>build</code>, typiquement cela se produit si l'on passe d'une branche vers une autre très différente. Si cela arrive, simplement effacer le dossier <code>build</code> puis procéder selon les étapes de la section "Make".

Latest revision as of 18:05, 14 December 2019

Linux

Cette page détaille les instructions pour compiler RawTherapee dans les systèmes GNU/Linux. Vous trouverez aussi des instructions pour la compilation dans Windows et MacOS.

En cas de doute, Joigniez nous sur IRC ou sur le Forum et demandez à un humain !

Dépendances

Pour compiler RawTherapee votre système nécessite un jeu d'outils et des bibliothèques venues d'autres programmes. Ils sont appelés dépendances, en voici la liste pour la dernière version de RawTherapee.

Dépendances pour RawTherapee:
Package Version URL
CMake cmake>=3.5 https://cmake.org/
EXIV2 exiv2>=0.19 http://www.exiv2.org/
EXPAT expat>=2.1.0 https://libexpat.github.io/
FFTW3 fftw>=3.2.2 http://fftw.org/
GCC gcc>=4.9 https://gcc.gnu.org/
GLIB2 glib-2.0>=2.24 https://www.gtk.org/
GLIBMM glibmm-2.4>=2.24 https://www.gtkmm.org/
GTK+ gtk+-3.16 < 3.24.0 https://www.gtk.org/
GTKMM gtkmm-3.16 https://www.gtkmm.org/
JPEG libjpeg>=6b https://libjpeg-turbo.org/ https://jpegclub.org/ https://www.ijg.org/
LCMS2 lcms>=2.6 http://www.littlecms.com/
LENSFUN lensfun>=0.2 http://lensfun.sourceforge.net/
LIBCANBERRA libcanberra>=0.29 http://0pointer.de/lennart/projects/libcanberra/ (Linux only)
LIBIPTCDATA libiptcdata>=1.0.2 http://libiptcdata.sourceforge.net
PNG libpng>=1.2.44 http://www.libpng.org/
librsvg librsvg>=2.40 https://github.com/GNOME/librsvg
SIGC sigc++-2.0 https://github.com/libsigcplusplus/libsigcplusplus
TIFF libtiff>=4.0.4 http://libtiff.org/
ZLIB zlib>=1.2.3 http://www.zlib.net/


Pour installer toutes ces dépendances, vous devez ouvrir une console et y coller le code de la section appropriée. Les fragments de code ci-dessous listent les dépendances pour la dernière version de RawTherapee qui exige GTK3. Nous avons laissé tombé le support de GTK2 depuis l'édition "5.0-r1-gtk2" de février 2017. Si vous utilisez une distribution moderne, simplement copier et coller les fragments de code tels qu'ils sont. Si vous êtes sur une vieille distribution sans le support de GTK3, alors reportez vous sur l'article archivé GTK2, puis choisissez et compilez la balise obsolète 5.0-r1-gtk2.

Arch/Manjaro

Les versions actuelles de Arch et de Manjaro fonctionnent correctement "au sortir de la boite". Reportez vous à l'article GTK2 si vous compilez sur une version antérieure à 17.1.2.

sudo pacman -S --needed bzip2 cmake exiv2 expat fftw glib2 glibmm gtk3 gtkmm3 lcms2 lensfun libcanberra libiptcdata libjpeg-turbo libpng librsvg libsigc++ libtiff zlib

Procéder à la compilation.

CentOS

CentOS 7 possède des paquetages très dépassés et nécessite des étapes supplémentaires pour installer des versions récentes de GCC, git, lensfun et libtiff. Les étapes ci-dessous ont été vérifiées et fonctionnent dans CentOS 7.4.1708, mais vous les utiliserez à votre propre risque.

GCC >=4.9.3:

sudo yum update
sudo yum install cmake git
sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
source /opt/rh/devtoolset-7/enable

git >=2.7:

sudo yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm

lensfun:

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -ivh epel-release-latest-7.noarch.rpm

libtiff >=4.0.4:

sudo yum install ninja-build
mkdir ~/programs && cd ~/programs
wget http://download.osgeo.org/libtiff/tiff-4.0.9.tar.gz
tar zxvf tiff-4.0.9.tar.gz
mkdir tiff-4.0.9/libtiff-build && cd tiff-4.0.9/libtiff-build
cmake -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/libtiff-4.0.9 -DCMAKE_INSTALL_PREFIX=/usr -G Ninja ..
ninja-build
sudo ninja-build install

Installation des autres dépendances :

sudo yum install curl expat-devel fftw-devel gtk3-devel gtkmm30-devel lcms2-devel lensfun-devel libcanberra-devel libiptcdata-devel libjpeg-turbo-devel libpng-devel librsvg2-devel zlib-devel

Lien symbolique vers libatomic :

sudo ln -s /usr/lib64/libatomic.so.1 /usr/lib64/libatomic.so

Pour procéder à la prochaine étape, la compilation, vous aurez besoin d'éditer le script build-rawtherapee et ajoutez ces trois lignes dans la section CMake près de la fin du fichier, par exemple après la ligne "-DWITH_BENCHMARK" et avant la ligne "$HOME" :

    -DTIFF_INCLUDE_DIR="$HOME/programs/tiff-4.0.9/libtiff" \
    -DTIFF_LIBRARY="$HOME/programs/tiff-4.0.9/libtiff-build/libtiff/libtiff.so" 
    -DCMAKE_CXX_FLAGS="-Wno-deprecated -Wno-parentheses" \

Procéder à la compilation.

Debian/Ubuntu/Mint/elementary OS

Les versions actuelles de ces distributions fonctionnent correctement "au sortir de la boite". Reportez vous à l'article GTK2 si vous compilez sur une version d'Ubuntu antérieure à 16.04.

Ubuntu >=16.10, Mint >=18.3, elementary OS >=0.4.1

sudo apt update
sudo apt install build-essential cmake curl git libcanberra-gtk3-dev libexiv2-dev libexpat-dev libfftw3-dev libglibmm-2.4-dev libgtk-3-dev libgtkmm-3.0-dev libiptcdata0-dev libjpeg-dev liblcms2-dev libpng-dev librsvg2-dev libsigc++-2.0-dev libtiff5-dev zlib1g-dev

Procéder à la compilation.

Ubuntu 16.04 LTS

sudo apt-get update
sudo apt-get install build-essential cmake curl git libbz2-dev libcanberra-gtk3-dev libexiv2-dev libexpat-dev libfftw3-dev libglibmm-2.4-dev libgtk-3-dev libgtkmm-3.0-dev libiptcdata0-dev libjpeg8-dev liblcms2-dev liblensfun-dev libpng12-dev librsvg2-dev  libsigc++-2.0-dev libtiff5-dev zlib1g-dev

Procéder à la compilation.

Fedora

Les versions actuelles de Fedora fonctionnent correctement "au sortir de la boite". Reportez vous à l'article GTK2 si vous compilez sur une version antérieure à 22.

sudo dnf install cmake curl expat-devel fftw-devel gcc-c++ git gtk3-devel gtkmm30-devel lcms2-devel lensfun-devel libatomic libcanberra-devel libiptcdata-devel libjpeg-turbo-devel libpng-devel librsvg2-devel libtiff-devel zlib-devel

Procéder à la compilation.

Gentoo/Sabayon

Les utilisateurs de Sabayon doivent pouvoir utiliser les mêmes dépendances que pour Gentoo, mais à la place de sudo emerge -uva, prendre sudo equo install sys-devel/gcc dev-vcs/git.

sudo emerge -uva dev-cpp/gtkmm:3.0 dev-libs/expat dev-util/cmake media-gfx/exiv2 media-libs/lcms media-libs/lensfun media-libs/libcanberra media-libs/libiptcdata media-libs/libjpeg-turbo media-libs/libpng gnome-base/librsvg media-libs/tiff net-misc/curl sci-libs/fftw sys-libs/zlib x11-libs/gtk+:3

Procéder à la compilation.

openSUSE

Les versions d'openSUSE supérieures à Leaf 15.0 et Tumbleweed devraient fonctionner sans aucune réserve. Des problèmes sérieux de compilation sont probables avec les versions antérieures. Reportez vous à l'article GTK2 si vous compilez sur une version antérieure à 42.1.

sudo zypper cmake gcc gcc-c++ gtk3-devel gtkmm3-devel liblcms2-devel fftw3-devel libitpcdata-devel librsvg-devel libtiff-devel libjpeg-devel libcanberra-gtk3-devel

Ensuite, lensfun doit être installé manuellement:

wget https://sourceforge.net/projects/lensfun/files/0.3.2/lensfun-0.3.2.tar.gz
tar xvf lensfun-0.3.2.tar.gz
cd lensfun-0.3.2.tar.gz
mkdir build
cd build
cmake ../
make
sudo make install

Procéder à la compilation.

Compilation

Il existe deux écoles pour compiler RawTherapee : soit utiliser le script Bash automatique qui compile RawTherapee à votre place (recommandé), ou faites le manuellement.

La méthode automatique

Voici la façon recommandée pour compiler RawTherapee car elle est rapide, simple et sûre. Elle s'appuie sur un script Bash qui télécharge le dernier code source de RawTherapee et le compile de façon optimisée pour votre processeur. Les compilations sont prêtes à l'usage. Le script ne vérifie pas la disponibilité des dépendances, lisez donc bien le chapitre Dépendances avant de lancer le script. Les compilations sont autonomes, c'est à dire que vous pouvez faire cohabiter plusieurs versions de RawTherapee en même temps, simplement en renommant les dossiers de compilation afin que la création d'une nouvelle compilation n'écrase pas la précédente, ce qui est le cas par défaut.

Lancer le script sous un compte utilisateur, pas sous root !

Ouvrir un terminal, aller chercher le script, le rendre exécutable et le lancer :

cd ~
wget https://raw.githubusercontent.com/Beep6581/RawTherapee/dev/tools/build-rawtherapee -O build-rawtherapee
chmod +x build-rawtherapee
./build-rawtherapee

Si tout va bien, le script se terminera par le message "Pour lancer RawTherapee entrer : ..."

Pour mettre RawTherapee à jour si vous l'avez précédemment compilé avec ce script, simplement exécuter à nouveau le script, c'est tout.

Le script build-rawtherapee est inclus dans le code source de RawTherapee. Puisque l'exécution du script met le code source à jour, après votre première compilation vous pouvez effacer le script téléchargé manuellement ci-dessus avec wget, et utiliser à la place ~/programs/code-rawtherapee/tools/build-rawtherapee qui se maintiendra toujours à jour.

Le script compile la branche courante, qui est par défaut dev où est réalisé la plupart du développement. Pour compiler une branche différente, la récupérer en utilisant les commandes git usuelles avant d'exécuter le script. Pour en savoir plus au sujet des branches de RawTherapee lire ci-dessous le paragraphe Choisir une branche.

Pour plus d'informations, voir ./build-rawtherapee --help.

Vous avez terminé, RawTherapee est prêt à l'utilisation. Vous pouvez passer le chapitre "La méthode manuelle"

La méthode manuelle

La façon recommandée pour compiler RawTherapee est d'utiliser le script automatique, voir la méthode automatique. Pour apprendre à compiler manuellement, continuez la lecture.

Afin de préserver le bon ordre dans votre répertoire "home" pendant la compilation manuelle de multiples programmes (par ex. en n'utilisant pas le gestionnaire de paquetages de votre distribution) et pour que ce tutoriel de compilation manuelle reste compatible avec le script de compilation automatique, veuillez créer le dossier ~/programs/ qui va contenir dans le dossier ~/programs/code-rawtherapee, tous les codes sources relatifs à RawTherapee, et dans le dossier ~/programs/rawtherapee, la compilation. Vous pouvez utiliser la même disposition pour compiler d'autres programmes.

Cloner la source

Premièrement, il faut cloner le dépôt du code source de RawTherapee. Ouvrir une console et exécuter ces commandes :

mkdir -p ~/programs
git clone https://github.com/Beep6581/RawTherapee ~/programs/code-rawtherapee
cd ~/programs/code-rawtherapee

Choisir une branche

  • Les fonctionnalités sont développées sur leur propre branche de fonctionnalité
  • Les développements sont effectués dans la branche dev. Les branches de fonctionnalité sont fusionnées avec la branche dev quand elle sont prêtes. La branche dev est instable.
  • Les publications sont issues de la branche releases.

Essayez la dernière publication si vous souhaitez la version la plus stable. Pour voir toutes les branches disponibles, tapez :

git tag

Choisir la branche dev ou une autre branche de fonctionnalité si désirez tester le code dernier cri. Pour voir toutes les branches disponibles tapez :

git branch -a

Le "choix" se fait via la commande "git checkout". Pour choisir une publication ou une branche, tapez

git checkout <publication ou branche>

RawTherapee utilise GTK+ pour l'interface utilisateur et exige la version 3.16 ou supérieure. Si votre système ne supporte pas cette version 3.16 ou plus récente, vous devez utiliser la publication 5.0-r1-gtk2. Notre support de GTK2 a officiellement cessé le 02 février 2017. Reportez vous à l'article archivé GTK2 et mettez votre système à jour.

La compilation d'anciennes versions de RawTherapee échouera sur un système moderne, car les vieilles dépendances seront manquantes.

Compiler RawTherapee

Vous allez maintenant réaliser une compilation de RawTherapee, elle sera construite dans le dossier ~/programs/code-rawtherapee/build/release, et ensuite vous déplacerez ce dossier dans ~/programs/rawtherapee

CMake

Vous devez avoir connaissance de quelques paramètres de compilation, vous passerez ceux-ci à CMake en utilisant l'option -D, comme décrit ci-dessous :

CMAKE_BUILD_TYPE
Un des suivants : release (par defaut), relwithdebinfo ou debug.
Cela détermine si la compilation doit favoriser la rapidité d’exécution ou la quantité des commentaires en sortie de déboguage.
Les compilations "relwithdebinfo" et "debug" vous fournira une trace d'appels bien utile si RawTherapee se plante pendant l'exécution de GDB et vous pourrez nous la soumettre afin que nous puissions résoudre le problème. La compilation "debug" est la plus lente mais génère les informations les plus détaillées. La compilation "relwithdebinfo" est presque aussi rapide qu'une compilation "release" et génère le plus souvent suffisamment d'informations bien que pas aussi détaillées qu'avec la compilation "debug". La compilation "release" ne fournira aucune information mais contient de nombreuses optimisations de la vitesse ce qui en fait un programme qui fonctionne beaucoup plus vite que la version "debug". Pour une utilisation usuelle choisissez une compilation "release" ou "relwithdebinfo". Si vous tombez sur un bug reproductible, alors refaites la compilation avec "debug" et envoyez nous la trace d'appels (ou réparez vous même et envoyez nous le patch !). Nous préférons les traces d'appels des compilations debug plutôt que celles des compilations relwithdebinfo
Pour réaliser une compilation de type "release", écrire -DCMAKE_BUILD_TYPE="release"
USE_OLD_CXX_ABI
ON or OFF (par défaut).
Lors de la compilation d'un programme, on doit utiliser les mêmes conventions que celles utilisées par les bibliothèques appelées par ledit programme, sinon, la compilation (création des liens) échouera. En général, on n'a pas besoin de s'en préoccuper, mais nous sommes actuellement à une époque de remplacement progressif de GCC4 par GCC5, chacun utilisant par défaut une convention incompatible avec l'autre, ce qui est la cause du problème. Si les bibliothèques sur votre système ont été compilées avec GC5, elles utilisent probablement un standard appelé C++11. Cela signifie que votre compilation de RawTherapee doit utiliser le même standard, ce qui est le cas par défaut. Cependant, si malgré l'utilisation de GCC5 vos bibliothèques étaient compilées avec l'ancien standard C++03, alors RawTherapee doit être paramétré pour utiliser le même, et pour cela vous devez configurer "USE_OLD_CXX_ABI" sur "ON":
Pour valider USE_OLD_CXX_ABI, écrire : -DUSE_OLD_CXX_ABI="ON"
CACHE_NAME_SUFFIX
Les options CACHE_NAME_SUFFIX définissent le suffixe des noms du répertoire de configuration et du cache qui seront utilisés par la compilation de RawTherapee. : Voir l'article Où sont les fichiers ? pour une explication de ce que sont ces répertoires.
Pour les versions stables (si vous choisissez la branche "releases") mettre -DCACHE_NAME_SUFFIX=""
Pour les compilations de développement (si vous choisissez la branche "dev" ou toute autre branche que "releases") mettre -DCACHE_NAME_SUFFIX="5-dev"
PROC_TARGET_NUMBER
Entre 0 (par défaut) et 9.
L'option PROC_TARGET_NUMBER définit pour quel type de CPU doit se faire l’optimisation.
Si vous compilez pour vous-même, mettre "2". Cela signifie "natif", donc l'optimisation sera automatiquement pour le CPU détecte et RawTherapee sera aussi rapide que possible sur votre CPU. Il se peut qu'il ne fonctionne pas du tout sur d'autres architectures.
Si vous compilez pour distribuer (à d'autres personnes), mettre "1". Cela signifie "générique", ainsi seules les optimisations supportées par le plus grand nombre de CPU seront utilisées, la compilation peut donc être téléchargée et utilisée par tout le monde, mais n'aura pas les meilleures optimisations possibles.
Pour plus d'informations, voir le fichier "ProcessorTargets.cmake" dans le dossier cloné.
Pour que la compilation utilise l'optimisation "native", écrire : -DPROC_TARGET_NUMBER="2"
BUILD_BUNDLE
ON ou OFF
Il est forcé sur "ON "pour Windows et macOS. Optionnel pour Linux où c'est "OFF" par défaut.
Si réglé sur "ON", le programme sera compilé dans un répertoire (DATADIR), sinon il sera installé selon CMAKE_INSTALL_PREFIX qui vaut typiquement pour tout le système.
BUNDLE_BASE_INSTALL_DIR
Utiliser un chemin absolu.
Le programme sera compilé dans ce répertoire.
Par exemple, choisir : -DBUNDLE_BASE_INSTALL_DIR="$HOME/programs/rawtherapee"
S'il n'est pas défini, ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} sera utilisé par défaut
LENSFUNDBDIR
Non défini par défaut
L'option LENSFUNDBDIR permet de situer la base de données lensfun dans le répertoire spécifié. Elle peut être non définie, absolue ou relative.
Si non définie, alors Lensfun utilise sa propre logique pour trouver la base de donnée. C'est l'option recommandée si Lensfun est déjà installée pour tout le système et que vous souhaitez l'utiliser.
Vous pouvez choisir un chemin relatif ou absolu pour utiliser une base de données lensfun personnalisée.
Si vous compilez un lot, le chemin est relatif au répertoire racine du lot, sinon il est relatif au DATADIR, c'est-à-dire ${CMAKE_INSTALL_PREFIX}/share/rawtherapee
OPTION_OMP
ON (par défaut) ou OFF.
Si validé, compile avec le support de OpenMP, ce qui valide le multithreading et rend RawTherapee plus rapide.
WITH_LTO
ON ou OFF (par défaut).
Si validé, compile avec les optimisations de link-time, ce qui peut rendre RawTherapee un peu plus rapide.
WITH_PROF
ON ou OFF (par défaut).
Pour des fins de débogage. Génère du code supplémentaire pour écrire des informations de profil adaptées au programme d'analyse gprof.
WITH_SAN
OFF (défaut) ou l'une des diverses autres options.
Pour des fins de débogage. Permet d'activer divers débogueurs.
Voir le chapitre Program Instrumentation Options du manuel de GCC davantage d'informations.
WITH_SYSTEM_KLT
ON ou OFF (par défaut).
Si sur ON, compiler en utilisant la bibliothèque du systeme KLT, sinon, utilise le bouquet de fichiers KLT avec RawTherapee.
Le détecteur de traits Kanade–Lucas–Tomasi (KLT) feature tracker est utilisé par l'outil de Correction automatique de la distortion.
WITH_BENCHMARK
ON ou OFF (par défaut).
Compilation avec les fonctions de synchronisation en service pour mesurer les performances.
Make

Trouvez combien de threads sont supportés par votre CPU. Cela rendra la compilation plus rapide mais n'aura aucun effet sur la vitesse d’exécution de RawTherapee. Pour trouver combien de threads sont supportés par votre CPU, exécutez dans un terminal :

nproc --all

Il retournera un nombre. Utilisez le pour le paramètre --jobs ci-dessous.

Compile:

cd ~/programs/code-rawtherapee
mkdir build
cd build

cmake \
    -DCMAKE_BUILD_TYPE="release"  \
    -DCACHE_NAME_SUFFIX="5-dev" \
    -DPROC_TARGET_NUMBER="2" \
    -DBUILD_BUNDLE="ON" \
    -DBUNDLE_BASE_INSTALL_DIR="$HOME/programs/rawtherapee" \
    -DOPTION_OMP="ON" \
    -DWITH_LTO="OFF" \
    -DWITH_PROF="OFF" \
    -DWITH_SAN="OFF" \
    -DWITH_SYSTEM_KLT="OFF" \
    ..

make --jobs=4
make install

Exécuter RawTherapee

Pour lancer RawTherapee :

~/programs/rawtherapee/rawtherapee

Ou pour lancer la version en ligne de commande :

~/programs/rawtherapee/rawtherapee-cli

Le dépot du code source est dans ~/programs/code-rawtherapee et le programme compilé est dans ~/programs/rawtherapee

Vous pouvez effacer en toute sécurité ~/programs/code-rawtherapee si vous le désirez. Le programme compilé continuera de fonctionner, mais vous aurez à refaire toutes les étapes ci-dessus pour réaliser une mise à jour. Il vaut mieux laisser le dépôt intact et vous pourrez ainsi réaliser l'étape suivante dans une semaine ou un mois, lorsque vous désirerez mettre à jour.

Mettre à jour RawTherapee

Chaque fois que vous désirez mettre RawTherapee à jour vers le dernier code disponible, simplement faire ce qui suit :

cd ~/programs/code-rawtherapee
git pull

Puis répéter l'étape Make ci-dessus.

Pour la mise à jour, vous pouvez récupérer le dossier build de la fois précédente pour éviter d'avoir à recompiler des choses qui n'ont pas changé et rendre le processus plus rapide. CMake devrait détecter automatiquement les changements. Cependant, il y a des situations où la compilation échoue si l'on ré-utilise le dossier build, typiquement cela se produit si l'on passe d'une branche vers une autre très différente. Si cela arrive, simplement effacer le dossier build puis procéder selon les étapes de la section "Make".