Konfiguracja: Windows XP SP2 x86, Visual Studio 2008 SP1
To drugie podejście do tematu, poprzednie pod Vista x64 zakończyło się porażką, nie mogłem sobie poradzić z błędami, Google też nie pomogło. Tak więc podejście drugie czas zacząć.
Zaglądamy na
Windows Build Prerequisites. Jak widać Firefox 3.0 jest wspierany eksperymentalnie dla VS2008, ale bądźmy dobrej myśli. Pobieramy i instalujemy
Windows SDK. Jest to obraz ISO całego SDK, na stronie zalecają tzw.
web setup. Ponieważ działam na maszynie wirtualnej to dla zaoszczędzenia miejsca zrezygnowałem z dokumentacji i przykładów (2GB mniej i o wiele, wiele szybsza instalacja). Pobieramy i instalujemy
MozillaBuild. Nie zmieniamy miejsca do którego paczka się wypakowuje.
Odpalamy
start-msvc9.bat
by uzyskać dostęp do namiastki konsoli linuksowej. I mamy błąd - nic się nie dzieje. Wstawiamy
pause
gdzie trzeba i możemy po pierwsze zauważyć, że nie jest znajdowana przez
guess-msvc.bat
ścieżka do Windows SDK. Okazuje się, że skrypt współpracuje z jedną słuszną wersją SDK. Zmieniamy dwa wystąpienia
v6.0
na
v6.1
.
Ponawiamy uruchomienie
start-msvc9.bat
. Znowu coś nie tak. Tym razem znowu kombinując z
pause
dochodzimy do wniosku, że coś jest nie tak z całym drugim blokiem zaczynającym się od
if "%VC9DIR%"=="" (
. Choć ten warunek jest fałszywy, czyli wnętrze bloku nie podlega wykonaniu (interpretacji) skrypt się tam gdzieś "wywala". Samo
if "%VC9DIR%"=="" (
nie jest błędne bo wcześniej mamy to samo. Kasujemy ten niepotrzebny i w dodatku błędny kod.
Ponawiamy uruchomienie
start-msvc9.bat.
Udało się.
Na
Windows Build Prerequisites w części mówiącej o błędzie w SDK dla Windows Server 2008 mamy linka do strony z rozwiązaniem problemu. Okazuje się, że instalator niepoprawnie modyfikuje plik
vcvars32.bat
. Jeśli przyjrzymy się naszemu plikowi to okaże się, że też jest błędny, poprawiamy go tak jak
tutaj radzą.
No to jesteśmy na konsoli MSYS. Tutaj znajduje się krótkie wprowadzenie do obsługi takiej konsoli:
Using the MSYS Command Shell in Windows.
Czas na pobranie źródeł. Informacje na ten temat znajdziemy tutaj:
Mozilla Source Code (CVS).
Nie należy zmieniać nazwy w którym umieszczone są źródła w archiwum. Źródła powinny znajdować się w katalogu
mozilla, jeśli chcemy oznaczyć wersję to np. w katalogu
firexox_3_0_8/mozilla, a nie w np.
firefox_3_0_8. Druga ważna sprawa - ścieżka do źródeł nie może zawierać spacji.
Przechodzimy do katalogu w którym chcemy utworzyć katalog
mozilla ze źródłami i wydajemy polecenie:
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r FIREFOX_3_0_8_RELEASE mozilla/client.mk
Listę dostępnych gałęzi mamy tutaj:
CVS Tags, nie mam tam znacznika dla wersji 3.0.8 (na dzień jak pisałem ten tekst), ale łatwo możemy odgadnąć jego postać (w ostateczności zawsze pozostaje nam CVS, skąd możemy się dowiedzieć o wszystkich możliwych znacznikach).
Wydawanie takich poleceń w konsoli MSYS może być męczące, szczególnie, że nie mogłem jej zmusić do współpracy ze schowkiem. Najlepszą metodą jest tworzenie skryptów i ich wywoływanie. Skrypt dla powyższego ma postać:
#! /bin/bash
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r FIREFOX_3_0_8_RELEASE mozilla/client.mk
Ważne by plik ze skryptem miał rozszerzenie
.sh. Skrypt wywołujemy podając jego pełną nazwę wraz z rozszerzeniem.
W ten sposób pobraliśmy skrypt
client.mk specyficzny dla naszej wersji Firefoxa. Samych źródeł nie pobieramy bezpośrednio z CVS, tylko za pomocą tego skryptu. Jednak zanim to zrobimy musimy przygotować plik konfiguracyjny, z które client.mk będzie czerpał wiedzę jak pobierać źródła, kompilować, itp.
Czas na
Configuring Build Options. Tworzymy w katalogu ze źródłami plik konfiguracji za pomocą polecenia:
echo "# My first mozilla config" > .mozconfig
Niestety Windows XP nie pozwoli nam na utworzenie takiego pliku bezpośrednio z eksploratora (Vista tak).
W moim przypadku zawartość tego pliku wygląda tak:
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
ac_add_options --disable-tests
ac_add_options --enable-optimize
W pierwszej linijce dołączamy standardowe opcje dla kompilacji przeglądarki. W drugiej mówimy do jakiego katalogu nastąpi kompilacja.
Pobranie źródeł za pomocą polecenia:
make -f client.mk checkout
jeszcze nam nie zadziała. Gdyż nie mamy
. $topsrcdir/browser/config/mozconfig
.
Pobieramy z CVS ten plik:
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r FIREFOX_3_0_8_RELEASE mozilla/browser/config/mozconfig
Teraz możemy pobrać źródła. Jest tego jakieś 225 MB.
Przechodzimy do etapu
Build and Install. Budujemy źródła:
make -f client.mk build
To co nam wyjdzie będzie po angielsku i wcale nie będzie się nazywało Firefox. Czemu i jak temu zaradzić dalej. Aby przerwać budowanie naciśnij CTRL+BREAK.
I czekamy... Wchodzimy do katalogu
ff-opt
i robimy instalkę:
make installer
Instalkę znajdziemy w katalogu
ff-opt\dist\install\sea
.
Wygląda na to, że wszystko się udało, tyle tylko, że nasza przeglądarka nazywa się
Minefield, i jest w wersji angielskiej. Nie ma też oryginalnych ikon.
Aby uzyskać coś co wygląda jak Firefox, dodajemy do
.mozconfig
:
export MOZILLA_OFFICIAL=1
export BUILD_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
ac_add_options --enable-official-branding
Powinniśmy pamiętać, że takiej wersji oznaczonej jako Firefox nie powinniśmy rozpowszechniać. Tutaj jest dość ciekawa dyskusja na ten temat:
Komercjalizacja Mozilli.
Przed każdym przebudowaniem źródeł warto wyczyścić zawartość poprzedniego budowania - kasując katalog
MOZ_OBJDIR
. Można też:
make -f client.mk clean
Ale nie polecam, strasznie długo to trwa.
Pozostało nam sprawa językowa. Z tym było najwięcej kombinowania. Dodajemy do
.mozconfig
:
mk_add_options MOZ_CO_LOCALES=pl
ac_add_options --enable-ui-locale=pl
mk_add_options LOCALES_CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/l10n
I ściągamy potrzebne pliki językowe:
make -f client.mk l10n-checkout
Czyścimy i ponawiamy budowanie. Gotowe.
Na końcu jeszcze podaje wygląd mojego pliku konfiguracyjnego:
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
ac_add_options --disable-tests
ac_add_options --enable-optimize
export MOZILLA_OFFICIAL=1
export BUILD_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
ac_add_options --enable-official-branding
mk_add_options MOZ_CO_LOCALES=pl
ac_add_options --enable-ui-locale=pl
mk_add_options LOCALES_CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/l10n
Tak wygląda konsola MSYS po uruchomieniu: