Travailler sur une version compilée de darktable sur Linux

Cet article vise à vous expliquer comment compiler ses propres versions de darktable sur votre machine pour profiter très rapidement des dernières versions stables ou pour tester les versions de développement sans risquer de flinguer votre version de tous les jours. :-)

Introduction

Il y a quelques mois de cela, j’ai commencé à compiler mes propres versions de darktable, au début pour pouvoir tester la version de développement et découvrir les futures fonctionnalités et maintenant pour avoir les dernières versions stables dès leur sortie. Actuellement j’ai plusieurs versions sur mon ordinateur : la version 2.7 de développement, appelée master, la version d’Aurélien Pierre pour découvrir son travail de ravalement de façade du logiciel (très prometteur par ailleurs) et la dernière stable (2.6.2 au jour de cet article) pour mon travail de tous les jours. Je prévoie aussi d’installer celle de Rawfiner à l’occasion pour voir ces avancées sur l’amélioration des modules de débruitage. :-)

Dans ce billet je vais rapporter les notes que j’ai prises à mes débuts pour compiler et installer mes propres versions de darktable sur ma machine, ainsi que les différentes mesures de sécurité que j’utilise pour éviter de mélanger les versions et perdre des traitements de photos ou flinguer ma version de production.

Attention :

  • j’utilise la distribution Fedora, si vous en utilisez une autre il est nécessaire d’adapter certains points à votre situation
  • travailler sur des versions compilées peut comporter quelques risques, surtout si vous utilisez déjà une version de darktable installée depuis un dépôt, faites bien attention

Pourquoi utiliser des versions compilées ?

J’y vois plusieurs avantages.

Tout d’abord, comme je l’ai dit il est possible d’installer la version de développement pour pouvoir la tester et rapporter aux développeurs les éventuels bugs pour aider leur travail.

Ensuite, il est courant que les versions de darktable dans les dépôts des distributions Linux arrivent bien après la sortie officielle d’une nouvelle version, utiliser une version compilée chez soi permet d’avoir beaucoup plus rapidement les dernières versions. Par exemple, la version 2.6.0 de darktable est sortie le 25 décembre 2018 et beaucoup de distributions basées sur Debian (Ubuntu, Mint, etc.) sont encore sur la version 2.4.4 à ce jour…

On m’a aussi dit sur les salons de discussion que les versions compilées étaient optimisées pour la machine et donc plus rapides. Je n’ai pas senti jusqu’à maintenant une réelle différence mais c’est possible.

Enfin, simplement par curiosité si vous voulez jouer sur les derniers modules en cours de développement. :-)

Prérequis de sécurité

Afin de pouvoir travailler sur différentes versions de darktable sur une même machine, il est nécessaire de respecter quelques points très importants :

  1. n’utilisez pas les mêmes dossiers de photos pour plusieurs versions, en effet, les fichiers .xmp liés aux traitements des photos ne sont pas toujours compatibles entre les versions de développement (2.7.x) et stables (2.6.x actuellement).

solution : sur mon ordinateur j’ai plusieurs dossiers photos, chacun pour sa propre version de darktable. Sur les versions instables je n’utilise qu’un échantillon de photos types pour tester les nouvelles fonctionnalités sur différents aspects : paysage, portrait, gestion du bruit, etc.

  1. utilisez des dossiers de configuration du logiciel différents pour chaque version, cela vous évitera de bousiller votre version stable en mélangeant sa configuration avec celle d’une version instable.

solution : sur mon ordinateur, j’ai un dossier ~/.config/darktable/ pour ma version stable de production (où sont toutes mes photos) et un dossier ~/.config/darktable_dev/ pour la version de développement.

  1. faites des backup, toujours, tout le temps, partout, plein de fois…

solution : sur mon ordinateur, je fais des sauvegardes régulièrement. ;-)

Installation des dépendances

Avant de télécharger et compiler darktable, il faut tout d’abord s’assurer à avoir toutes les dépendances nécessaires au logiciel. Sur Fedora voilà la liste :

# dnf install git make cmake gcc-c++ intltool gtk3-devel libxml2-devel lensfun-devel librsvg2-devel sqlite-devel libcurl-devel libjpeg-turbo-devel libtiff-devel lcms2-devel json-glib-devel exiv2-devel pugixml-devel libxslt osm-gps-map-devel libsoup-devel libgphoto2-devel OpenEXR-devel libwebp-devel flickcurl-devel openjpeg-devel libsecret-devel GraphicsMagick-devel osm-gps-map-devel colord-devel colord-gtk-devel cups-devel SDL-devel

Pour les autres distributions, je vous invite à voir ce wiki.

Installation de la version master (version 2.7 instable)

Téléchargement du dépôt git de darktable

Maintenant que tout est bien installé, il faut aller chercher le code source de darktable sur Github. Dans mon cas, j’ai opté de télécharger le code dans ~/home/nicolas/darktable_dev/. Vous pouvez choisir de les placer ailleurs ceci dit.

$ cd /home/nicolas/
$ git clone https://github.com/darktable-org/darktable.git darktable_dev/
$ cd darktable_dev/

