jens.hatlak.de / Über mich    
Atari   PHP    
Dreamweaver Manual   Linux    
Akronyme   Mozilla / Mozilla Dualboot  
  SciTE   Mozilla bauen  
This page in English This page
in English
  FASTA-Parser   Mozilla installieren  
Ich spreche...   Bookmark Indicator  
    Custom Buttons  
    MailNews Status Icons  

Do you prefer reading pages in English? This page is also available in English.

SeaMonkey selbst gebaut

SeaMonkey Logo Unter Linux und allgemein unter Unix-Derivaten gehört es einfach dazu, ab und zu mal etwas selbst zu bauen. Warum dann nicht gleich was Großes? Mozilla zum Beispiel. Im Folgenden erläutere ich das Bauen von SeaMonkey, der ehemaligen Mozilla Application Suite.

Warum? Vielleicht weil es Spaß macht an der "Bleeding Edge" zu sein, dabei aber auch einige Schalter zu betätitgen, die in den Nightlies von mozilla.org teilweise anders gesetzt sind, etwa Xft, GTK 2, SVG und Xinerama. Außerdem kann man Optimierung aktivieren, was meist ein deutlich schnelleres Programm zum Ergebnis hat. Ab und zu will man vielleicht auch mal ein Debug-Build bauen, um einen anständigen Backtrace (bt) für einen Bug-Report zu bekommen. Das kostet allerdings richtig Plattenplatz (dazu später mehr).

Unter Sparc/Solaris kommt noch hinzu, dass die Nightlies von mozilla.org meist mit Xprint-Unterstützung gebaut sind, was nicht jeder so haben will. Auch macht es hier Sinn mit Suns Forte-Compiler (cc) zu bauen, weil man nur dann bestimmte Plugins nutzen kann.

Unter Windows dagegen stellt sich diese Frage nur, wenn einem die fertigen Nightly Builds nicht gefallen (Optimierung, Features, Patches). Hier muss man aber mit MSVC bauen, damit auch alle Plugins funktionieren. Wer das nicht unbedingt braucht, kann natürlich auch mit dem GCC bauen; wie das geht, kann man auf den am Ende dieser Seite verlinkten Seiten nachlesen.

Anforderungen

In erster Linie braucht man eine funktionierende Bauumgebung, das sogenannte Build Environment. Dazu gehört ein Compiler, einige spezielle Werkzeuge (unter Windows insbesondere MozillaBuild) und natürlich viel Plattenplatz — nicht nur für die Sourcen, sondern auch zum Bauen.

Wie man Compiler und Tools installiert, beschreibe ich hier nicht. Unter Linux ist das je nach Distribution unterschiedlich, mindestens muss jedoch ein Compiler (z.B. gcc und g++) sowie die Libraries des verwendeten Toolkits (z.B. GTK2) und IDL, jeweils mit den passenden Development-Paketen, installiert sein. Unter Windows muss man sich zunächst entscheiden, ob man mit der GNU Compiler Collection (GCC) oder Microsofts Compilern (MSVC) arbeiten will. Einige der Voraussetzungen werden auf den am Ende der Seite verlinkten Webseiten besprochen.

Um den erforderlichen Plattenplatz zu verteilen, sollte man sich der Variable MOZ_OBJDIR bedienen. Sie kann dazu verwendet werden, ein gemeinsames Basisverzeichnis für die Sourcen verschiedener Mozilla-Applikationen zu benutzen; jede Applikation bekommt dann ihr eigenes OBJDIR zum Bauen. Den Inhalt des OBJDIR sollte man aber vor jedem neuen Bauen löschen, da es sonst zu Fehlern beim Bauen kommen kann, die sonst nicht auftreten (z.B. Bug 330571). Außerdem muss immer ein UNIX-Pfad angegeben werden; unter Windows also z.B. /c/mozilla-src/seamonkey-objdir statt C:\mozilla-src\seamonkey-objdir.

Build Environment

