Auteur : Johann Brochier (Scoub_Lite)

Date : Septembre 2006

Compilation de Firefox 1.5.0.6 Sol10-Sparc

Sommaire

  1. Introduction
  2. Création de l'environnement de développement (sous JDS - Java Desktop System)
  3. Récupérer les sources de Firefox
  4. Configurer les options de compilations de Firefox
  5. Compilation
  6. Création du tarball

1. Introduction

La compilation de sources pour Solaris/Sparc est rendue compliquée par la présence de nombreux outils de développement et de librairies pas toujours compatibles entre eux.
L'avantage de posséder tous ces outils permet la compilation de plusieurs manières (optimisé pour Sparc, compatibilité GNU, etc...) mais attention aux mélanges.
Pour cette raison, il est nécessaire de cloisonner ces outils en adaptant les PATH de l'environnement de développement.
Sun nous fourni gratuitement tous les outils nécessaires pour le développement et ces outils sont :
Le compagnon CD, fourni avec Solaris 10. Il contient les outils GNU, librairies complémentaires et il est installé par défaut dans /usr/sfw. Dans /opt/sfw, vous trouverez également des outils GNU mais encore plus anciens ;) .
SunStudio 11, en téléchargement sur le site de Sun. il contient (entre autres), l'IDE (interface graphique de développement), les compilateurs optimisé Sun, etc... et il est installé par défaut dans /opt/SUNWspro

2. Création de l'environnement de développement

Je conseille la création d'un utilisateur dédié au développement.
Ouvrir un terminal et passer en root

$ su root

Création d'un utilisateur nommé "dev"

$ adduser -d /export/home/dev -m -s /bin/bash -c "Utilisateur de dev" dev

ne pas oublier d'attribuer un mot de passe à cet utilisateur

$ passwd dev devpassword

Ensuite, nous profitons d'être connecté en root pour adapter le PATH des librairies.
Pour cela, nous utiliserons l'utilitaire crle puisque l'utilisation de la variable LD_LIBRARY_PATH est hautement déconseillée.
Pour visualiser le PATH actuel, lancez simplement crle dans le terminal.
Pour adapter le nouveau PATH tapez :

$ crle -c /var/ld/ld.config -l /lib:/usr/lib:/usr/sfw/lib

(Attention cette commande peut rendre inutilisable le système en cas d'erreur)
Nota : L'ordre du PATH des librairies est très importante au même titre que la PATH des binaires que nous verrons plus loin. Le système va parcourir dans cet ordre les librairies pour trouver celles qu'il a besoin. Si plusieurs librairies sont identiques (pas forcement les versions), il s'arrêtera sur la première trouvée.
En retapant crle, vous visualiserez la nouvelle configuration de PATH des librairies du système (valable pour tous les utilisateurs du système).
Voilà pour les librairies, passons maintenant aux binaires.
Avec l'installation du compagnon CD et de SunStudio, Sun nous fourni pas moins de trois versions différentes de make :
- make, la version de Solaris
- dmake la version de SunStudio
- gmake la version GNU
Dans le cas de Firefox, il est indiqué que seul le GNU make fonctionne.
plusieurs possibilités s'offrent donc pour utiliser cette version mais j'ai opté pour une manip présentée sur le site de Sun :
Connectez vous avec l'utilisateur "dev"
Créez un répertoire bin à la racine de son HOME

$ mkdir ~/bin

Entrez dans ce répertoire et créez les liens symboliques suivants :

$ cd ~/bin

$ ln -s /opt/SUNWspro/bin/dmake dmake

$ ln -s /usr/sfw/bin/gmake gmake

$ ln -s gmake make

$ ln -s /bin/perl perl5

$ ln -s /usr/ccs/bin/make solaris_make


Cette manip permet de définir facilement la version du make souhaitée.
Adaptons maintenant le PATH des binaires.
Lors de la connexion de l'utilisateur (avec le Shell Bash) sur JDS , le système va lire le fichier ~/.profile de l'utilisateur.
Nous allons le modifier avec les paramètres nécessaires pour le développement :

vi ~/.profile



# This is the default standard profile provided to a user.

# They are expected to edit it to meet their own needs.

MAIL=/usr/mail/${LOGNAME:?}

PATH=/export/home/johann/bin:/usr/bin:/usr/ccs/bin:/opt/SUNWspro/bin:/usr/sfw/bin

MANPATH=/opt/SUNWspro/man:/usr/sfw/man:${MANPATH:=/usr/share/man}

export CC=cc

export CXX=CC

export CFLAGS="-xlibmil"

export CXXFLAGS="-xlibmil -xlibmopt -features=tmplife -norunpath"

export LDFLAGS="-R'\$\$ORIGIN:\$\$ORIGIN/..' -R/usr/sfw/lib -R/opt/sfw/lib"

Il suffit ensuite de se déconnecter/reconnecter au compte "dev".
L'environnement de développement est prêt

3. Récupérer les sources de Firefox

Deux possibilités pour les récupérer sont possibles :
Via cvs ou manuellement en téléchargeant le tarball sur le site de mozilla.
Pour ma part, j'ai préféré le tarball plutôt que cvs. Ce dernier automatise beaucoup de tâches et cette automatisation pose problème sous Solaris puisque nous allons devoir intervenir manuellement à différentes étape de la compilation.
Décompressez l'archive des sources, vous obtiendrez un répertoire mozilla contenant tout ce qu'il faut.

4. Configurer les options de compilations de Firefox

Créer un répertoire qui contiendra l'arborescence de compilation de Firefox (ce répertoire s'appelle OBJDIR).

$ mkdir mozilla/firefox-static

