воскресенье, 27 марта 2016 г.

Сборка Mozilla Firefox (x64) из исходников под ОС Windows.

Сегодня мы с вами займемся таким интересным процессом, как сборка браузера Mozilla Firefox из исходников под Windows x64. Зачем это нужно делать? Ну если я скажу что таким образом вы сможете приобщиться к сообществу разработчиков Open Source и собрать собственный build браузера, то это прозвучит наверное смешно ;) На самом деле release'ные сборки Firefox'а содержат "компоненты", которые нужны далеко не всем, плюс как пишут на некоторых форумах собственноручно собранный build Firefox работает немного быстрее, к тому же можно "поиграть" с различными флагами оптимизации в компиляторе и т.д. и т.п. Как говорится, есть кастомные прошивки, почему бы и не быть кастомным браузерам? Несколько полезных ссылок, которыми я руководствовался при сборке:


Читаем, и делаем все по написанному. А именно, вначале устанавливаем MSVC, у меня уже была установленной Visual Studio 2013, поэтому этот шаг я пропустил. Далее нам могут понадобиться DirectX SDK и Windows SDK. Опять же, я ни то ни другое не качал, т.к. решил что какая-то часть DirectX SDK у меня была установлена вместе с MSVC, поэтому я пренебрег этим пунктом. Далее качаем MozillaBuild и устанавливаем его в папку по-умолчанию, т.е. в C:\mozilla-build .

Далее заходим в нее и запускаем файл start-shell-msvc2013-x64.bat (в моем случае, в вашем случае - возможно другой, если версия MSVC у вас другая, например 2015-я, кстати в последней версии набора MozillaBuild поддерживаются только эти два компилятора) и попадаем в консоль. Предварительно я создал папку "D:\Work\Mozilla Firefox\" , именно в ней у нас будет "копия исходников". После запуска start-shell-msvc2013-x64.bat у нас открывается консоль. Набираем в ней:

cd /d/work/Mozilla_Firefox для перехода в данную папку
hg clone https://hg.mozilla.org/mozilla-central для загрузки исходников (~4 Gb)

В результате, после того как исходники скачаются получаем следующее:


Теперь создаем в папке "D:\Work\Mozilla_Firefox\mozilla-central" файл конфига .mozconfig со следующим содержанием:

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff
ac_add_options --disable-gamepad
ac_add_options --target=x86_64-pc-mingw32
ac_add_options --host=x86_64-pc-mingw32

И запускаем сборку в консоли:

cd /d/work/Mozilla_Firefox/mozilla-central
./mach mercurial-setup здесь отвечаем на вопросы по настройке Mercurial
./mach clobber очищаем результаты предыдущей сборки
./mach build и запускаем сборку

Обратите внимание, путь к папке с исходниками не должен содержать пробелов. Т.е. изначально я создал папку D:\Work\Mozilla Firefox (это можно видеть на скрине), но перед сборкой переименовал ее в D:\Work\Mozilla_Firefox.

Результат успешной сборки:


Собранные файлы находятся в D:\Work\Mozilla_Firefox\mozilla-central\obj-ff\dist\bin\ ... чтобы запустить собранный Firefox можно набрать ./mach run в консоли, или запустить exe'шник firefox'а из папки bin. 

Как видно, все работает:


Обратите внимание, что т.к. мы брали исходники из mozilla-central у нас получилась Nightly сборка.

Ну и давайте попробуем подтвердить или опровергнуть миф о том, что "собственноручная сборка" браузера работает быстрее или медленнее официального релиза. Понятно, что в данном случае тестирование будет достаточно субъективным, т.к. нашу Nightly сборку мы будем сравнивать с релизной версией, в данном случае с Firefox 45.0.1 x64 отсюда. Для начала результаты теста на http://html5test.com/ :
  • Релизная сборка - 478 из 555 очков.
  • Наша Nightly сборка - 482 из 555 очков.
Следующий тест на котором мы будем проводить испытания - это Peacekeeper от Futuremark:
  • Релизная сборка - 4577 очков.
  • Наша Nightly сборка - 4167 очков.


Для тех интересны получившиеся у меня в результате бинарники - взять их можно здесь - Firefox_Nightly_48.0a1_(2016-03-27).7z . На всякий случай напомню, что это сборка только для x64 систем. Сборка с русской локализацией - Firefox_Nightly_48.0a1_(2016-03-27)_ru.7z, конфиг использовавшийся для сборки build'а с русской локалью:

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff
ac_add_options --disable-gamepad
ac_add_options --target=x86_64-pc-mingw32
ac_add_options --host=x86_64-pc-mingw32
mk_add_options MOZ_MAKE_FLAGS="-j4"
ac_add_options --enable-optimize="-O2" 
ac_add_options --disable-debug 
ac_add_options --disable-tests
mk_add_options MOZ_CO_LOCALES=ru
ac_add_options --enable-ui-locale=ru
ac_add_options --with-l10n-base=D:\\Work\\Mozilla_Firefox\\l10n-central\\

Полезные материалы по теме

Комментариев нет :

Отправить комментарий