English version available(en)

Réunir les sources

Tout d'abord, avant de compiler quoi que ce soit, vous devrez vraiment avoir quelque chose à compiler. Les sources de Blender sont disponibles grâce à SVN. Dans ce didacticiel, nous verrons comment compiler Blender à partir des sources SVN ; les sources SVN sont mises à jour régulièrement, pratiquement sur une base quotidienne. Parfois, quelques fonctionnalités sont cassées, parfois non. Les compilations SVN devraient être considérées comme des logiciels Beta, réservées aux tests plutôt qu'à la production.

Besoin de quelques notions de base avant de démarrer?
Rappelez-vous qu'en toute occasion Wikipedia est votre ami.
Scons : http://fr.wikipedia.org/wiki/SCons
Make : http://fr.wikipedia.org/wiki/Make
SVN (Subversion) : http://fr.wikipedia.org/wiki/Subversion_%28logiciel%29
Crontab : http://fr.wikipedia.org/wiki/Crontab
Patch : http://fr.wikipedia.org/wiki/Patch_%28informatique%29

Récupérer les sources

Vous devrez installer le paquet subversion avant de continuer, en utilisant Synaptic, Adept ou n'importe quel Gestionnaire de Paquets que vous utilisez habituellement.

Ensuite vous créez dans votre /home un répertoire dans lequel les sources seront placées. Par exemple :
$ mkdir sources
$ mkdir svn-blender
$ cd ~/sources/svn-blender

Subversion va récupérer les sources SVN de Blender grâce à cette ligne, et les stocker dans le répertoire courant :
$ svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/blender

Et si vous souhaitiez compiler une version optimisée de la version officielle de Blender?
Le code source est disponible à partir de cette page : http://www.blender.org/download/source-code/
Vous pouvez les télécharger et exécuter Scons et/ou Make à partir du répertoire où vous les avez mis, tout comme dans ce didacticiel. Pensez à optimiser votre compilation en utilisant les CCFLAGS, CXXFLAGS, et CPPFLAGS dans le fichier user-config.py, et vous devriez obtenir de notables améliorations de performance.

Appliquer des patches au code source

Avant de procéder à la compilation, vous souhaiterez peut-être ajouter à Blender quelques fonctionnalités si expérimentales qu'elles ne figurent pas encore dans le SVN! Quelques exemples de tels patches, parmi les plus populaires au moment de l'écriture, sont :

Avant toute chose, vous devriez installer le paquet patch en utilisant Synaptic, Adept ou n'importe quel Gestionnaire de Paquets que vous utilisez habituellement. Ensuite, pour appliquer un patch, assurez-vous d'être dans le répertoire racine des sources de Blender :
$ cd ~/sources/svn-blender
puis utilisez la commande suivante, avec nom_du_patch étant le nom du fichier contenant le patch :
$ patch -p0 < nom_du_patch
Si vous avez besoin de restaurer les sources d'avant le patch, vous pouvez utiliser la commande suivante : $ patch -p0 -R < nom_du_patch

Compiler Blender

Si vous n'avez jamais compilé Blender précédemment, le mieux pour vous est probablement d'essayer sans le support pour ffmpeg, dans un premier temps, en utilisant Scons. Si vous y parvenez, le petit pas supplémentaire pour obtenir le support de ffmpeg grâce à Make ne sera pas très douloureux. Si vous êtes déjà à l'aise avec toutes ces histoires de compilation, vous pouvez commencer avec Make puis poursuivre avec Scons dès que le support ffmpeg a été compilé.

utiliser Scons

Ce didacticiel est orienté pour Scons. Vous devriez installer le paquet scons (ainsi que le paquet build-essential) avant de continuer, en utilisant Synaptic, Adept ou n'importe quel Gestionnaire de Paquets que vous utilisez habituellement. Vous aurez également besoin d'un fichier de configuration pour ordonner à Scons les options à compiler, avec les optimisations nécessaires. Le fichier user-config.py suivant est basé sur celui fourni sur http://tuxicoman.blogspot.com/2007/05/compiler-blender.html, mais par défaut désactive la fonctionnalité ffmpeg. J'ai seulement reproduit le premier bloc de lignes, les reste étant conforme à l'origine :

WITH_BF_FFMPEG = 'false' # -DWITH_FFMPEG

BF_FFMPEG = '/usr'
BF_FFMPEG_INC = '${BF_FFMPEG}/include'
BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
BF_FFMPEG_LIB = 'avformat avcodec avutil xvidcore ogg vorbis'
WITH_BF_OPENAL = 'true'
WITH_BF_GAMEENGINE='true'
WITH_BF_VERSE='true'
BF_PYTHON_VERSION = '2.4'

Quelques commentaires :

  • WITH_BF_FFMPEG = 'false' : ffmpeg ne peut pour l'instant pas être compilée en utilisant Scons. Nous verrons plus tard comment combiner l'usage de Scons et de Make pour atteindre nos objectifs.
  • BF_PYTHON_VERSION = '2.4' : Si vous avez une distributions récente, vous devriez certainement spécifier '2.5' ici. Mais ma Kubuntu 6.06 LTS est toujours basée sur la version 2.4 de Python.
  • CCFLAGS, CXXFLAGS, et CPPFLAGS : ces flags prennent en compte le type de votre processeur pour l'optimisation de votre compilation. Vous pouvez gagner en performance et en vitesse de calcul lors du rendu avec une compilation bien optimisée.

