Depuis longtemps, je gueulais sur le multi-fenêtrage de GIMP que je trouvais chiant à souhait (en plus des autres problèmes inhérents à GIMP). Je n’en pouvais plus de la non-gestion des groupes des calques, qui est pourtant une option pratiquement de base dans Photoshop. Quand un graphiste m’envoyait un PSD, GIMP se plantait lamentablement sur le z-index des différents calques… En bref, il me fallait la version de développement de GIMP qui résolvait une bonne partie de mes problèmes (pas tous malheureusement).
Mon côté fainéant s’est tourné directement vers une solution « toute prête ». Celle de Matthaeus, alias matthaeus123, qui consistait a insérer son repository dans votre source-list (non, ce n’est pas sexuel)
Autant vous le dire rapidement: Matt boit. Ou alors il se drogue. Tout du moins, il doit faire l’un ou l’autre voire les deux. La version compilée par ses soins est tout simplement inutilisable en production ET en développement (en plus de mettre le bordel dans les librairies déjà installées sur votre système qui vous obligerons soit a réinstaller les packages, soit à linker salement, mais passons).
Au début, on se dit que tout va bien, mais dès qu’on dépasse 1 ou 2 calques, dans 1 ou 2 groupes et on effectue quelques menus opérations mineures (genre la sélection), et bien là, c’est le drame: GIMP devient lent, mais leeeeennnt. D’une lenteur telle que le système ne réagit plus pendant quelques secondes.
On va dire que j’étais assez dégoûté par cette version de GIMP. Ok, c’est une version de développement, mais quand même. Mais dans le doute, je me suis dit « si ca se trouve, ce #%$& a oublié de virer les éléments de développements, genre debug & co…« . J’ai bien fait, c’était exactement cela, mais pour cela, il faudra se remonter les manches et compiler soit-même le GIMP des familles.
Allez, zou, on commence.
Download Dependencies
On prépare un peu le système.
$ apt-get install intltool $ apt-get install python-dev python-gtkglext1 python-gtk2-dev $ apt-get install libgtk2.0-dev libglib2.0 $ apt-get install automake1.10 $ apt-get install ruby $ apt-get install openexr libpng-dev $ apt-get install libopenexr-dev libopenexr libopenexr6 $ apt-get install libjasper-dev libjasper1 $ apt-get install libgdk-pixbuf2.0-dev libgdk-pixbuf2.0-0
Download GEGL et BABL
GIMP nécessite les librairies GEGL et BABL
$ git clone git://git.gnome.org/babl Initialized empty Git repository in /tmp/toto/babl/.git/ remote: Counting objects: 3692, done. remote: Compressing objects: 100% (994/994), done. remote: Total 3692 (delta 2977), reused 3252 (delta 2677) Receiving objects: 100% (3692/3692), 705.61 KiB | 272 KiB/s, done. Resolving deltas: 100% (2977/2977), done.
On lance la configuration pre-compilation:
$ ./autogen.sh --prefix=/usr/local --enable-mmx --enable-sse \ --disable-option-checking --disable-libtool-lock \ --disable-dependency-tracking
Notez qu’on prépare le paquetage pour une installation future dans /usr/local
A la fin de la configuration, n’ayez pas le geste habituel du « make », nous allons laisser cela à checkinstall. (sans cela, le travail de checkinstall va être hasardeux)
Pour informations, checkinstall est un programme qui se tapera la compilation ET la génération d’un paquetage lié à votre système. Cela évite d’avoir des fichiers qui s’installent partout et sans contrôle du gestionnaire de paquetages.
Même si checkinstall peut-être lancé sans être root, je vous conseille un petit sudo pour éviter toute frayeur, notamment pour la seconde partie. Sans cela, ce dernier trouvera des erreurs mineures, genre des changements de droit impossible et écartera les fichiers sans raison apparente et de façon assez aléatoire.
$ sudo checkinstall --install=no --pkgname=libbabl --pkgversion=0.1.3 --pkgrelease=1 --pkggroup=libs -y
Durant mes premières compilations-tests, j’ai rencontré des problèmes avec checkinstall notamment sur la création des répertoires. Si vous rencontrez une erreur de ce type, n’hésitez pas a les créer à la main et de relancez la procédure.
A la fin, on vérifie le paquetage généré:
$ dpkg --field ./libbabl_0.1.3-1_i386.deb Package: libbabl Priority: extra Section: libs Installed-Size: 1852 Maintainer: prae@arsenalgear Architecture: i386 Version: 0.1.3-1 Depends: Provides: libbabl Conflicts: Replaces: Description: Package created with checkinstall 1.6.2 $ dpkg --contents ./libabl_0.1.3-1_i386.deb < < plein de fichier dont notamment les librairies (.so) et les headers (.h) >>
Validé, on installe le paquetage dans le système:
$ sudo dpkg -i ./libbabl_0.1.3-1_i386.deb
On passe à la librairie GEGL (dépendante de la librairie BABL)
$ git clone git://git.gnome.org/gegl Initialized empty Git repository in /tmp/toto/gegl/.git/ remote: Counting objects: 33001, done. remote: Compressing objects: 100% (8245/8245), done. remote: Total 33001 (delta 26804), reused 30095 (delta 24634) Receiving objects: 100% (33001/33001), 23.32 MiB | 153 KiB/s, done. Resolving deltas: 100% (26804/26804), done.
On définit maintenant l’environnement avant la compilation. Vu que la librairie BABL se trouve dans /usr/local, il se peut que vous n’ayez pas /usr/local/lib dans votre environnement ldconfig.
On passe directement en root pour préparer l’environnement pour checkinstall qui arrivera plus tard (rappel: on peut le faire aussi en utilisateur normal, mais assumez les problèmes de checkinstall après coup)
$ sudo -s # export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib/" # ./autogen.sh --prefix=/tmp/gegl --enable-mmx --enable-sse --disable-glibtest \ --disable-option-checking --disable-libtool-lock \ --disable-dependency-tracking [...] Building GEGL with prefix=/tmp/gegl Optional features: GEGL docs: yes Build workshop: no Build website: no (asciidoc not found) SIMD: sse:yes mmx:yes Multi threading: Optional dependencies: asciidoc: no (asciidoc not found) enscript: no (enscript not found) GIO: yes GTK+: yes Ruby: yes Lua: no (usable lua not found) Cairo: yes Pango: yes pangocairo: yes GDKPixbuf: yes JPEG: yes PNG: yes OpenEXR: yes rsvg: no (usable librsvg not found) SDL: no (SDL library not found) openraw: no (openraw library not found) Jasper: yes graphviz: yes avformat: yes V4L: yes spiro: no (usable SPIRO library not found) EXIV: no (exiv2 library not found) umfpack: no (usable umfpack library not found)
Vérifiez les formats supportés. Si certains formats vous inspirent mais en « no », installez les librairies adéquates.
# checkinstall --install=no --pkgname=libgegl --pkgversion=0.1.3 \ --pkgrelease=1 --pkggroup=libs -y
Si la compilation de GEGL plante à cause de la librairie BABL non trouvé, vous avez surement oublié de modifier votre LD_LIBRARY_PATH correctement.
Si vous en êtes sûr et certain, vérifiez que vous n’avez pas modifié la variable LD_LIBRARY_PATH en tant qu’utilisateur, puis avoir lancé checkinstall en « sudo ». Si c’est le cas, un petit sudo avant, redéfinition de LD_LIBRARY_PATH, et dans la même session root, relancer checkinstall
Sinon, vérifiez bien le chemin qui mêne vers votre librairie BABL (avez-vous installé le package ? ;-)
Compilation de GIMP 2.4.7
Vous avez soit le choix du dépositaire de source, soit directement le tarball 2.4.7.
- Version Source Tarball :
$ wget ftp://ftp.gimp.org/pub/gimp/v2.7/gimp-2.7.1.tar.bz2
$ bunzip gimp-2.7.1.tar.bz2
$ tar -xvf gimp-2.7.tar
$ ./configure --prefix=/usr/local/gimp-2.7/ --enable-binreloc-threads --enable-mmx --enable-sse
- Version GIT :
$ git clone git://git.gnome.org/gimp )
$ export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib/"
$ ./autogen.sh --prefix=/usr/local/gimp-2.7-201110/ --enable-mmx --enable-sse --disable-glibtest --disable-option-checking --disable-libtool-lock --disable-dependency-tracking --enable-binreloc-threads --enable-mmx --enable-sse --disable-gtk-doc
$ ./configure
[...] Extra Binaries: gimp-console: yes gimp-remote: no (not enabled) Optional Features: D-Bus service: no Language selection: yes Optional Plug-Ins: Ascii Art: no (AA library not found) Help Browser: no (WebKit not found) LCMS: no (lcms not found or unusable) JPEG: yes JPEG 2000: yes MNG: no (MNG header file not found) PDF: Using PostScript plug-in (libpoppler not found) PNG: yes Print: yes PSP: yes Python: yes Script-Fu: yes SVG: no (librsvg not found) TIFF: yes TWAIN (MacOS X): no TWAIN (Win32): no URI: yes (using GIO/GVfs) Windows ICO yes WMF: no (libwmf not found) XJT: yes X11 Mouse Cursor: yes XPM: no (XPM library not found) Plug-In Features: EXIF support: no (libexif not found or too old) Optional Modules: ALSA (MIDI Input): no (libasound not found or unusable) Linux Input: yes (HAL support: no) DirectInput (Win32): no Color Correction: no (lcms not found or unusable) Soft Proof: no (lcms not found or unusable)
Afin de garder l’ancienne version de GIMP, on l’installera dans /usr/local.
Comme d’habitude, si vous avez envie de plus d’options, installez les librairies adéquates.
$ sudo checkinstall --install=no --pkgname=gimp --pkgversion=2.7.1 \ --pkgrelease=1 --pkggroup=graphics -y
Sitôt terminé, on vérifie le paquetage et on l’installe
Et enfin, on fait joujou avec le nouveau bébé:
$ /usr/local/gimp-2.7/bin/gimp-2.7
*Enjoy la nouvelle version sans lag…*