Wenn man wirklich aktuelle Sourcen haben will (z.B. weil gerade erst ein wichtiger Bugfix ins Repository eingegangen ist), holt man sich diese vom mozilla.org Mercurialserver. SeaMonkey selbst befindet sich im Repository comm-central, zusammen mit Thunderbird und dem Calendar-Projekt. SeaMonkey benutzt auch viele Teile des Firefox-Backends (z.B. die Rendering-Engine Gecko) aus dem Repository mozilla-central, dieses wird jedoch durch die SeaMonkey-Skripte automatisch mit ausgecheckt.

Um das Holen der Sourcen, Bauen, Installieren und Patchen zu vereinfachen, habe ich einige Skripte geschrieben. Das Ganze ist so weit modularisiert, dass sich Windows und Linux auf einem Dual-Boot-System die eigentlichen Skripte teilen. Lediglich einige Pfade werden je nach Betriebssystem unterschiedlich gesetzt.

Die Repositorys müssen nur initial komplett geholt werden, was mittels mozhgpull erledigt wird (belegt etwa 1,3 GB Platz auf NTFS). Danach reicht ein mozupdate. mozmake baut SeaMonkey, mozinst installiert das Resultat und mozbuild macht alles zusammen (inklusive Aufräumen vor dem Bauen). Mit SM ruft man das Programm schließlich auf. Alle Skripte unterstützen den optionalen Parameter "unattended", der bewirkt, dass im Normalfall keine Rückfragen gestellt werden. mozbuild unattended oder kurz MBU baut und installiert also ohne Rückfragen einen aktuellen Trunk-SeaMonkey.

Build-Einstellungen

Die eingangs erwähnten Schalter befinden sich für gewönlich in der Datei .mozconfig, die man entweder in seinem $HOME oder einem beliebigen anderen Verzeichnis platziert, wobei in letzterem Fall der volle Pfad per Environment-Variable MOZCONFIG angegeben werden muss. Ersteres hat den Vorteil, dass man sie nicht ständig herum kopieren muss; letzteres, dass man z.B. SeaMonkey und Firefox bauen kann, ohne sich die Datei im $HOME kaputt zu schießen. Beispiele für Windows und Linux befinden sich bei meinen Skripten.

Windows

Unter Windows gibt es einige Unterschiede. Hier kommt mittlerweile ein eigenes Build Environment namens MozillaBuild zum Einsatz. Man kann sich einfach das Basispaket herunterladen und loslegen (gesetzt den Fall, dass die Compilersuite bereits eingerichtet wurde). Näheres erläutert die Seite Windows Build Prerequisites.

Auch Compiler- und Linker-Flags sowie Configure-Optionen sind plattformspezifisch — das meiste kann man in der .mozconfig einstellen.

Essentiell ist jedoch die Wahl der Compilersuite. Dabei wird nur die kommerzielle Variante (Mircosofts Visual Studio) offiziell unterstützt; bei GCC, MSVC Free und Visual Studio Express hingegen ist man nicht nur auf sich gestellt bzw. auch Foren und Mailinglisten angewiesen, sondern hat auch mit teilweise großen Schwierigkeiten zu kämpfen. Das fängt beim Setzen der richtigen Environment-Variablen an und geht teilweise so weit, dass man zu überhaupt keinem Ergebnis kommt, da hier und da Libraries in den kostenlosen Varianten einfach weg gelassen wurden.

Um diesem Frust aus dem Weg zu gehen, baue ich unter Windows mit Visual Studio 8. Die von mir bereit gestellten Skripte sind daher auch genau für diese Version optimiert.

Noch Fragen?

Bei Fragen stehe ich natürlich gerne zur Verfügung. Ich kann zwar nichts garantieren, aber allein die Tatsache, dass ich es geschafft habe, SeaMonkey aus den Quellen heraus zu bauen und erklären zu können, wie, sagt doch eigentlich schon alles. ;-)

Links

Bauanleitungen

Immer aktuell: Gefixte Bugs

 

Valid HTML 4.0!
Jens Hatlak
24. Dezember 2008