Créez ensuite le fichier de configuration global à la suite mozilla. Dans notre cas (compilation uniquement de Firefox), ce fichier indiquera uniquement le chemin d'accès au fichier de configuration spécifique à Firefox.

création du fichier de conf global :

$ vi mozilla/mozconfig


. $topsrcdir/browser/config/mozconfig

création du fichier de conf Firefox

$ vi mozilla/browser/config/mozconfig


mk_add_options MOZ_CO_PROJECT=browser

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-static

ac_add_options --enable-application=browser

ac_add_options --enable-optimize="-xO3"

ac_add_options --disable-tests

ac_add_options --disable-debug

ac_add_options --enable-xft

ac_add_options --enable-svg

ac_add_options --disable-freetype2

ac_add_options --disable-auto-deps

ac_add_options --disable-tests

ac_add_options --enable-static --disable-shared

ac_add_options --enable-official-branding

ac_add_options --enable-default-toolkit=gtk2

mk_add_options BUILD_OFFICIAL=1

mk_add_options MOZILLA_OFFICIAL=1

Il faut maintenant indiquer à l'environnement où se trouve le fichier de configuration global :

$ export MOZCONFIG=chemin_absolu_vers_mozilla/mozconfig


Remplacez évidemment "chemin_absolu_vers_mozilla" par votre chemin.

5. Compilation

Déplacez-vous dans le répertoire /mozilla/firefox-static (OBJDIR)

$ cd mozilla/firefox-static

Vous pouvez à ce moment là lancer l'interface de développement de SunStudio à partir de ce terminal (pour garder la variable MOZCONFIG) ou dans le terminal.
Je continuerai ce tuto en restant dans le terminal (je suis habitué à vi) mais l'IDE de SunStudio est particulièrement efficace.
Lancez la commande :

$ ../configure

Si tout se passe bien, cette commande va générer (entre autres) le fichier mozilla/config/autoconf.mk
Malheureusement, ce fichier comportera des erreurs sur notre plateforme à cause de quelques bugs (notamment des codages en dur dans les sources de PATH de librairies qui ne correspondent pas à Solaris).
Nous allons donc reprendre manuellement le fichier mozilla/config/autoconf.mk avant de poursuivre

$ vi mozilla/firefox-static/config/autoconf.mk

corrigez la ligne MOZ_CAIRO_LIBS pour avoir ceci :

MOZ_CAIRO_LIBS = -lmozcairo -lmozlibpixman -L/usr/openwin/lib\

-R/usr/openwin/lib -L/usr/sfw/lib -lXrender -lfreetype -lfontconfig

info : les libs Xrender et Freetype2 se trouvent dans /usr/sfw/lib et nous devons rajouter -lfontconfig

info générale : le -L indique le chemin absolu d'accès aux librairies, -l indique le nom de la librairie
En cas de problème lors d'une compilation, cette connaissance est importante pour débugger la compilation. Souvent les erreurs proviennent des librairies (versions ou chemins).
Si lors de la compilation, le compilateur ne trouve pas une librairies, vérifiez la ligne de compilation juste avant la première erreur.
Regardez que les chemins des libs envoyés au compilateur sont correctes. L'utilitaire pkginfo --libs nom_de_librairie vous donne le chemin de la librairie sur votre système.

Un autre fichier comportant une erreur est à éditer : mozilla/firefox-static/browser/app/makefile

$ vi mozilla/firefox-static/browser/app/Makefile

corrigez la ligne XLIBS pour avoir ceci :

LIBS += $(XLDFLAGS) $(XLIBS) -lXft

info : C'est un problème similaire au précédent, la lib Xft contient des fonctions nécessaires lors de la compilaltion du binaire firefox-bin et le makefile généré lors du "configure" ne l'indique pas sur notre plate-forme.
Revenez maintenant dans notre répertoire mozilla/firefox-static et lançez la commande make

$ cd mozilla/firefox-static

$ make

info : le make que nous lançons et en fait le gmake (lien symbolique que nous avons créé dans le HOME/bin)
La compilation se lance et va durer près de 3 heures (Sunblade 1000 750 Mhz mono proc).

6. Création du tarball

A l'issue de cette compilation, nous allons créer le tarball autonome de Firefox. Pour cela, à partir de votre répertoire firefox-static lancez la commande :

$ make -C browser/installer

Cette commande devrait préparer automatiquement le tarball de Firefox mais il y a malheureusement quelques problèmes :
L'archivage et la gestion des droits du tarball par "tar" coince et il manquera quelques fichiers dans le répertoire Firefox.
Nous allons donc ajouter manuellement les fichiers manquants et créer l'archive manuellemment.
La racine du tarball autonome se trouve dans mozilla/firefox-static/dist/firefox

info : Les fichiers manquants sont nécessaires au bon fonctionnement de Firefox en ssl
En ce qui concerne le problème de création automatique du tarball, je ne me suis pas vraiment penché sur le problème.

Ajoutons les fichiers manquants :

$ cd mozilla/firefox-static/dist/firefox

$ cp ../lib/libfreebl* ./

Créons le tarball :

Placez vous dans le répertoire firefox-static/dist

$ cd mozilla/firefox-static/dist

$ tar -cvf firefox.tar firefox

(Optionnel) Compressez firefox.tar avec bzip2 par exemple :

$ bzip2 -z firefox.tar

Et voilà.
Ce tarball contient une version autonome (statique) de Firefox 1.5.0.6 pour Sparc.

Début de page Début de page Début de page

Dernière mise à jour de cette page : Lundi 4 septembre 2006. Version : 1.00
Écrit avec OpenOffice.org 2 et Mozilla Editor sous Solaris 10.

[ Accueil | Editorial | Forums | Petites Annonces | Articles | Téléchargement | Sélection de Liens | Infos Site | ]

AntiRobot