Compilation de la version master

Pour initier la compilation voilà les commandes à faire :

$ git submodule init
$ git submodule update

En regardant le fichier build.sh, on voit que la compilation va placer les fichiers du logiciel dans /opt/darktable/ par défaut. Ayant plusieurs versions dans /opt/ sur ma machine, j’ai décidé de reprendre la même notation que pour le code source pour éviter de me mélanger les pinceaux. La commande --prefix permet de personnaliser la destination de la compilation.

La compilation se fait donc par cette commande :

$ ./build.sh --prefix /opt/darktable_dev/ --build-type Release

La commande devrait durer une bonne minute. Une fois terminé elle devrait vous proposer la commande suivante à taper :

# cmake --build "/home/nicolas/darktable_dev/build" --target install -- -j4

Notez que celle-ci se fait via le compte root.

Lancement de la version compilée

Désormais, vous avez la version compilée de darktable 2.7 (développement), pour la lancer il faut taper la commande suivante :

$ /opt/darktable_dev/bin/darktable --configdir /home/nicolas/.config/darktable_dev/

Attention Ici il est très important de bien définir un --configdir ici, et ce à chaque démarrage, sinon le logiciel utilisera par défaut le dossier de votre version déjà installée et probablement tout casser dessus, ce qui pourrait être gênant.

Pour plus de sécurité sur mon ordinateur et éviter tout problème, j’ai créé un lanceur spécifique dans KDE avec un logo différent qui lance automatiquement cette commande.

Installation d’une version stable (2.6.2 ici)

J’ai décidé il y a quelque temps de passer ma version de prod (là où j’ai toutes mes photos) aussi sur une version compilée. La raison est simple : bien que les dépôts Fedora soient relativement vite à jour, il y a toujours un délai de quelques semaines entre la publication de la version officielle et la disponibilité du logiciel sur les dépôts. Dans le cas de la version 2.6.2, il était difficile d’attendre plus longtemps à cause du bug de filmic sur la 2.6.1. J’ai donc décidé de migrer sur ma propre version compilée. :-)

La démarche est quasiment la même que pour la version de développement, à quelques différences près que je vais présenter ici.

Dans mon cas, les dossiers de travail sont les suivants :

/home/nicolas/darktable/
/home/nicolas/.config/darktable/
/opt/darktable/

Compilation de la version

Le téléchargement se fait de la même façon que précédemment.

Une fois dans le dossier du code source, il est possible de voir toutes les versions stables disponibles par la commande suivante :

$ git tag
release-2.0.0
release-2.0.1
release-2.0.2
release-2.0.3
release-2.0.4
release-2.0.5
release-2.0.6
release-2.0.7
release-2.0rc1
release-2.0rc2
release-2.0rc3
release-2.0rc4
release-2.1.0
release-2.2.0
release-2.2.0rc0
release-2.2.0rc1
release-2.2.0rc2
release-2.2.0rc3
release-2.2.1
release-2.2.2
release-2.2.3
release-2.2.4
release-2.2.5
release-2.3.0
release-2.4.0
release-2.4.0rc0
release-2.4.0rc1
release-2.4.0rc2
release-2.4.1
release-2.4.2
release-2.4.3
release-2.4.4
release-2.5.0
release-2.6.0
release-2.6.0rc0
release-2.6.0rc1
release-2.6.0rc2
release-2.6.1
release-2.6.2
release-2.7.0
release0.4

Note : la liste étant très longue, j’ai retiré volontairement toutes les versions inférieures à la 2.0.0, celles-ci n’étant pas particulièrement utiles pour 99,999 % des gens. :-)

Le choix de la version à compiler se fait alors par la commande suivante :

$ git checkout release-2.6.2

La suite est la même que pour la version master, en veillant bien à vérifier les noms de dossiers :

$ git submodule init
$ git submodule update
$ ./build.sh --prefix /opt/darktable/ --build-type Release
# cmake --build "/home/nicolas/darktable/build" --target install -- -j4

Mises à jour des versions compilées

Dans les deux cas de figure, la méthode à suivre pour mettre à jour une version compilée est la même, voilà mes commandes pour la version master :

$ cd /home/nicolas/darktable_dev/
$ git pull
$ git submodule update
$ ./build.sh --prefix /opt/darktable_dev/ --build-type Release
# cmake --build "/home/nicolas/darktable_dev/build" --target install -- -j4

Il suffit alors de relancer votre logiciel pour tourner sur la dernière version. :-)

Il est possible qu’au lancement, darktable vous prévienne que la base de données a été mise à jour et vous propose de faire une sauvegarde de celle-ci avant de l’ouvrir. À vous de choisir, perso, vu que c’est sur une version que je considère instable avec peu de photos dessus, je ne le fais pas car je n’ai rien d’important à perdre.

Sources et remerciements

Pour plus de détails, je vous invite à voir les wiki de darktable sur sa compilation :

Merci aux développeurs pour votre travail formidable et votre aide sur Framateam pour m’avoir permis de compiler chez moi le logiciel. <3

Si vous souhaitez rejoindre/aider la communauté voilà quelques liens. ;-)