Mise à jour du 30-Sept-2007:
Il est désormais possible de compiler le support de ffmpeg grâce à Scons. Afin d'y parvenir, commenez par supprimer ou renommer le fichier config.mak dans extern/ffmpeg et ensuite modifier votre user-config.py comme suit:
WITH_BF_FFMPEG = 'true'
BF_FFMPEG = "#extern/ffmpeg"
BF_FFMPEG_INC = '${BF_FFMPEG}/include'
BF_FFMPEG_LIBPATH = '${BF_FFMPEG}/lib'
BF_FFMPEG_LIB = ''

ffmpeg devrait alors tranquillement être compilé avec Scons. Suivez ce lien pour plus d'informations.

la compilation est démarrée grâce à cette simple ligne :
$ scons

Les ordinateurs à coeurs multiples sont désormais courants. Si vous avez un tel ordinateur, vous accélèrerez le processus de compilation en disant à Scons le nombre de coeurs disponibles. Par exemple, pour un ordinateur à double-coeur :
$ scons -j2

il est très vraisemblable que la compilation s'arrêtera bientôt sur un message d'erreur. C'est dû au fait que Blender dépend de pas mal de librairies de développement. Il vous faudra probablement installé quelques paquets supplémentaires, et recommencer la compilation à quelques reprises. Les principales librairies de développement qui devraient être installées sont :

  • python2.4-dev (ou python2.5-dev sur les distributions récentes)
  • libjpeg62-dev
  • libpng12-dev
  • zlib1g-dev
  • libopenal-dev
  • libalut-dev
  • libsdl1.2-dev
  • libtiff4-dev
  • libopenexr-dev
  • libxi-dev
  • libfreetype6-dev
  • libxvidcore4-dev (en fonctions des librairies ffmpeg spécifiées dans user-config.py)
  • libogg-dev (en fonctions des librairies ffmpeg spécifiées dans user-config.py)
  • libvorbis-dev (en fonctions des librairies ffmpeg spécifiées dans user-config.py)
  • ftgl-dev
  • libsmpeg-dev

plus peut-être quelques autres.

Vous vous sentez perdu? Vous avez besoin d'aide?
Ne vous inquiétez pas, vous n'êtes pas seul, il y a plein de personnes sympathiques prêtes à vous aider :

[Périmé] Utiliser Make pour compiler ffmpeg

Ainsi que nous l'avons dit plus tôt, vous ne pouvez pas, pour l'instant, compiler le support ffmpeg pour Blender avec seulement Scons. Vous devrez vous reposer sur Make pour cette tâche :

$ cd ~/sources/svn-blender
$ make

devrait faire l'affaire. Vous pouvez interrompre la compilation, en utilisant [Ctrl]+[C] dès que make en finit avec ffmpeg. Pour vous en assurer, soit vous attendez patiemment que la compilation se termine naturellement, soit vous scrutez en temps réel les rapports de compilation, à la recherche d'une ligne qui ressemblerait à :
Install /home/olivier/compil/blender/obj/linux-glibc2.3.6-i386/extern/ffmpeg/libavutil/libavutil.a

A ce moment, vous sauvrez que ffmpeg a été correctement compilé, et vous trouverez le nouveau répertoire suivant :
/home/olivier/compil/lib/linux-glibc2.3.6-i386/ffmpeg
en même temps que deux autres répertoire, include/ et lib/.

Maintenant, vous pouvez recommencer la compilation de Blender en utilisant Scons, et tout devrait être compilé comme il faut. Au cours de cette dernière étape, n'oubliez pas de modifier votre fichier user-config.py :
WITH_BF_FFMPEG = 'true'
BF_FFMPEG = '/home/olivier/compil/lib/linux-glibc2.3.6-i386/ffmpeg' (cette ligne doit correspondre exactement au répertoire ffmpeg créé par make)

Et maintenant?

Si tout s'est passé comme prévu, vous devriez trouver un nouveau répertoire nommé install... Les binaires nouvellement complés de blender peuvent y être trouvés, accompagné des fichiers standards qui sont livrés avec chaque version officielle :
$ cd ~/sources/svn-blender/install/linux2/blender

Evidemment, vous pouvez maintenant profiter des toutes dernières versions de Blender. Mais il y a quelques autres choses que vous pouvez faire :

partagez vos compilations et optimisations!

Vous pouvez partager vos binaires avec les autres, si vous le souhaitez. Il y a différents endroits où vous pouvez les partager. La plupart est répertoriée dans l'article suivant, sur Blendernation : Blender Downloads.

Restez à jour!

Maintenant que vous avez compilé votre propre binaire une fois, il est très facile de le faire et refaire, sur une base régulière. Intéressé par une compilation hebdomadaire de Blender? Vous avez juste à lancer, une fois par semaine, la commande suivante :
$ cd ~/sources/svn-blender && svn up && scons

et vous pouvez même utiliser Crontab pour automatiser la chose.